108 lines
2.7 KiB
Plaintext
108 lines
2.7 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
// Modèle pour les parents
|
|
model Parent {
|
|
id String @id @default(uuid())
|
|
email String @unique
|
|
password String
|
|
firstName String
|
|
lastName String
|
|
phoneNumber String?
|
|
address String?
|
|
status AccountStatus @default(PENDING)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
children Child[]
|
|
contracts Contract[]
|
|
}
|
|
|
|
// Modèle pour les enfants
|
|
model Child {
|
|
id String @id @default(uuid())
|
|
firstName String
|
|
dateOfBirth DateTime
|
|
photoUrl String?
|
|
photoConsent Boolean @default(false)
|
|
isMultiple Boolean @default(false)
|
|
isUnborn Boolean @default(false)
|
|
parentId String
|
|
parent Parent @relation(fields: [parentId], references: [id])
|
|
contracts Contract[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modèle pour les contrats
|
|
model Contract {
|
|
id String @id @default(uuid())
|
|
parentId String
|
|
childId String
|
|
startDate DateTime
|
|
endDate DateTime?
|
|
status ContractStatus @default(ACTIVE)
|
|
parent Parent @relation(fields: [parentId], references: [id])
|
|
child Child @relation(fields: [childId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modèle pour les thèmes
|
|
model Theme {
|
|
id String @id @default(uuid())
|
|
name String @unique
|
|
primaryColor String
|
|
secondaryColor String
|
|
backgroundColor String
|
|
textColor String
|
|
isActive Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
appSettings AppSettings[]
|
|
}
|
|
|
|
// Modèle pour les paramètres de l'application
|
|
model AppSettings {
|
|
id String @id @default(uuid())
|
|
currentThemeId String
|
|
currentTheme Theme @relation(fields: [currentThemeId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([currentThemeId])
|
|
}
|
|
|
|
// Modèle pour les administrateurs
|
|
model Admin {
|
|
id String @id @default(uuid())
|
|
email String @unique
|
|
password String
|
|
firstName String
|
|
lastName String
|
|
passwordChanged Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Enums
|
|
enum AccountStatus {
|
|
PENDING
|
|
VALIDATED
|
|
REJECTED
|
|
SUSPENDED
|
|
}
|
|
|
|
enum ContractStatus {
|
|
ACTIVE
|
|
ENDED
|
|
CANCELLED
|
|
} |