// 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" binaryTargets = ["native", "linux-musl-openssl-3.0.x", "debian-openssl-3.0.x"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Account { id String @id @default(cuid()) userId String @map("user_id") type String provider String providerAccountId String @map("provider_account_id") refresh_token String? @db.Text access_token String? @db.Text expires_at Int? token_type String? scope String? id_token String? @db.Text session_state String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) @@map("accounts") } model Session { id String @id @default(cuid()) sessionToken String @unique @map("session_token") userId String @map("user_id") expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@map("sessions") } model VerificationToken { identifier String token String expires DateTime @@unique([identifier, token]) @@map("verificationtokens") } model User { id String @id @default(cuid()) name String? email String? @unique emailVerified DateTime? @map("email_verified") image String? role Role password String? authMethod String? @map("auth_method") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime? @updatedAt @map("updated_at") deleted Boolean? @default(false) accounts Account[] sessions Session[] @@map("users") } enum Role { pending user admin } model Organization { id String @id @default(cuid()) slug String @unique name String createdAt DateTime @default(now()) @map("created_at") projects Project[] @@map("organizations") } model Project { id String @id @default(cuid()) slug String @unique name String createdAt DateTime @default(now()) @map("created_at") organizationId String @map("organization_id") organization Organization @relation(fields: [organizationId], references: [id]) databases Database[] @@map("projects") } model Agent { id String @id @default(cuid()) slug String @unique name String description String? lastContact DateTime? @map("last_contact") createdAt DateTime @default(now()) @map("created_at") databases Database[] @@map("agents") } enum Dbms { postgresql mysql mongodb } model Database { id String @id @default(cuid()) name String dbms Dbms generatedId String @unique description String? backupPolicy String? @map("backup_policy") createdAt DateTime @default(now()) @map("created_at") isWaitingForBackup Boolean? @default(false) backupToRestore String? agentId String @map("agent_id") agent Agent @relation(fields: [agentId], references: [id], onDelete: Cascade) lastContact DateTime? @map("last_contact") backups Backup[] restaurations Restauration[] projectId String? @map("project_id") project Project? @relation(fields: [projectId], references: [id]) @@map("databases") } enum Status { waiting ongoing failed success } model Backup { id String @id @default(cuid()) status Status @default(waiting) file String? createdAt DateTime @default(now()) @map("created_at") databaseId String @map("database_id") database Database @relation(fields: [databaseId], references: [id], onDelete: Cascade) restaurations Restauration[] @@map("backups") } model Restauration { id String @id @default(cuid()) status Status @default(waiting) createdAt DateTime @default(now()) @map("created_at") backupId String @map("backup_id") backup Backup @relation(fields: [backupId], references: [id], onDelete: Cascade) databaseId String? @map("database_id") database Database? @relation(fields: [databaseId], references: [id], onDelete: Cascade) @@map("restaurations") } enum TypeStorage { local s3 } model Settings { id String @id @default(cuid()) storage TypeStorage @default(local) name String @unique s3EndPointUrl String? s3AccessKeyId String? s3SecretAccessKey String? S3BucketName String? smtpPassword String? smtpFrom String? smtpHost String? smtpPort String? smtpUser String? @@map("settings") }