schema.prisma 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // This is your Prisma schema file,
  2. // learn more about it in the docs: https://pris.ly/d/prisma-schema
  3. // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
  4. // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
  5. generator client {
  6. provider = "prisma-client-js"
  7. }
  8. datasource db {
  9. provider = "postgresql"
  10. url = env("DATABASE_URL")
  11. }
  12. enum ProgressStatus {
  13. cari_data
  14. dihubungi
  15. negosiasi
  16. follow_up
  17. mou
  18. onboarded
  19. tidak_berminat
  20. }
  21. model RevokedToken {
  22. id String @id @default(uuid())
  23. token String
  24. revoked_at DateTime @default(now())
  25. @@map("revoked_tokens")
  26. }
  27. model ActivityLog {
  28. id String @id @default(uuid())
  29. user_id String
  30. username String
  31. action String
  32. createdAt DateTime @default(now())
  33. updatedAt DateTime @updatedAt
  34. deletedAt DateTime?
  35. @@map("activity_logs")
  36. }
  37. model User {
  38. id String @id @default(uuid())
  39. username String
  40. email String
  41. password String
  42. firstname String
  43. lastname String
  44. role String
  45. createdAt DateTime @default(now())
  46. updatedAt DateTime @updatedAt
  47. deletedAt DateTime?
  48. @@map("users")
  49. }
  50. model UserKeycloak {
  51. id String @id @default(uuid())
  52. fullname String
  53. phone String?
  54. role String?
  55. Hospital Hospital[]
  56. UserArea UserArea[]
  57. Vendor Vendor[]
  58. StatusHistory StatusHistory[]
  59. VendorExperience VendorExperience[]
  60. CreatedVisitations ScheduleVisitation[] @relation("CreatedVisitations")
  61. SalesVisitations ScheduleVisitation[] @relation("SalesVisitations")
  62. @@map("keycloak_users")
  63. }
  64. model Province {
  65. id String @id @default(uuid())
  66. name String
  67. cities City[]
  68. hospitals Hospital[]
  69. user_areas UserArea[]
  70. createdAt DateTime @default(now())
  71. updatedAt DateTime @updatedAt
  72. deletedAt DateTime?
  73. @@map("provinces")
  74. }
  75. model City {
  76. id String @id @default(uuid())
  77. name String
  78. province_id String
  79. province Province @relation(fields: [province_id], references: [id])
  80. hospitals Hospital[]
  81. createdAt DateTime @default(now())
  82. updatedAt DateTime @updatedAt
  83. deletedAt DateTime?
  84. @@unique([name, province_id], name: "name_province_id")
  85. @@map("cities")
  86. }
  87. model Hospital {
  88. id String @id @default(uuid())
  89. name String
  90. hospital_code String?
  91. type String?
  92. ownership String?
  93. province_id String
  94. city_id String
  95. address String?
  96. // simrs_type String?
  97. contact String?
  98. image String?
  99. email String?
  100. progress_status ProgressStatus
  101. note String?
  102. created_by String
  103. latitude Float?
  104. longitude Float?
  105. gmaps_url String? @db.Text
  106. createdAt DateTime @default(now())
  107. updatedAt DateTime @updatedAt
  108. deletedAt DateTime?
  109. province Province @relation(fields: [province_id], references: [id])
  110. city City @relation(fields: [city_id], references: [id])
  111. user UserKeycloak @relation(fields: [created_by], references: [id])
  112. vendor_experiences VendorExperience[]
  113. executives_histories ExecutivesHistory[]
  114. status_histories StatusHistory[]
  115. ScheduleVisitation ScheduleVisitation[]
  116. @@map("hospitals")
  117. }
  118. model Vendor {
  119. id String @id @default(uuid())
  120. name String
  121. name_pt String?
  122. strengths String?
  123. weaknesses String?
  124. website String?
  125. created_by String
  126. createdAt DateTime @default(now())
  127. updatedAt DateTime @updatedAt
  128. deletedAt DateTime?
  129. user UserKeycloak @relation(fields: [created_by], references: [id])
  130. vendor_experiences VendorExperience[]
  131. @@map("vendors")
  132. }
  133. model UserArea {
  134. id String @id @default(uuid())
  135. user_id String
  136. province_id String
  137. province Province @relation(fields: [province_id], references: [id])
  138. user UserKeycloak @relation(fields: [user_id], references: [id])
  139. createdAt DateTime @default(now())
  140. updatedAt DateTime @updatedAt
  141. deletedAt DateTime?
  142. @@map("user_areas")
  143. }
  144. // model VendorHistory {
  145. // id String @id @default(uuid())
  146. // hospital_id String
  147. // vendor_id String?
  148. // vendor_impression String? @db.Text
  149. // status String?
  150. // contract_date DateTime?
  151. // contract_expired_date DateTime?
  152. // hospital Hospital @relation(fields: [hospital_id], references: [id])
  153. // vendor Vendor? @relation(fields: [vendor_id], references: [id])
  154. // createdAt DateTime @default(now())
  155. // updatedAt DateTime @updatedAt
  156. // deletedAt DateTime?
  157. // @@map("vendor_histories")
  158. // }
  159. model VendorExperience {
  160. id String @id @default(uuid())
  161. hospital_id String
  162. vendor_id String?
  163. category_id String?
  164. user_id String
  165. content String? @db.Text
  166. hospital Hospital @relation(fields: [hospital_id], references: [id])
  167. vendor Vendor? @relation(fields: [vendor_id], references: [id])
  168. category Category? @relation(fields: [category_id], references: [id])
  169. user UserKeycloak @relation(fields: [user_id], references: [id])
  170. createdAt DateTime @default(now())
  171. updatedAt DateTime @updatedAt
  172. deletedAt DateTime?
  173. // status String?
  174. // contract_start_date DateTime?
  175. // contract_expired_date DateTime?
  176. // contract_value_min BigInt?
  177. // contract_value_max BigInt?
  178. // positive_notes String? @db.Text
  179. // negative_notes String? @db.Text
  180. // simrs_type String
  181. @@map("vendor_experiences")
  182. }
  183. model ExecutivesHistory {
  184. id String @id @default(uuid())
  185. hospital_id String
  186. executive_name String?
  187. contact String?
  188. status String?
  189. start_term DateTime?
  190. end_term DateTime?
  191. hospital Hospital @relation(fields: [hospital_id], references: [id])
  192. createdAt DateTime @default(now())
  193. updatedAt DateTime @updatedAt
  194. deletedAt DateTime?
  195. @@map("executives_histories")
  196. }
  197. model StatusHistory {
  198. id String @id @default(uuid())
  199. hospital_id String
  200. user_id String
  201. old_status ProgressStatus
  202. new_status ProgressStatus
  203. note String? @db.Text
  204. hospital Hospital @relation(fields: [hospital_id], references: [id])
  205. user UserKeycloak @relation(fields: [user_id], references: [id])
  206. createdAt DateTime @default(now())
  207. updatedAt DateTime @updatedAt
  208. deletedAt DateTime?
  209. @@map("status_histories")
  210. }
  211. model Category {
  212. id String @id @default(uuid())
  213. name String
  214. description String? @db.Text
  215. status_archive Boolean? @default(false)
  216. // CategoryLink CategoryLink[]
  217. createdAt DateTime @default(now())
  218. updatedAt DateTime @updatedAt
  219. deletedAt DateTime?
  220. VendorExperience VendorExperience[]
  221. @@map("categories")
  222. }
  223. // model CategoryLink {
  224. // id String @id @default(uuid())
  225. // category_id String
  226. // source_type String?
  227. // source_id String?
  228. // createdAt DateTime @default(now())
  229. // updatedAt DateTime @updatedAt
  230. // deletedAt DateTime?
  231. // Category Category? @relation(fields: [category_id], references: [id])
  232. // @@map("category_links")
  233. // }
  234. model ScheduleVisitation {
  235. id String @id @default(uuid())
  236. date_visit DateTime
  237. sales_id String
  238. hospital_id String
  239. province_id String
  240. city_id String
  241. notes String? @db.Text
  242. created_by String
  243. createdAt DateTime @default(now())
  244. updatedAt DateTime @updatedAt
  245. deletedAt DateTime?
  246. hospital Hospital @relation(fields: [hospital_id], references: [id])
  247. user_created UserKeycloak @relation("CreatedVisitations", fields: [created_by], references: [id])
  248. sales_visit UserKeycloak @relation("SalesVisitations", fields: [sales_id], references: [id])
  249. @@map("schedule_visitations")
  250. }