feat(db): add Anomalie, Notification and Historique tracking models

This commit is contained in:
SaidSoighiri94
2026-06-15 09:59:22 +02:00
parent 6908a2bf6e
commit 0fc9f9ed1c
3 changed files with 204 additions and 32 deletions
+95 -23
View File
@@ -19,6 +19,7 @@ model Campus {
sallesPret SallePret[]
materiels Materiel[]
emprunts Emprunt[]
historiques Historique[]
@@map("campus")
}
@@ -34,22 +35,26 @@ model Role {
}
model Utilisateur {
id Int @id @default(autoincrement())
microsoftId String @unique @map("microsoft_id")
nom String
prenom String
email String @unique
classe String?
roleId Int @map("role_id")
campusId Int @map("campus_id")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
campus Campus @relation(fields: [campusId], references: [id])
role Role @relation(fields: [roleId], references: [id])
cartes CarteEtudiante[]
emprunts Emprunt[]
checklists Checklist[]
id Int @id @default(autoincrement())
microsoftId String @unique @map("microsoft_id")
nom String
prenom String
email String @unique
classe String?
roleId Int @map("role_id")
campusId Int @map("campus_id")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
campus Campus @relation(fields: [campusId], references: [id])
role Role @relation(fields: [roleId], references: [id])
cartes CarteEtudiante[]
emprunts Emprunt[]
checklists Checklist[]
anomaliesConcernees Anomalie[] @relation("AnomalieEtudiant")
anomaliesTraitees Anomalie[] @relation("AnomalieResponsable")
notifications Notification[]
historiques Historique[]
@@map("utilisateur")
}
@@ -77,20 +82,22 @@ model SallePret {
campus Campus @relation(fields: [campusId], references: [id])
postes PosteEmprunt[]
emprunts Emprunt[]
historiques Historique[]
@@map("salle_pret")
}
model PosteEmprunt {
id Int @id @default(autoincrement())
id Int @id @default(autoincrement())
nom String
identifiantPoste String @map("identifiant_poste")
sallePretId Int @map("salle_pret_id")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
sallePret SallePret @relation(fields: [sallePretId], references: [id])
identifiantPoste String @map("identifiant_poste")
sallePretId Int @map("salle_pret_id")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
sallePret SallePret @relation(fields: [sallePretId], references: [id])
emprunts Emprunt[]
historiques Historique[]
@@map("poste_emprunt")
}
@@ -128,6 +135,8 @@ model Materiel {
campus Campus @relation(fields: [campusId], references: [id])
accessoires MaterielAccessoire[]
emprunts Emprunt[]
anomalies Anomalie[]
historiques Historique[]
@@map("materiel")
}
@@ -180,6 +189,8 @@ model Emprunt {
sallePret SallePret @relation(fields: [sallePretId], references: [id], onDelete: NoAction, onUpdate: NoAction)
posteEmprunt PosteEmprunt @relation(fields: [posteEmpruntId], references: [id], onDelete: NoAction, onUpdate: NoAction)
checklists Checklist[]
anomalies Anomalie[]
historiques Historique[]
@@map("emprunt")
}
@@ -215,3 +226,64 @@ model ChecklistElement {
@@map("checklist_element")
}
model Anomalie {
id Int @id @default(autoincrement())
empruntId Int @map("emprunt_id")
materielId Int @map("materiel_id")
utilisateurId Int @map("utilisateur_id")
traiteeParId Int? @map("traitee_par_id")
type String
description String
statut String
detecteeAutomatiquement Boolean @default(true) @map("detectee_automatiquement")
observation String?
dateDetection DateTime @map("date_detection")
dateResolution DateTime? @map("date_resolution")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
emprunt Emprunt @relation(fields: [empruntId], references: [id], onDelete: NoAction, onUpdate: NoAction)
materiel Materiel @relation(fields: [materielId], references: [id], onDelete: NoAction, onUpdate: NoAction)
etudiant Utilisateur @relation("AnomalieEtudiant", fields: [utilisateurId], references: [id], onDelete: NoAction, onUpdate: NoAction)
traitePar Utilisateur? @relation("AnomalieResponsable", fields: [traiteeParId], references: [id], onDelete: NoAction, onUpdate: NoAction)
notifications Notification[]
@@map("anomalie")
}
model Notification {
id Int @id @default(autoincrement())
utilisateurId Int @map("utilisateur_id")
anomalieId Int? @map("anomalie_id")
titre String
message String
type String
lu Boolean @default(false)
dateCreation DateTime @default(now()) @map("date_creation")
utilisateur Utilisateur @relation(fields: [utilisateurId], references: [id], onDelete: NoAction, onUpdate: NoAction)
anomalie Anomalie? @relation(fields: [anomalieId], references: [id], onDelete: NoAction, onUpdate: NoAction)
@@map("notification")
}
model Historique {
id Int @id @default(autoincrement())
utilisateurId Int @map("utilisateur_id")
empruntId Int? @map("emprunt_id")
materielId Int? @map("materiel_id")
campusId Int? @map("campus_id")
sallePretId Int? @map("salle_pret_id")
posteEmpruntId Int? @map("poste_emprunt_id")
action String
description String
dateAction DateTime @map("date_action")
createdAt DateTime @default(now()) @map("created_at")
utilisateur Utilisateur @relation(fields: [utilisateurId], references: [id], onDelete: NoAction, onUpdate: NoAction)
emprunt Emprunt? @relation(fields: [empruntId], references: [id], onDelete: NoAction, onUpdate: NoAction)
materiel Materiel? @relation(fields: [materielId], references: [id], onDelete: NoAction, onUpdate: NoAction)
campus Campus? @relation(fields: [campusId], references: [id], onDelete: NoAction, onUpdate: NoAction)
sallePret SallePret? @relation(fields: [sallePretId], references: [id], onDelete: NoAction, onUpdate: NoAction)
posteEmprunt PosteEmprunt? @relation(fields: [posteEmpruntId], references: [id], onDelete: NoAction, onUpdate: NoAction)
@@map("historique")
}