// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = "file:/home/gio/dodo.db" // TODO(gio): make configurable
}

model Project {
  id Int @id @default(autoincrement())
  userId String
  name String
  state String?
  draft String?
  instanceId String?
  deployKey String?
  githubToken String?
  access String?
}