490 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			490 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
generator client {
 | 
						|
  provider      = "prisma-client-js"
 | 
						|
  binaryTargets = ["native", "linux-musl"]
 | 
						|
}
 | 
						|
 | 
						|
datasource db {
 | 
						|
  provider = "sqlite"
 | 
						|
  url      = env("COOLIFY_DATABASE_URL")
 | 
						|
}
 | 
						|
 | 
						|
model Setting {
 | 
						|
  id                    String   @id @default(cuid())
 | 
						|
  fqdn                  String?  @unique
 | 
						|
  ipv4                  String?
 | 
						|
  ipv6                  String?
 | 
						|
  arch                  String?
 | 
						|
  isRegistrationEnabled Boolean  @default(false)
 | 
						|
  dualCerts             Boolean  @default(false)
 | 
						|
  minPort               Int      @default(9000)
 | 
						|
  maxPort               Int      @default(9100)
 | 
						|
  proxyPassword         String
 | 
						|
  proxyUser             String
 | 
						|
  proxyHash             String?
 | 
						|
  isAutoUpdateEnabled   Boolean  @default(false)
 | 
						|
  isDNSCheckEnabled     Boolean  @default(true)
 | 
						|
  isTraefikUsed         Boolean  @default(true)
 | 
						|
  createdAt             DateTime @default(now())
 | 
						|
  updatedAt             DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model User {
 | 
						|
  id         String       @id @unique @default(cuid())
 | 
						|
  email      String       @unique
 | 
						|
  type       String
 | 
						|
  password   String?
 | 
						|
  teams      Team[]
 | 
						|
  permission Permission[]
 | 
						|
  createdAt  DateTime     @default(now())
 | 
						|
  updatedAt  DateTime     @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Permission {
 | 
						|
  id         String   @id @default(cuid())
 | 
						|
  user       User     @relation(fields: [userId], references: [id])
 | 
						|
  userId     String
 | 
						|
  team       Team     @relation(fields: [teamId], references: [id])
 | 
						|
  teamId     String
 | 
						|
  permission String
 | 
						|
  createdAt  DateTime @default(now())
 | 
						|
  updatedAt  DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Team {
 | 
						|
  id                String              @id @default(cuid())
 | 
						|
  users             User[]
 | 
						|
  name              String?
 | 
						|
  applications      Application[]
 | 
						|
  gitSources        GitSource[]
 | 
						|
  gitHubApps        GithubApp[]
 | 
						|
  gitLabApps        GitlabApp[]
 | 
						|
  destinationDocker DestinationDocker[]
 | 
						|
  permissions       Permission[]
 | 
						|
  createdAt         DateTime            @default(now())
 | 
						|
  updatedAt         DateTime            @updatedAt
 | 
						|
  database          Database[]          @relation(references: [id])
 | 
						|
  databaseId        String?
 | 
						|
  service           Service[]           @relation(references: [id])
 | 
						|
  serviceId         String?
 | 
						|
}
 | 
						|
 | 
						|
model TeamInvitation {
 | 
						|
  id         String   @id @default(cuid())
 | 
						|
  uid        String
 | 
						|
  email      String
 | 
						|
  teamId     String
 | 
						|
  teamName   String
 | 
						|
  permission String
 | 
						|
  createdAt  DateTime @default(now())
 | 
						|
}
 | 
						|
 | 
						|
model Application {
 | 
						|
  id                  String                         @id @default(cuid())
 | 
						|
  name                String
 | 
						|
  fqdn                String?                        @unique
 | 
						|
  repository          String?
 | 
						|
  configHash          String?
 | 
						|
  branch              String?
 | 
						|
  buildPack           String?
 | 
						|
  projectId           Int?
 | 
						|
  port                Int?
 | 
						|
  exposePort          Int?
 | 
						|
  installCommand      String?
 | 
						|
  buildCommand        String?
 | 
						|
  startCommand        String?
 | 
						|
  baseDirectory       String?
 | 
						|
  publishDirectory    String?
 | 
						|
  deploymentType      String?
 | 
						|
  phpModules          String?
 | 
						|
  pythonWSGI          String?
 | 
						|
  pythonModule        String?
 | 
						|
  pythonVariable      String?
 | 
						|
  dockerFileLocation  String?
 | 
						|
  denoMainFile        String?
 | 
						|
  denoOptions         String?
 | 
						|
  createdAt           DateTime                       @default(now())
 | 
						|
  updatedAt           DateTime                       @updatedAt
 | 
						|
  settings            ApplicationSettings?
 | 
						|
  teams               Team[]
 | 
						|
  destinationDockerId String?
 | 
						|
  destinationDocker   DestinationDocker?             @relation(fields: [destinationDockerId], references: [id])
 | 
						|
  gitSourceId         String?
 | 
						|
  gitSource           GitSource?                     @relation(fields: [gitSourceId], references: [id])
 | 
						|
  secrets             Secret[]
 | 
						|
  persistentStorage   ApplicationPersistentStorage[]
 | 
						|
  baseImage           String?
 | 
						|
  baseBuildImage      String?
 | 
						|
}
 | 
						|
 | 
						|
model ApplicationSettings {
 | 
						|
  id            String      @id @default(cuid())
 | 
						|
  application   Application @relation(fields: [applicationId], references: [id])
 | 
						|
  applicationId String      @unique
 | 
						|
  dualCerts     Boolean     @default(false)
 | 
						|
  debug         Boolean     @default(false)
 | 
						|
  previews      Boolean     @default(false)
 | 
						|
  autodeploy    Boolean     @default(true)
 | 
						|
  createdAt     DateTime    @default(now())
 | 
						|
  updatedAt     DateTime    @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model ApplicationPersistentStorage {
 | 
						|
  id            String      @id @default(cuid())
 | 
						|
  application   Application @relation(fields: [applicationId], references: [id])
 | 
						|
  applicationId String
 | 
						|
  path          String
 | 
						|
  createdAt     DateTime    @default(now())
 | 
						|
  updatedAt     DateTime    @updatedAt
 | 
						|
 | 
						|
  @@unique([applicationId, path])
 | 
						|
}
 | 
						|
 | 
						|
model ServicePersistentStorage {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  service   Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  serviceId String
 | 
						|
  path      String
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  @@unique([serviceId, path])
 | 
						|
}
 | 
						|
 | 
						|
model Secret {
 | 
						|
  id            String      @id @default(cuid())
 | 
						|
  name          String
 | 
						|
  value         String
 | 
						|
  isPRMRSecret  Boolean     @default(false)
 | 
						|
  isBuildSecret Boolean     @default(false)
 | 
						|
  createdAt     DateTime    @default(now())
 | 
						|
  updatedAt     DateTime    @updatedAt
 | 
						|
  application   Application @relation(fields: [applicationId], references: [id])
 | 
						|
  applicationId String
 | 
						|
 | 
						|
  @@unique([name, applicationId, isPRMRSecret])
 | 
						|
}
 | 
						|
 | 
						|
model ServiceSecret {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  name      String
 | 
						|
  value     String
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  service   Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  serviceId String
 | 
						|
 | 
						|
  @@unique([name, serviceId])
 | 
						|
}
 | 
						|
 | 
						|
model BuildLog {
 | 
						|
  id            String  @id @default(cuid())
 | 
						|
  applicationId String?
 | 
						|
  buildId       String
 | 
						|
  line          String
 | 
						|
  time          Int
 | 
						|
}
 | 
						|
 | 
						|
model Build {
 | 
						|
  id                  String   @id @default(cuid())
 | 
						|
  type                String
 | 
						|
  applicationId       String?
 | 
						|
  destinationDockerId String?
 | 
						|
  gitSourceId         String?
 | 
						|
  githubAppId         String?
 | 
						|
  gitlabAppId         String?
 | 
						|
  commit              String?
 | 
						|
  branch              String?
 | 
						|
  status              String?  @default("queued")
 | 
						|
  createdAt           DateTime @default(now())
 | 
						|
  updatedAt           DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model DestinationDocker {
 | 
						|
  id                 String        @id @default(cuid())
 | 
						|
  network            String        @unique
 | 
						|
  name               String
 | 
						|
  engine             String?
 | 
						|
  remoteEngine       Boolean       @default(false)
 | 
						|
  remoteIpAddress    String?
 | 
						|
  remoteUser         String?
 | 
						|
  remotePort         Int?
 | 
						|
  remoteVerified     Boolean       @default(false)
 | 
						|
  isCoolifyProxyUsed Boolean?      @default(false)
 | 
						|
  teams              Team[]
 | 
						|
  application        Application[]
 | 
						|
  createdAt          DateTime      @default(now())
 | 
						|
  updatedAt          DateTime      @updatedAt
 | 
						|
  database           Database[]
 | 
						|
  service            Service[]
 | 
						|
  sshKey             SshKey?       @relation(fields: [sshKeyId], references: [id])
 | 
						|
  sshKeyId           String?
 | 
						|
}
 | 
						|
 | 
						|
model SshKey {
 | 
						|
  id                String              @id @default(cuid())
 | 
						|
  name              String
 | 
						|
  privateKey        String
 | 
						|
  createdAt         DateTime            @default(now())
 | 
						|
  updatedAt         DateTime            @updatedAt
 | 
						|
  destinationDocker DestinationDocker[]
 | 
						|
}
 | 
						|
 | 
						|
model GitSource {
 | 
						|
  id           String        @id @default(cuid())
 | 
						|
  name         String
 | 
						|
  teams        Team[]
 | 
						|
  type         String?
 | 
						|
  apiUrl       String?
 | 
						|
  htmlUrl      String?
 | 
						|
  customPort   Int           @default(22)
 | 
						|
  organization String?
 | 
						|
  createdAt    DateTime      @default(now())
 | 
						|
  updatedAt    DateTime      @updatedAt
 | 
						|
  githubAppId  String?       @unique
 | 
						|
  githubApp    GithubApp?    @relation(fields: [githubAppId], references: [id])
 | 
						|
  application  Application[]
 | 
						|
  gitlabAppId  String?       @unique
 | 
						|
  gitlabApp    GitlabApp?    @relation(fields: [gitlabAppId], references: [id])
 | 
						|
}
 | 
						|
 | 
						|
model GithubApp {
 | 
						|
  id             String     @id @default(cuid())
 | 
						|
  name           String?    @unique
 | 
						|
  teams          Team[]
 | 
						|
  appId          Int?
 | 
						|
  installationId Int?
 | 
						|
  clientId       String?
 | 
						|
  clientSecret   String?
 | 
						|
  webhookSecret  String?
 | 
						|
  privateKey     String?
 | 
						|
  createdAt      DateTime   @default(now())
 | 
						|
  updatedAt      DateTime   @updatedAt
 | 
						|
  gitSource      GitSource?
 | 
						|
}
 | 
						|
 | 
						|
model GitlabApp {
 | 
						|
  id            String     @id @default(cuid())
 | 
						|
  oauthId       Int        @unique
 | 
						|
  groupName     String?    @unique
 | 
						|
  teams         Team[]
 | 
						|
  deployKeyId   Int?
 | 
						|
  privateSshKey String?
 | 
						|
  publicSshKey  String?
 | 
						|
  webhookToken  String?
 | 
						|
  appId         String?
 | 
						|
  appSecret     String?
 | 
						|
  createdAt     DateTime   @default(now())
 | 
						|
  updatedAt     DateTime   @updatedAt
 | 
						|
  gitSource     GitSource?
 | 
						|
}
 | 
						|
 | 
						|
model Database {
 | 
						|
  id                  String             @id @default(cuid())
 | 
						|
  name                String
 | 
						|
  publicPort          Int?
 | 
						|
  defaultDatabase     String?
 | 
						|
  type                String?
 | 
						|
  version             String?
 | 
						|
  dbUser              String?
 | 
						|
  dbUserPassword      String?
 | 
						|
  rootUser            String?
 | 
						|
  rootUserPassword    String?
 | 
						|
  settings            DatabaseSettings?
 | 
						|
  destinationDocker   DestinationDocker? @relation(fields: [destinationDockerId], references: [id])
 | 
						|
  destinationDockerId String?
 | 
						|
  teams               Team[]
 | 
						|
  createdAt           DateTime           @default(now())
 | 
						|
  updatedAt           DateTime           @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model DatabaseSettings {
 | 
						|
  id         String   @id @default(cuid())
 | 
						|
  database   Database @relation(fields: [databaseId], references: [id])
 | 
						|
  databaseId String   @unique
 | 
						|
  isPublic   Boolean  @default(false)
 | 
						|
  appendOnly Boolean  @default(true)
 | 
						|
  createdAt  DateTime @default(now())
 | 
						|
  updatedAt  DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Service {
 | 
						|
  id                  String                     @id @default(cuid())
 | 
						|
  name                String
 | 
						|
  fqdn                String?
 | 
						|
  exposePort          Int?
 | 
						|
  dualCerts           Boolean                    @default(false)
 | 
						|
  type                String?
 | 
						|
  version             String?
 | 
						|
  teams               Team[]
 | 
						|
  destinationDockerId String?
 | 
						|
  destinationDocker   DestinationDocker?         @relation(fields: [destinationDockerId], references: [id])
 | 
						|
  createdAt           DateTime                   @default(now())
 | 
						|
  updatedAt           DateTime                   @updatedAt
 | 
						|
  plausibleAnalytics  PlausibleAnalytics?
 | 
						|
  minio               Minio?
 | 
						|
  vscodeserver        Vscodeserver?
 | 
						|
  wordpress           Wordpress?
 | 
						|
  ghost               Ghost?
 | 
						|
  serviceSecret       ServiceSecret[]
 | 
						|
  meiliSearch         MeiliSearch?
 | 
						|
  persistentStorage   ServicePersistentStorage[]
 | 
						|
  umami               Umami?
 | 
						|
  hasura              Hasura?
 | 
						|
  fider               Fider?
 | 
						|
  moodle              Moodle?
 | 
						|
}
 | 
						|
 | 
						|
model PlausibleAnalytics {
 | 
						|
  id                   String   @id @default(cuid())
 | 
						|
  email                String?
 | 
						|
  username             String?
 | 
						|
  password             String
 | 
						|
  postgresqlUser       String
 | 
						|
  postgresqlPassword   String
 | 
						|
  postgresqlDatabase   String
 | 
						|
  postgresqlPublicPort Int?
 | 
						|
  secretKeyBase        String?
 | 
						|
  scriptName           String   @default("plausible.js")
 | 
						|
  serviceId            String   @unique
 | 
						|
  service              Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt            DateTime @default(now())
 | 
						|
  updatedAt            DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Minio {
 | 
						|
  id               String   @id @default(cuid())
 | 
						|
  rootUser         String
 | 
						|
  rootUserPassword String
 | 
						|
  publicPort       Int?
 | 
						|
  apiFqdn          String?
 | 
						|
  serviceId        String   @unique
 | 
						|
  service          Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt        DateTime @default(now())
 | 
						|
  updatedAt        DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Vscodeserver {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  password  String
 | 
						|
  serviceId String   @unique
 | 
						|
  service   Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Wordpress {
 | 
						|
  id                    String   @id @default(cuid())
 | 
						|
  extraConfig           String?
 | 
						|
  tablePrefix           String?
 | 
						|
  ownMysql              Boolean  @default(false)
 | 
						|
  mysqlHost             String?
 | 
						|
  mysqlPort             Int?
 | 
						|
  mysqlUser             String
 | 
						|
  mysqlPassword         String
 | 
						|
  mysqlRootUser         String
 | 
						|
  mysqlRootUserPassword String
 | 
						|
  mysqlDatabase         String?
 | 
						|
  mysqlPublicPort       Int?
 | 
						|
  ftpEnabled            Boolean  @default(false)
 | 
						|
  ftpUser               String?
 | 
						|
  ftpPassword           String?
 | 
						|
  ftpPublicPort         Int?
 | 
						|
  ftpHostKey            String?
 | 
						|
  ftpHostKeyPrivate     String?
 | 
						|
  serviceId             String   @unique
 | 
						|
  service               Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt             DateTime @default(now())
 | 
						|
  updatedAt             DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Ghost {
 | 
						|
  id                      String   @id @default(cuid())
 | 
						|
  defaultEmail            String
 | 
						|
  defaultPassword         String
 | 
						|
  mariadbUser             String
 | 
						|
  mariadbPassword         String
 | 
						|
  mariadbRootUser         String
 | 
						|
  mariadbRootUserPassword String
 | 
						|
  mariadbDatabase         String?
 | 
						|
  mariadbPublicPort       Int?
 | 
						|
  serviceId               String   @unique
 | 
						|
  service                 Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt               DateTime @default(now())
 | 
						|
  updatedAt               DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model MeiliSearch {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  masterKey String
 | 
						|
  serviceId String   @unique
 | 
						|
  service   Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Umami {
 | 
						|
  id                   String   @id @default(cuid())
 | 
						|
  serviceId            String   @unique
 | 
						|
  postgresqlUser       String
 | 
						|
  postgresqlPassword   String
 | 
						|
  postgresqlDatabase   String
 | 
						|
  postgresqlPublicPort Int?
 | 
						|
  umamiAdminPassword   String
 | 
						|
  hashSalt             String
 | 
						|
  service              Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt            DateTime @default(now())
 | 
						|
  updatedAt            DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Hasura {
 | 
						|
  id                   String   @id @default(cuid())
 | 
						|
  serviceId            String   @unique
 | 
						|
  postgresqlUser       String
 | 
						|
  postgresqlPassword   String
 | 
						|
  postgresqlDatabase   String
 | 
						|
  postgresqlPublicPort Int?
 | 
						|
  graphQLAdminPassword String
 | 
						|
  service              Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt            DateTime @default(now())
 | 
						|
  updatedAt            DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Fider {
 | 
						|
  id                      String   @id @default(cuid())
 | 
						|
  serviceId               String   @unique
 | 
						|
  postgresqlUser          String
 | 
						|
  postgresqlPassword      String
 | 
						|
  postgresqlDatabase      String
 | 
						|
  postgresqlPublicPort    Int?
 | 
						|
  jwtSecret               String
 | 
						|
  emailNoreply            String?
 | 
						|
  emailMailgunApiKey      String?
 | 
						|
  emailMailgunDomain      String?
 | 
						|
  emailMailgunRegion      String   @default("EU")
 | 
						|
  emailSmtpHost           String?
 | 
						|
  emailSmtpPort           Int?
 | 
						|
  emailSmtpUser           String?
 | 
						|
  emailSmtpPassword       String?
 | 
						|
  emailSmtpEnableStartTls Boolean  @default(false)
 | 
						|
  service                 Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt               DateTime @default(now())
 | 
						|
  updatedAt               DateTime @updatedAt
 | 
						|
}
 | 
						|
 | 
						|
model Moodle {
 | 
						|
  id                      String   @id @default(cuid())
 | 
						|
  serviceId               String   @unique
 | 
						|
  defaultUsername         String
 | 
						|
  defaultPassword         String
 | 
						|
  defaultEmail            String
 | 
						|
  mariadbUser             String
 | 
						|
  mariadbPassword         String
 | 
						|
  mariadbRootUser         String
 | 
						|
  mariadbRootUserPassword String
 | 
						|
  mariadbDatabase         String
 | 
						|
  mariadbPublicPort       Int?
 | 
						|
  service                 Service  @relation(fields: [serviceId], references: [id])
 | 
						|
  createdAt               DateTime @default(now())
 | 
						|
  updatedAt               DateTime @updatedAt
 | 
						|
}
 |