schema.prisma 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // This is your Prisma schema file,
  2. // learn more about it in the docs: https://pris.ly/d/prisma-schema
  3. generator client {
  4. provider = "prisma-client-js"
  5. binaryTargets = ["native", "windows"]
  6. }
  7. datasource mysql {
  8. provider = "mysql"
  9. url = env("DATABASE_URL")
  10. }
  11. model Company {
  12. id Int @id @default(autoincrement())
  13. name String @unique
  14. address String
  15. vehicules Vehicule[] @relation("CompanyVehicules")
  16. drivers Driver[] @relation("CompanyDrivers")
  17. manager User @relation("CompanyManager", fields: [managerId], references: [id])
  18. managerId Int @unique
  19. }
  20. model Driver {
  21. id Int @id @default(autoincrement())
  22. name String @unique
  23. address String
  24. telephone String
  25. company Company? @relation("CompanyDrivers", fields: [companyId], references: [id])
  26. companyId Int?
  27. user User @relation("UserDriver", fields: [userId], references: [id])
  28. userId Int @unique
  29. vehicules Vehicule[] @relation("DriverVehicules")
  30. }
  31. model User {
  32. id Int @id @default(autoincrement())
  33. name String? // Rendu optionnel
  34. otherName String? // Rendu optionnel
  35. address String? // Rendu optionnel
  36. telephone String? // Rendu optionnel
  37. email String @unique // Reste obligatoire
  38. password String // Reste obligatoire
  39. reservations Reservation[] @relation("UserReservations")
  40. driver Driver? @relation("UserDriver")
  41. managedCompany Company? @relation("CompanyManager")
  42. }
  43. model Vehicule {
  44. id Int @id @default(autoincrement())
  45. number_places Int
  46. color String
  47. type String
  48. immatriculation String @unique
  49. model String
  50. company Company @relation("CompanyVehicules", fields: [companyId], references: [id])
  51. companyId Int
  52. driver Driver @relation("DriverVehicules", fields: [driverId], references: [id])
  53. driverId Int
  54. places Place[] @relation("VehiculePlaces")
  55. trajets Trajet[] @relation("VehiculeTrajets")
  56. }
  57. model Place {
  58. id Int @id @default(autoincrement())
  59. number Int
  60. vehicule Vehicule @relation("VehiculePlaces", fields: [vehiculeId], references: [id])
  61. vehiculeId Int
  62. reservations Reservation[] @relation("PlaceReservations")
  63. }
  64. model Trajet {
  65. id Int @id @default(autoincrement())
  66. departAt DateTime
  67. arriveAt DateTime
  68. depart String
  69. arrive String
  70. vehicule Vehicule @relation("VehiculeTrajets", fields: [vehiculeId], references: [id])
  71. vehiculeId Int
  72. reservations Reservation[] @relation("TrajetReservations")
  73. }
  74. model Reservation {
  75. id Int @id @default(autoincrement())
  76. dateAt DateTime
  77. place Place @relation("PlaceReservations", fields: [placeId], references: [id])
  78. placeId Int
  79. user User @relation("UserReservations", fields: [userId], references: [id])
  80. userId Int
  81. trajet Trajet @relation("TrajetReservations", fields: [trajetId], references: [id])
  82. trajetId Int
  83. }