Files

290 lines
12 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlserver"
}
model Campus {
id Int @id @default(autoincrement())
nom String
adresse String
ville String
codePostal String @map("code_postal")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
utilisateurs Utilisateur[]
sallesPret SallePret[]
materiels Materiel[]
emprunts Emprunt[]
historiques Historique[]
@@map("campus")
}
model Role {
id Int @id @default(autoincrement())
code String @unique
libelle String
description String
utilisateurs Utilisateur[]
@@map("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[]
anomaliesConcernees Anomalie[] @relation("AnomalieEtudiant")
anomaliesTraitees Anomalie[] @relation("AnomalieResponsable")
notifications Notification[]
historiques Historique[]
@@map("utilisateur")
}
model CategorieMateriel {
id Int @id @default(autoincrement())
nom String
description String
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
materiels Materiel[]
@@map("categorie_materiel")
}
model SallePret {
id Int @id @default(autoincrement())
nom String
localisation String
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])
postes PosteEmprunt[]
emprunts Emprunt[]
historiques Historique[]
@@map("salle_pret")
}
model PosteEmprunt {
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])
emprunts Emprunt[]
historiques Historique[]
@@map("poste_emprunt")
}
model CarteEtudiante {
id Int @id @default(autoincrement())
utilisateurId Int @map("utilisateur_id")
qrCode String @map("qr_code")
dateActivation DateTime @map("date_activation")
dateExpiration DateTime @map("date_expiration")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
utilisateur Utilisateur @relation(fields: [utilisateurId], references: [id])
@@map("carte_etudiante")
}
model Materiel {
id Int @id @default(autoincrement())
nom String
marque String
modele String
reference String
numeroInventaire String @map("numero_inventaire")
numeroSerie String @map("numero_serie")
statut String
etatGeneral String @map("etat_general")
categorieId Int @map("categorie_id")
campusId Int @map("campus_id")
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
categorie CategorieMateriel @relation(fields: [categorieId], references: [id])
campus Campus @relation(fields: [campusId], references: [id])
accessoires MaterielAccessoire[]
emprunts Emprunt[]
anomalies Anomalie[]
historiques Historique[]
@@map("materiel")
}
model Accessoire {
id Int @id @default(autoincrement())
nom String
description String
actif Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
materiels MaterielAccessoire[]
checklistElements ChecklistElement[]
@@map("accessoire")
}
model MaterielAccessoire {
id Int @id @default(autoincrement())
materielId Int @map("materiel_id")
accessoireId Int @map("accessoire_id")
quantiteAttendue Int @map("quantite_attendue")
obligatoire Boolean
materiel Materiel @relation(fields: [materielId], references: [id])
accessoire Accessoire @relation(fields: [accessoireId], references: [id])
@@map("materiel_accessoire")
}
model Emprunt {
id Int @id @default(autoincrement())
utilisateurId Int @map("utilisateur_id")
materielId Int @map("materiel_id")
campusId Int @map("campus_id")
sallePretId Int @map("salle_pret_id")
posteEmpruntId Int @map("poste_emprunt_id")
dateEmprunt DateTime @map("date_emprunt")
dateRetourPrevue DateTime @map("date_retour_prevue")
dateRetourReelle DateTime? @map("date_retour_reelle")
statut String
modeIdentificationEmprunt String @map("mode_identification_emprunt")
modeIdentificationRetour String? @map("mode_identification_retour")
commentaireDepart String? @map("commentaire_depart")
commentaireRetour String? @map("commentaire_retour")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
utilisateur Utilisateur @relation(fields: [utilisateurId], 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)
checklists Checklist[]
anomalies Anomalie[]
historiques Historique[]
@@map("emprunt")
}
model Checklist {
id Int @id @default(autoincrement())
empruntId Int @map("emprunt_id")
utilisateurId Int @map("utilisateur_id")
type String
dateVerification DateTime @map("date_verification")
commentaire String?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
emprunt Emprunt @relation(fields: [empruntId], references: [id], onDelete: NoAction, onUpdate: NoAction)
utilisateur Utilisateur @relation(fields: [utilisateurId], references: [id], onDelete: NoAction, onUpdate: NoAction)
elements ChecklistElement[]
@@map("checklist")
}
model ChecklistElement {
id Int @id @default(autoincrement())
checklistId Int @map("checklist_id")
accessoireId Int? @map("accessoire_id")
nomElement String @map("nom_element")
etat String
quantiteConstatee Int @map("quantite_constatee")
commentaire String?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
checklist Checklist @relation(fields: [checklistId], references: [id], onDelete: NoAction, onUpdate: NoAction)
accessoire Accessoire? @relation(fields: [accessoireId], references: [id], onDelete: NoAction, onUpdate: NoAction)
@@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")
}