schema.prisma 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. }
  6. datasource db {
  7. provider = "mysql"
  8. url = env("DATABASE_URL")
  9. }
  10. model Company {
  11. id Int @id @default(autoincrement())
  12. name String @unique
  13. address String
  14. vehicles Vehicule[] @relation("CompanyVehicules")
  15. drivers Driver[] @relation("CompanyDrivers")
  16. manager User @relation("CompanyManager", fields: [managerId], references: [id])
  17. managerId Int @unique
  18. }
  19. model Driver {
  20. id Int @id @default(autoincrement())
  21. name String @unique
  22. address String
  23. telephone String
  24. company Company? @relation("CompanyDrivers", fields: [companyId], references: [id])
  25. companyId Int?
  26. user User @relation("UserDriver", fields: [userId], references: [id])
  27. userId Int @unique
  28. vehicles Vehicule[] @relation("DriverVehicules")
  29. }
  30. model User {
  31. id Int @id @default(autoincrement())
  32. name String
  33. otherName String
  34. address String
  35. telephone String
  36. email String
  37. password String
  38. reservations Reservation[] @relation("UserReservations")
  39. driver Driver? @relation("UserDriver")
  40. managedCompany Company? @relation("CompanyManager")
  41. }
  42. model Vehicule {
  43. id Int @id @default(autoincrement())
  44. number_places Int
  45. color String
  46. type String
  47. immatriculation String @unique
  48. model String
  49. company Company @relation("CompanyVehicules", fields: [companyId], references: [id])
  50. companyId Int
  51. driver Driver @relation("DriverVehicules", fields: [driverId], references: [id])
  52. driverId Int
  53. places Place[] @relation("VehiculePlaces")
  54. trajets Trajet[] @relation("VehiculeTrajets")
  55. }
  56. model Place {
  57. id Int @id @default(autoincrement())
  58. number Int
  59. vehicule Vehicule @relation("VehiculePlaces", fields: [vehiculeId], references: [id])
  60. vehiculeId Int
  61. reservations Reservation[] @relation("PlaceReservations")
  62. }
  63. model Trajet {
  64. id Int @id @default(autoincrement())
  65. departAt DateTime
  66. arriveAt DateTime
  67. depart String
  68. arrive String
  69. vehicule Vehicule @relation("VehiculeTrajets", fields: [vehiculeId], references: [id])
  70. vehiculeId Int
  71. reservations Reservation[] @relation("TrajetReservations")
  72. }
  73. model Reservation {
  74. id Int @id @default(autoincrement())
  75. dateAt DateTime
  76. place Place @relation("PlaceReservations", fields: [placeId], references: [id])
  77. placeId Int
  78. user User @relation("UserReservations", fields: [userId], references: [id])
  79. userId Int
  80. trajet Trajet @relation("TrajetReservations", fields: [trajetId], references: [id])
  81. trajetId Int
  82. }