@studious-lms/server 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/.dockerignore +28 -0
  2. package/.env.example +5 -0
  3. package/.github/workflows/deploy.yml +123 -0
  4. package/Dockerfile +54 -0
  5. package/dist/index.js +5 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/instrument.js +3 -3
  8. package/dist/instrument.js.map +1 -1
  9. package/dist/lib/config/cors.d.ts.map +1 -1
  10. package/dist/lib/config/cors.js +31 -11
  11. package/dist/lib/config/cors.js.map +1 -1
  12. package/dist/lib/config/env.d.ts +17 -0
  13. package/dist/lib/config/env.d.ts.map +1 -1
  14. package/dist/lib/config/env.js +8 -2
  15. package/dist/lib/config/env.js.map +1 -1
  16. package/dist/lib/googleCloudStorage.d.ts +10 -0
  17. package/dist/lib/googleCloudStorage.d.ts.map +1 -1
  18. package/dist/lib/googleCloudStorage.js +22 -2
  19. package/dist/lib/googleCloudStorage.js.map +1 -1
  20. package/dist/lib/inferDocumentFormat.d.ts +10 -0
  21. package/dist/lib/inferDocumentFormat.d.ts.map +1 -0
  22. package/dist/lib/inferDocumentFormat.js +48 -0
  23. package/dist/lib/inferDocumentFormat.js.map +1 -0
  24. package/dist/lib/legal.d.ts +3 -0
  25. package/dist/lib/legal.d.ts.map +1 -0
  26. package/dist/lib/legal.js +6 -0
  27. package/dist/lib/legal.js.map +1 -0
  28. package/dist/lib/prisma.d.ts +104 -5
  29. package/dist/lib/prisma.d.ts.map +1 -1
  30. package/dist/lib/prisma.js +33 -2
  31. package/dist/lib/prisma.js.map +1 -1
  32. package/dist/models/agenda.d.ts +20 -20
  33. package/dist/models/announcement.d.ts +211 -101
  34. package/dist/models/announcement.d.ts.map +1 -1
  35. package/dist/models/assignment.d.ts +560 -362
  36. package/dist/models/assignment.d.ts.map +1 -1
  37. package/dist/models/attendance.d.ts +197 -71
  38. package/dist/models/attendance.d.ts.map +1 -1
  39. package/dist/models/auth.d.ts +356 -114
  40. package/dist/models/auth.d.ts.map +1 -1
  41. package/dist/models/auth.js +4 -2
  42. package/dist/models/auth.js.map +1 -1
  43. package/dist/models/class.d.ts +327 -201
  44. package/dist/models/class.d.ts.map +1 -1
  45. package/dist/models/class.js +2 -2
  46. package/dist/models/class.js.map +1 -1
  47. package/dist/models/cloudStorage.d.ts +146 -56
  48. package/dist/models/cloudStorage.d.ts.map +1 -1
  49. package/dist/models/comment.d.ts +262 -110
  50. package/dist/models/comment.d.ts.map +1 -1
  51. package/dist/models/conversation.d.ts +206 -80
  52. package/dist/models/conversation.d.ts.map +1 -1
  53. package/dist/models/department.d.ts +196 -70
  54. package/dist/models/department.d.ts.map +1 -1
  55. package/dist/models/event.d.ts +305 -141
  56. package/dist/models/event.d.ts.map +1 -1
  57. package/dist/models/file.d.ts +422 -272
  58. package/dist/models/file.d.ts.map +1 -1
  59. package/dist/models/folder.d.ts +433 -181
  60. package/dist/models/folder.d.ts.map +1 -1
  61. package/dist/models/labChat.d.ts +205 -79
  62. package/dist/models/labChat.d.ts.map +1 -1
  63. package/dist/models/marketing.d.ts +79 -38
  64. package/dist/models/marketing.d.ts.map +1 -1
  65. package/dist/models/marketing.js +12 -4
  66. package/dist/models/marketing.js.map +1 -1
  67. package/dist/models/message.d.ts +97 -43
  68. package/dist/models/message.d.ts.map +1 -1
  69. package/dist/models/newtonChat.d.ts +84 -30
  70. package/dist/models/newtonChat.d.ts.map +1 -1
  71. package/dist/models/notification.d.ts +57 -21
  72. package/dist/models/notification.d.ts.map +1 -1
  73. package/dist/models/school.d.ts +349 -133
  74. package/dist/models/school.d.ts.map +1 -1
  75. package/dist/models/section.d.ts +216 -72
  76. package/dist/models/section.d.ts.map +1 -1
  77. package/dist/models/tag.d.ts +156 -48
  78. package/dist/models/tag.d.ts.map +1 -1
  79. package/dist/models/user.d.ts +82 -28
  80. package/dist/models/user.d.ts.map +1 -1
  81. package/dist/models/worksheet.d.ts +1032 -423
  82. package/dist/models/worksheet.d.ts.map +1 -1
  83. package/dist/models/worksheet.js +8 -2
  84. package/dist/models/worksheet.js.map +1 -1
  85. package/dist/pipelines/aiLabChat.d.ts +7 -9
  86. package/dist/pipelines/aiLabChat.d.ts.map +1 -1
  87. package/dist/pipelines/aiLabChat.js +194 -125
  88. package/dist/pipelines/aiLabChat.js.map +1 -1
  89. package/dist/pipelines/aiLabChatContract.d.ts +233 -389
  90. package/dist/pipelines/aiLabChatContract.d.ts.map +1 -1
  91. package/dist/pipelines/aiLabChatContract.js +54 -70
  92. package/dist/pipelines/aiLabChatContract.js.map +1 -1
  93. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
  94. package/dist/pipelines/aiNewtonChat.js +41 -41
  95. package/dist/pipelines/aiNewtonChat.js.map +1 -1
  96. package/dist/pipelines/gradeWorksheet.d.ts +8 -8
  97. package/dist/pipelines/labChatPrompt.d.ts +18 -11
  98. package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
  99. package/dist/pipelines/labChatPrompt.js +93 -75
  100. package/dist/pipelines/labChatPrompt.js.map +1 -1
  101. package/dist/pipelines/pdfToWorksheet.d.ts +1 -1
  102. package/dist/routers/_app.d.ts +2601 -2151
  103. package/dist/routers/_app.d.ts.map +1 -1
  104. package/dist/routers/_app.js +4 -2
  105. package/dist/routers/_app.js.map +1 -1
  106. package/dist/routers/admin.d.ts +13 -13
  107. package/dist/routers/agenda.d.ts +18 -18
  108. package/dist/routers/announcement.d.ts +60 -60
  109. package/dist/routers/assignment.d.ts +393 -383
  110. package/dist/routers/assignment.d.ts.map +1 -1
  111. package/dist/routers/attendance.d.ts +10 -10
  112. package/dist/routers/auth.d.ts +4 -2
  113. package/dist/routers/auth.d.ts.map +1 -1
  114. package/dist/routers/auth.js +15 -2
  115. package/dist/routers/auth.js.map +1 -1
  116. package/dist/routers/class.d.ts +157 -153
  117. package/dist/routers/class.d.ts.map +1 -1
  118. package/dist/routers/comment.d.ts +18 -18
  119. package/dist/routers/conversation.d.ts +11 -11
  120. package/dist/routers/department.d.ts +34 -34
  121. package/dist/routers/discussion.d.ts +68 -56
  122. package/dist/routers/discussion.d.ts.map +1 -1
  123. package/dist/routers/discussion.js +6 -2
  124. package/dist/routers/discussion.js.map +1 -1
  125. package/dist/routers/embedding.d.ts +73 -0
  126. package/dist/routers/embedding.d.ts.map +1 -0
  127. package/dist/routers/embedding.js +151 -0
  128. package/dist/routers/embedding.js.map +1 -0
  129. package/dist/routers/event.d.ts +57 -55
  130. package/dist/routers/event.d.ts.map +1 -1
  131. package/dist/routers/file.d.ts +14 -14
  132. package/dist/routers/folder.d.ts +38 -38
  133. package/dist/routers/labChat.d.ts +16 -16
  134. package/dist/routers/marketing.d.ts +1 -14
  135. package/dist/routers/marketing.d.ts.map +1 -1
  136. package/dist/routers/message.d.ts +13 -13
  137. package/dist/routers/newtonChat.d.ts +4 -4
  138. package/dist/routers/notifications.d.ts +5 -5
  139. package/dist/routers/permissions.d.ts +14 -14
  140. package/dist/routers/school.d.ts +59 -55
  141. package/dist/routers/school.d.ts.map +1 -1
  142. package/dist/routers/search.d.ts +22 -1
  143. package/dist/routers/search.d.ts.map +1 -1
  144. package/dist/routers/search.js +9 -3
  145. package/dist/routers/search.js.map +1 -1
  146. package/dist/routers/section.d.ts +4 -4
  147. package/dist/routers/studentProgress.d.ts +1 -1
  148. package/dist/routers/tag.d.ts +7 -7
  149. package/dist/routers/user.d.ts +99 -10
  150. package/dist/routers/user.d.ts.map +1 -1
  151. package/dist/routers/user.js +19 -2
  152. package/dist/routers/user.js.map +1 -1
  153. package/dist/routers/worksheet.d.ts +93 -55
  154. package/dist/routers/worksheet.d.ts.map +1 -1
  155. package/dist/routers/worksheet.js +26 -2
  156. package/dist/routers/worksheet.js.map +1 -1
  157. package/dist/routes/aiStream.d.ts +2 -0
  158. package/dist/routes/aiStream.d.ts.map +1 -0
  159. package/dist/routes/aiStream.js +726 -0
  160. package/dist/routes/aiStream.js.map +1 -0
  161. package/dist/seedDatabase.d.ts +3 -1
  162. package/dist/seedDatabase.d.ts.map +1 -1
  163. package/dist/seedDatabase.js +6 -6
  164. package/dist/seedDatabase.js.map +1 -1
  165. package/dist/services/adminInstitution.d.ts +8 -8
  166. package/dist/services/adminRunJob.d.ts +4 -4
  167. package/dist/services/agenda.d.ts +18 -18
  168. package/dist/services/aiChatStream.d.ts +88 -0
  169. package/dist/services/aiChatStream.d.ts.map +1 -0
  170. package/dist/services/aiChatStream.js +254 -0
  171. package/dist/services/aiChatStream.js.map +1 -0
  172. package/dist/services/aiModifierTools.d.ts +16 -0
  173. package/dist/services/aiModifierTools.d.ts.map +1 -0
  174. package/dist/services/aiModifierTools.js +274 -0
  175. package/dist/services/aiModifierTools.js.map +1 -0
  176. package/dist/services/aiProposalTools.d.ts +32 -0
  177. package/dist/services/aiProposalTools.d.ts.map +1 -0
  178. package/dist/services/aiProposalTools.js +207 -0
  179. package/dist/services/aiProposalTools.js.map +1 -0
  180. package/dist/services/aiStream.d.ts +22 -0
  181. package/dist/services/aiStream.d.ts.map +1 -0
  182. package/dist/services/aiStream.js +142 -0
  183. package/dist/services/aiStream.js.map +1 -0
  184. package/dist/services/aiTools.d.ts +16 -0
  185. package/dist/services/aiTools.d.ts.map +1 -0
  186. package/dist/services/aiTools.js +271 -0
  187. package/dist/services/aiTools.js.map +1 -0
  188. package/dist/services/announcement.d.ts +42 -42
  189. package/dist/services/announcement.d.ts.map +1 -1
  190. package/dist/services/announcement.js +7 -2
  191. package/dist/services/announcement.js.map +1 -1
  192. package/dist/services/assignment.d.ts +355 -345
  193. package/dist/services/assignment.d.ts.map +1 -1
  194. package/dist/services/assignment.js +30 -9
  195. package/dist/services/assignment.js.map +1 -1
  196. package/dist/services/attendance.d.ts +10 -10
  197. package/dist/services/auth.d.ts +4 -2
  198. package/dist/services/auth.d.ts.map +1 -1
  199. package/dist/services/auth.js +13 -4
  200. package/dist/services/auth.js.map +1 -1
  201. package/dist/services/class.d.ts +146 -142
  202. package/dist/services/class.d.ts.map +1 -1
  203. package/dist/services/class.js +24 -4
  204. package/dist/services/class.js.map +1 -1
  205. package/dist/services/comment.d.ts +18 -18
  206. package/dist/services/conversation.d.ts +11 -11
  207. package/dist/services/department.d.ts +33 -33
  208. package/dist/services/discussion.d.ts +58 -58
  209. package/dist/services/discussion.d.ts.map +1 -1
  210. package/dist/services/discussion.js +15 -8
  211. package/dist/services/discussion.js.map +1 -1
  212. package/dist/services/discussionSummary.d.ts +21 -0
  213. package/dist/services/discussionSummary.d.ts.map +1 -0
  214. package/dist/services/discussionSummary.js +179 -0
  215. package/dist/services/discussionSummary.js.map +1 -0
  216. package/dist/services/embedding.d.ts +85 -0
  217. package/dist/services/embedding.d.ts.map +1 -0
  218. package/dist/services/embedding.js +372 -0
  219. package/dist/services/embedding.js.map +1 -0
  220. package/dist/services/event.d.ts +55 -53
  221. package/dist/services/event.d.ts.map +1 -1
  222. package/dist/services/file.d.ts +28 -28
  223. package/dist/services/folder.d.ts +36 -36
  224. package/dist/services/folder.d.ts.map +1 -1
  225. package/dist/services/folder.js +32 -2
  226. package/dist/services/folder.js.map +1 -1
  227. package/dist/services/labChat.d.ts +16 -16
  228. package/dist/services/marketing.d.ts +2 -15
  229. package/dist/services/marketing.d.ts.map +1 -1
  230. package/dist/services/marketing.js +5 -5
  231. package/dist/services/marketing.js.map +1 -1
  232. package/dist/services/message.d.ts +11 -11
  233. package/dist/services/message.d.ts.map +1 -1
  234. package/dist/services/message.js +2 -2
  235. package/dist/services/message.js.map +1 -1
  236. package/dist/services/newtonChat.d.ts +4 -4
  237. package/dist/services/notification.d.ts +5 -5
  238. package/dist/services/notification.d.ts.map +1 -1
  239. package/dist/services/openaiDocumentGen.d.ts +37 -0
  240. package/dist/services/openaiDocumentGen.d.ts.map +1 -0
  241. package/dist/services/openaiDocumentGen.js +262 -0
  242. package/dist/services/openaiDocumentGen.js.map +1 -0
  243. package/dist/services/permissions.d.ts +14 -14
  244. package/dist/services/school.d.ts +54 -50
  245. package/dist/services/school.d.ts.map +1 -1
  246. package/dist/services/search.d.ts +13 -1
  247. package/dist/services/search.d.ts.map +1 -1
  248. package/dist/services/search.js +145 -2
  249. package/dist/services/search.js.map +1 -1
  250. package/dist/services/section.d.ts +3 -3
  251. package/dist/services/tag.d.ts +4 -4
  252. package/dist/services/user.d.ts +4 -4
  253. package/dist/services/user.d.ts.map +1 -1
  254. package/dist/services/user.js +10 -15
  255. package/dist/services/user.js.map +1 -1
  256. package/dist/services/userPrivacy.d.ts +86 -0
  257. package/dist/services/userPrivacy.d.ts.map +1 -0
  258. package/dist/services/userPrivacy.js +184 -0
  259. package/dist/services/userPrivacy.js.map +1 -0
  260. package/dist/services/worksheet.d.ts +86 -57
  261. package/dist/services/worksheet.d.ts.map +1 -1
  262. package/dist/services/worksheet.js +57 -5
  263. package/dist/services/worksheet.js.map +1 -1
  264. package/dist/utils/email.d.ts.map +1 -1
  265. package/dist/utils/email.js +7 -3
  266. package/dist/utils/email.js.map +1 -1
  267. package/dist/utils/streamBroadcast.d.ts +11 -0
  268. package/dist/utils/streamBroadcast.d.ts.map +1 -0
  269. package/dist/utils/streamBroadcast.js +32 -0
  270. package/dist/utils/streamBroadcast.js.map +1 -0
  271. package/dist/workers/connection.d.ts +15 -0
  272. package/dist/workers/connection.d.ts.map +1 -1
  273. package/dist/workers/connection.js +20 -2
  274. package/dist/workers/connection.js.map +1 -1
  275. package/dist/workers/index.js +4 -2
  276. package/dist/workers/index.js.map +1 -1
  277. package/dist/workers/processors/createRunJobWorker.d.ts.map +1 -1
  278. package/dist/workers/processors/createRunJobWorker.js +31 -8
  279. package/dist/workers/processors/createRunJobWorker.js.map +1 -1
  280. package/dist/workers/processors/embedContent.d.ts +8 -0
  281. package/dist/workers/processors/embedContent.d.ts.map +1 -0
  282. package/dist/workers/processors/embedContent.js +67 -0
  283. package/dist/workers/processors/embedContent.js.map +1 -0
  284. package/dist/workers/queues.d.ts +6 -0
  285. package/dist/workers/queues.d.ts.map +1 -1
  286. package/dist/workers/queues.js +5 -3
  287. package/dist/workers/queues.js.map +1 -1
  288. package/package.json +5 -1
  289. package/prisma/migrations/20260609215135_init/migration.sql +1412 -0
  290. package/prisma/migrations/20260610130000_add_worksheet_tags/migration.sql +13 -0
  291. package/prisma/migrations/20260610140000_expand_embedding_source_types/migration.sql +4 -0
  292. package/prisma/migrations/20260611120000_add_user_terms_acceptance/migration.sql +3 -0
  293. package/prisma/schema.prisma +44 -7
  294. package/src/index.ts +4 -0
  295. package/src/instrument.ts +1 -1
  296. package/src/lib/config/cors.ts +32 -9
  297. package/src/lib/config/env.ts +6 -0
  298. package/src/lib/googleCloudStorage.ts +21 -0
  299. package/src/lib/inferDocumentFormat.ts +58 -0
  300. package/src/lib/legal.ts +2 -0
  301. package/src/lib/prisma.ts +40 -1
  302. package/src/models/auth.ts +4 -0
  303. package/src/models/class.ts +3 -2
  304. package/src/models/marketing.ts +10 -2
  305. package/src/models/worksheet.ts +5 -2
  306. package/src/pipelines/aiLabChat.ts +245 -146
  307. package/src/pipelines/aiLabChatContract.ts +59 -69
  308. package/src/pipelines/aiNewtonChat.ts +46 -43
  309. package/src/pipelines/labChatPrompt.ts +115 -90
  310. package/src/routers/_app.ts +2 -0
  311. package/src/routers/auth.ts +13 -0
  312. package/src/routers/discussion.ts +7 -0
  313. package/src/routers/embedding.ts +164 -0
  314. package/src/routers/search.ts +10 -1
  315. package/src/routers/user.ts +26 -0
  316. package/src/routers/worksheet.ts +27 -0
  317. package/src/routes/aiStream.ts +827 -0
  318. package/src/seedDatabase.ts +4 -4
  319. package/src/services/aiChatStream.ts +341 -0
  320. package/src/services/aiModifierTools.ts +341 -0
  321. package/src/services/aiProposalTools.ts +274 -0
  322. package/src/services/aiStream.ts +175 -0
  323. package/src/services/aiTools.ts +290 -0
  324. package/src/services/announcement.ts +7 -0
  325. package/src/services/assignment.ts +31 -7
  326. package/src/services/auth.ts +14 -2
  327. package/src/services/class.ts +27 -2
  328. package/src/services/discussion.ts +22 -8
  329. package/src/services/discussionSummary.ts +226 -0
  330. package/src/services/embedding.ts +446 -0
  331. package/src/services/folder.ts +31 -0
  332. package/src/services/marketing.ts +3 -3
  333. package/src/services/message.ts +2 -2
  334. package/src/services/openaiDocumentGen.ts +319 -0
  335. package/src/services/search.ts +163 -1
  336. package/src/services/user.ts +9 -17
  337. package/src/services/userPrivacy.ts +196 -0
  338. package/src/services/worksheet.ts +77 -3
  339. package/src/utils/email.ts +5 -1
  340. package/src/utils/streamBroadcast.ts +48 -0
  341. package/src/workers/connection.ts +19 -0
  342. package/src/workers/index.ts +2 -0
  343. package/src/workers/processors/createRunJobWorker.ts +32 -6
  344. package/src/workers/processors/embedContent.ts +86 -0
  345. package/src/workers/queues.ts +5 -1
  346. package/tests/helpers/registerInput.ts +20 -0
  347. package/tests/integration/globalSetup.ts +10 -18
  348. package/tests/integration/routers/auth.test.ts +13 -18
  349. package/tests/unit/lib/inferDocumentFormat.test.ts +33 -0
  350. package/tests/unit/pipelines/aiLabChatContract.test.ts +38 -21
  351. package/tests/unit/pipelines/labChatPrompt.test.ts +23 -36
  352. package/tests/unit/services/aiChatStream.test.ts +92 -0
  353. package/tests/unit/services/openaiDocumentGen.test.ts +65 -0
  354. package/prisma/migrations/20250807062924_init/migration.sql +0 -436
  355. package/prisma/migrations/20250919063704_init2/migration.sql +0 -24
  356. package/prisma/migrations/20250920143543_add_profile_fields/migration.sql +0 -15
  357. package/prisma/migrations/20250922165147_add_chat_models/migration.sql +0 -68
  358. package/prisma/migrations/20250922165314_add_chat_roles/migration.sql +0 -5
  359. package/prisma/migrations/20250922171242_refactor_notification_system/migration.sql +0 -20
  360. package/prisma/migrations/20250922172208_add_mentions_system/migration.sql +0 -21
  361. package/prisma/migrations/20250925072732_add_lab_chat_system/migration.sql +0 -25
  362. package/prisma/migrations/20251020151505_add_upload_tracking_fields/migration.sql +0 -57
  363. package/prisma/migrations/20251109122857_annuoncements_comments/migration.sql +0 -30
  364. package/prisma/migrations/20251109135555_reactions_announcements_comments/migration.sql +0 -35
  365. package/prisma/migrations/20260410124000_add_submission_recommendation_state/migration.sql +0 -14
  366. package/prisma/migrations/20260415103500_add_session_type/migration.sql +0 -33
  367. package/prisma/migrations/20260415133000_add_ai_usage_logs/migration.sql +0 -19
  368. package/prisma/migrations/20260417083000_add_conversation_member_hidden_at/migration.sql +0 -2
  369. package/prisma/migrations/20260502230500_assignment_submission_comments/migration.sql +0 -60
  370. package/prisma/migrations/20260504071500_school_memberships/migration.sql +0 -81
  371. package/prisma/migrations/20260506162500_consolidate_run_job_and_unify_job_status/migration.sql +0 -166
  372. package/prisma/migrations/20260509220000_institution_overhaul/migration.sql +0 -184
  373. package/prisma/migrations/20260510170000_add_folder_permissions/migration.sql +0 -93
  374. package/prisma/migrations/20260510183000_add_discussions/migration.sql +0 -151
  375. /package/.github/workflows/{npm.yml → npm-publish.yml} +0 -0
@@ -1,436 +0,0 @@
1
- -- CreateEnum
2
- CREATE TYPE "AssignmentType" AS ENUM ('HOMEWORK', 'QUIZ', 'TEST', 'PROJECT', 'ESSAY', 'DISCUSSION', 'PRESENTATION', 'LAB', 'OTHER');
3
-
4
- -- CreateEnum
5
- CREATE TYPE "UserRole" AS ENUM ('STUDENT', 'TEACHER', 'ADMIN', 'NONE');
6
-
7
- -- CreateTable
8
- CREATE TABLE "School" (
9
- "id" TEXT NOT NULL,
10
- "name" TEXT NOT NULL,
11
- "logoId" TEXT NOT NULL,
12
- "subdomain" TEXT,
13
-
14
- CONSTRAINT "School_pkey" PRIMARY KEY ("id")
15
- );
16
-
17
- -- CreateTable
18
- CREATE TABLE "User" (
19
- "id" TEXT NOT NULL,
20
- "username" TEXT NOT NULL,
21
- "email" TEXT NOT NULL,
22
- "password" TEXT NOT NULL,
23
- "verified" BOOLEAN NOT NULL DEFAULT false,
24
- "role" "UserRole" NOT NULL DEFAULT 'NONE',
25
- "profileId" TEXT,
26
- "schoolId" TEXT,
27
-
28
- CONSTRAINT "User_pkey" PRIMARY KEY ("id")
29
- );
30
-
31
- -- CreateTable
32
- CREATE TABLE "UserProfile" (
33
- "id" TEXT NOT NULL,
34
- "userId" TEXT NOT NULL,
35
-
36
- CONSTRAINT "UserProfile_pkey" PRIMARY KEY ("id")
37
- );
38
-
39
- -- CreateTable
40
- CREATE TABLE "Class" (
41
- "id" TEXT NOT NULL,
42
- "name" TEXT NOT NULL,
43
- "subject" TEXT NOT NULL,
44
- "color" TEXT DEFAULT '#3B82F6',
45
- "section" TEXT NOT NULL,
46
- "syllabus" TEXT,
47
- "schoolId" TEXT,
48
-
49
- CONSTRAINT "Class_pkey" PRIMARY KEY ("id")
50
- );
51
-
52
- -- CreateTable
53
- CREATE TABLE "MarkScheme" (
54
- "id" TEXT NOT NULL,
55
- "classId" TEXT NOT NULL,
56
- "structured" TEXT NOT NULL,
57
-
58
- CONSTRAINT "MarkScheme_pkey" PRIMARY KEY ("id")
59
- );
60
-
61
- -- CreateTable
62
- CREATE TABLE "GradingBoundary" (
63
- "id" TEXT NOT NULL,
64
- "classId" TEXT NOT NULL,
65
- "structured" TEXT NOT NULL,
66
-
67
- CONSTRAINT "GradingBoundary_pkey" PRIMARY KEY ("id")
68
- );
69
-
70
- -- CreateTable
71
- CREATE TABLE "Folder" (
72
- "id" TEXT NOT NULL,
73
- "name" TEXT NOT NULL,
74
- "parentFolderId" TEXT,
75
- "classId" TEXT,
76
-
77
- CONSTRAINT "Folder_pkey" PRIMARY KEY ("id")
78
- );
79
-
80
- -- CreateTable
81
- CREATE TABLE "File" (
82
- "id" TEXT NOT NULL,
83
- "name" TEXT NOT NULL,
84
- "path" TEXT NOT NULL,
85
- "size" INTEGER,
86
- "type" TEXT NOT NULL,
87
- "userId" TEXT,
88
- "uploadedAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
89
- "thumbnailId" TEXT,
90
- "assignmentId" TEXT,
91
- "submissionId" TEXT,
92
- "annotationId" TEXT,
93
- "classDraftId" TEXT,
94
- "folderId" TEXT,
95
-
96
- CONSTRAINT "File_pkey" PRIMARY KEY ("id")
97
- );
98
-
99
- -- CreateTable
100
- CREATE TABLE "Assignment" (
101
- "id" TEXT NOT NULL,
102
- "title" TEXT NOT NULL,
103
- "instructions" TEXT NOT NULL,
104
- "dueDate" TIMESTAMP(3) NOT NULL,
105
- "createdAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
106
- "modifiedAt" TIMESTAMP(3),
107
- "teacherId" TEXT NOT NULL,
108
- "classId" TEXT NOT NULL,
109
- "sectionId" TEXT,
110
- "graded" BOOLEAN NOT NULL DEFAULT false,
111
- "maxGrade" INTEGER DEFAULT 0,
112
- "weight" DOUBLE PRECISION NOT NULL DEFAULT 1,
113
- "type" "AssignmentType" NOT NULL DEFAULT 'HOMEWORK',
114
- "inProgress" BOOLEAN NOT NULL DEFAULT false,
115
- "template" BOOLEAN NOT NULL DEFAULT false,
116
- "eventId" TEXT,
117
- "markSchemeId" TEXT,
118
- "gradingBoundaryId" TEXT,
119
-
120
- CONSTRAINT "Assignment_pkey" PRIMARY KEY ("id")
121
- );
122
-
123
- -- CreateTable
124
- CREATE TABLE "Announcement" (
125
- "id" TEXT NOT NULL,
126
- "remarks" TEXT NOT NULL,
127
- "teacherId" TEXT NOT NULL,
128
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
129
- "classId" TEXT NOT NULL,
130
-
131
- CONSTRAINT "Announcement_pkey" PRIMARY KEY ("id")
132
- );
133
-
134
- -- CreateTable
135
- CREATE TABLE "Submission" (
136
- "id" TEXT NOT NULL,
137
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
138
- "modifiedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
139
- "assignmentId" TEXT NOT NULL,
140
- "studentId" TEXT NOT NULL,
141
- "gradeReceived" INTEGER,
142
- "rubricState" TEXT,
143
- "submittedAt" TIMESTAMP(3),
144
- "submitted" BOOLEAN DEFAULT false,
145
- "returned" BOOLEAN DEFAULT false,
146
-
147
- CONSTRAINT "Submission_pkey" PRIMARY KEY ("id")
148
- );
149
-
150
- -- CreateTable
151
- CREATE TABLE "Section" (
152
- "id" TEXT NOT NULL,
153
- "name" TEXT NOT NULL,
154
- "classId" TEXT NOT NULL,
155
-
156
- CONSTRAINT "Section_pkey" PRIMARY KEY ("id")
157
- );
158
-
159
- -- CreateTable
160
- CREATE TABLE "Session" (
161
- "id" TEXT NOT NULL,
162
- "createdAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
163
- "expiresAt" TIMESTAMP(3),
164
- "userId" TEXT,
165
- "classId" TEXT,
166
-
167
- CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
168
- );
169
-
170
- -- CreateTable
171
- CREATE TABLE "Event" (
172
- "id" TEXT NOT NULL,
173
- "name" TEXT,
174
- "startTime" TIMESTAMP(3) NOT NULL,
175
- "endTime" TIMESTAMP(3) NOT NULL,
176
- "location" TEXT,
177
- "remarks" TEXT,
178
- "userId" TEXT,
179
- "classId" TEXT,
180
- "color" TEXT DEFAULT '#3B82F6',
181
-
182
- CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
183
- );
184
-
185
- -- CreateTable
186
- CREATE TABLE "Attendance" (
187
- "id" TEXT NOT NULL,
188
- "date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
189
- "classId" TEXT NOT NULL,
190
- "eventId" TEXT,
191
-
192
- CONSTRAINT "Attendance_pkey" PRIMARY KEY ("id")
193
- );
194
-
195
- -- CreateTable
196
- CREATE TABLE "Notification" (
197
- "id" TEXT NOT NULL,
198
- "title" TEXT NOT NULL,
199
- "content" TEXT NOT NULL,
200
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
201
- "senderId" TEXT,
202
- "receiverId" TEXT NOT NULL,
203
- "read" BOOLEAN NOT NULL DEFAULT false,
204
-
205
- CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
206
- );
207
-
208
- -- CreateTable
209
- CREATE TABLE "_UserStudentToClass" (
210
- "A" TEXT NOT NULL,
211
- "B" TEXT NOT NULL,
212
-
213
- CONSTRAINT "_UserStudentToClass_AB_pkey" PRIMARY KEY ("A","B")
214
- );
215
-
216
- -- CreateTable
217
- CREATE TABLE "_UserTeacherToClass" (
218
- "A" TEXT NOT NULL,
219
- "B" TEXT NOT NULL,
220
-
221
- CONSTRAINT "_UserTeacherToClass_AB_pkey" PRIMARY KEY ("A","B")
222
- );
223
-
224
- -- CreateTable
225
- CREATE TABLE "_ClassToMarkScheme" (
226
- "A" TEXT NOT NULL,
227
- "B" TEXT NOT NULL,
228
-
229
- CONSTRAINT "_ClassToMarkScheme_AB_pkey" PRIMARY KEY ("A","B")
230
- );
231
-
232
- -- CreateTable
233
- CREATE TABLE "_ClassToGradingBoundary" (
234
- "A" TEXT NOT NULL,
235
- "B" TEXT NOT NULL,
236
-
237
- CONSTRAINT "_ClassToGradingBoundary_AB_pkey" PRIMARY KEY ("A","B")
238
- );
239
-
240
- -- CreateTable
241
- CREATE TABLE "_PresentAttendance" (
242
- "A" TEXT NOT NULL,
243
- "B" TEXT NOT NULL,
244
-
245
- CONSTRAINT "_PresentAttendance_AB_pkey" PRIMARY KEY ("A","B")
246
- );
247
-
248
- -- CreateTable
249
- CREATE TABLE "_LateAttendance" (
250
- "A" TEXT NOT NULL,
251
- "B" TEXT NOT NULL,
252
-
253
- CONSTRAINT "_LateAttendance_AB_pkey" PRIMARY KEY ("A","B")
254
- );
255
-
256
- -- CreateTable
257
- CREATE TABLE "_AbsentAttendance" (
258
- "A" TEXT NOT NULL,
259
- "B" TEXT NOT NULL,
260
-
261
- CONSTRAINT "_AbsentAttendance_AB_pkey" PRIMARY KEY ("A","B")
262
- );
263
-
264
- -- CreateIndex
265
- CREATE UNIQUE INDEX "School_subdomain_key" ON "School"("subdomain");
266
-
267
- -- CreateIndex
268
- CREATE UNIQUE INDEX "User_profileId_key" ON "User"("profileId");
269
-
270
- -- CreateIndex
271
- CREATE UNIQUE INDEX "UserProfile_userId_key" ON "UserProfile"("userId");
272
-
273
- -- CreateIndex
274
- CREATE UNIQUE INDEX "Folder_classId_key" ON "Folder"("classId");
275
-
276
- -- CreateIndex
277
- CREATE UNIQUE INDEX "File_thumbnailId_key" ON "File"("thumbnailId");
278
-
279
- -- CreateIndex
280
- CREATE INDEX "_UserStudentToClass_B_index" ON "_UserStudentToClass"("B");
281
-
282
- -- CreateIndex
283
- CREATE INDEX "_UserTeacherToClass_B_index" ON "_UserTeacherToClass"("B");
284
-
285
- -- CreateIndex
286
- CREATE INDEX "_ClassToMarkScheme_B_index" ON "_ClassToMarkScheme"("B");
287
-
288
- -- CreateIndex
289
- CREATE INDEX "_ClassToGradingBoundary_B_index" ON "_ClassToGradingBoundary"("B");
290
-
291
- -- CreateIndex
292
- CREATE INDEX "_PresentAttendance_B_index" ON "_PresentAttendance"("B");
293
-
294
- -- CreateIndex
295
- CREATE INDEX "_LateAttendance_B_index" ON "_LateAttendance"("B");
296
-
297
- -- CreateIndex
298
- CREATE INDEX "_AbsentAttendance_B_index" ON "_AbsentAttendance"("B");
299
-
300
- -- AddForeignKey
301
- ALTER TABLE "School" ADD CONSTRAINT "School_logoId_fkey" FOREIGN KEY ("logoId") REFERENCES "File"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
302
-
303
- -- AddForeignKey
304
- ALTER TABLE "User" ADD CONSTRAINT "User_schoolId_fkey" FOREIGN KEY ("schoolId") REFERENCES "School"("id") ON DELETE SET NULL ON UPDATE CASCADE;
305
-
306
- -- AddForeignKey
307
- ALTER TABLE "UserProfile" ADD CONSTRAINT "UserProfile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
308
-
309
- -- AddForeignKey
310
- ALTER TABLE "Class" ADD CONSTRAINT "Class_schoolId_fkey" FOREIGN KEY ("schoolId") REFERENCES "School"("id") ON DELETE SET NULL ON UPDATE CASCADE;
311
-
312
- -- AddForeignKey
313
- ALTER TABLE "Folder" ADD CONSTRAINT "Folder_parentFolderId_fkey" FOREIGN KEY ("parentFolderId") REFERENCES "Folder"("id") ON DELETE SET NULL ON UPDATE CASCADE;
314
-
315
- -- AddForeignKey
316
- ALTER TABLE "Folder" ADD CONSTRAINT "Folder_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE SET NULL ON UPDATE CASCADE;
317
-
318
- -- AddForeignKey
319
- ALTER TABLE "File" ADD CONSTRAINT "File_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
320
-
321
- -- AddForeignKey
322
- ALTER TABLE "File" ADD CONSTRAINT "File_thumbnailId_fkey" FOREIGN KEY ("thumbnailId") REFERENCES "File"("id") ON DELETE SET NULL ON UPDATE CASCADE;
323
-
324
- -- AddForeignKey
325
- ALTER TABLE "File" ADD CONSTRAINT "File_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "Assignment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
326
-
327
- -- AddForeignKey
328
- ALTER TABLE "File" ADD CONSTRAINT "File_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "Submission"("id") ON DELETE CASCADE ON UPDATE CASCADE;
329
-
330
- -- AddForeignKey
331
- ALTER TABLE "File" ADD CONSTRAINT "File_annotationId_fkey" FOREIGN KEY ("annotationId") REFERENCES "Submission"("id") ON DELETE CASCADE ON UPDATE CASCADE;
332
-
333
- -- AddForeignKey
334
- ALTER TABLE "File" ADD CONSTRAINT "File_classDraftId_fkey" FOREIGN KEY ("classDraftId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
335
-
336
- -- AddForeignKey
337
- ALTER TABLE "File" ADD CONSTRAINT "File_folderId_fkey" FOREIGN KEY ("folderId") REFERENCES "Folder"("id") ON DELETE CASCADE ON UPDATE CASCADE;
338
-
339
- -- AddForeignKey
340
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE CASCADE;
341
-
342
- -- AddForeignKey
343
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
344
-
345
- -- AddForeignKey
346
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_sectionId_fkey" FOREIGN KEY ("sectionId") REFERENCES "Section"("id") ON DELETE CASCADE ON UPDATE CASCADE;
347
-
348
- -- AddForeignKey
349
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE NO ACTION ON UPDATE CASCADE;
350
-
351
- -- AddForeignKey
352
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_markSchemeId_fkey" FOREIGN KEY ("markSchemeId") REFERENCES "MarkScheme"("id") ON DELETE CASCADE ON UPDATE CASCADE;
353
-
354
- -- AddForeignKey
355
- ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_gradingBoundaryId_fkey" FOREIGN KEY ("gradingBoundaryId") REFERENCES "GradingBoundary"("id") ON DELETE CASCADE ON UPDATE CASCADE;
356
-
357
- -- AddForeignKey
358
- ALTER TABLE "Announcement" ADD CONSTRAINT "Announcement_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
359
-
360
- -- AddForeignKey
361
- ALTER TABLE "Announcement" ADD CONSTRAINT "Announcement_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
362
-
363
- -- AddForeignKey
364
- ALTER TABLE "Submission" ADD CONSTRAINT "Submission_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "Assignment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
365
-
366
- -- AddForeignKey
367
- ALTER TABLE "Submission" ADD CONSTRAINT "Submission_studentId_fkey" FOREIGN KEY ("studentId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
368
-
369
- -- AddForeignKey
370
- ALTER TABLE "Section" ADD CONSTRAINT "Section_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
371
-
372
- -- AddForeignKey
373
- ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE CASCADE;
374
-
375
- -- AddForeignKey
376
- ALTER TABLE "Session" ADD CONSTRAINT "Session_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
377
-
378
- -- AddForeignKey
379
- ALTER TABLE "Event" ADD CONSTRAINT "Event_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
380
-
381
- -- AddForeignKey
382
- ALTER TABLE "Event" ADD CONSTRAINT "Event_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
383
-
384
- -- AddForeignKey
385
- ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
386
-
387
- -- AddForeignKey
388
- ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
389
-
390
- -- AddForeignKey
391
- ALTER TABLE "Notification" ADD CONSTRAINT "Notification_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
392
-
393
- -- AddForeignKey
394
- ALTER TABLE "Notification" ADD CONSTRAINT "Notification_receiverId_fkey" FOREIGN KEY ("receiverId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
395
-
396
- -- AddForeignKey
397
- ALTER TABLE "_UserStudentToClass" ADD CONSTRAINT "_UserStudentToClass_A_fkey" FOREIGN KEY ("A") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
398
-
399
- -- AddForeignKey
400
- ALTER TABLE "_UserStudentToClass" ADD CONSTRAINT "_UserStudentToClass_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
401
-
402
- -- AddForeignKey
403
- ALTER TABLE "_UserTeacherToClass" ADD CONSTRAINT "_UserTeacherToClass_A_fkey" FOREIGN KEY ("A") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
404
-
405
- -- AddForeignKey
406
- ALTER TABLE "_UserTeacherToClass" ADD CONSTRAINT "_UserTeacherToClass_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
407
-
408
- -- AddForeignKey
409
- ALTER TABLE "_ClassToMarkScheme" ADD CONSTRAINT "_ClassToMarkScheme_A_fkey" FOREIGN KEY ("A") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
410
-
411
- -- AddForeignKey
412
- ALTER TABLE "_ClassToMarkScheme" ADD CONSTRAINT "_ClassToMarkScheme_B_fkey" FOREIGN KEY ("B") REFERENCES "MarkScheme"("id") ON DELETE CASCADE ON UPDATE CASCADE;
413
-
414
- -- AddForeignKey
415
- ALTER TABLE "_ClassToGradingBoundary" ADD CONSTRAINT "_ClassToGradingBoundary_A_fkey" FOREIGN KEY ("A") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
416
-
417
- -- AddForeignKey
418
- ALTER TABLE "_ClassToGradingBoundary" ADD CONSTRAINT "_ClassToGradingBoundary_B_fkey" FOREIGN KEY ("B") REFERENCES "GradingBoundary"("id") ON DELETE CASCADE ON UPDATE CASCADE;
419
-
420
- -- AddForeignKey
421
- ALTER TABLE "_PresentAttendance" ADD CONSTRAINT "_PresentAttendance_A_fkey" FOREIGN KEY ("A") REFERENCES "Attendance"("id") ON DELETE CASCADE ON UPDATE CASCADE;
422
-
423
- -- AddForeignKey
424
- ALTER TABLE "_PresentAttendance" ADD CONSTRAINT "_PresentAttendance_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
425
-
426
- -- AddForeignKey
427
- ALTER TABLE "_LateAttendance" ADD CONSTRAINT "_LateAttendance_A_fkey" FOREIGN KEY ("A") REFERENCES "Attendance"("id") ON DELETE CASCADE ON UPDATE CASCADE;
428
-
429
- -- AddForeignKey
430
- ALTER TABLE "_LateAttendance" ADD CONSTRAINT "_LateAttendance_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
431
-
432
- -- AddForeignKey
433
- ALTER TABLE "_AbsentAttendance" ADD CONSTRAINT "_AbsentAttendance_A_fkey" FOREIGN KEY ("A") REFERENCES "Attendance"("id") ON DELETE CASCADE ON UPDATE CASCADE;
434
-
435
- -- AddForeignKey
436
- ALTER TABLE "_AbsentAttendance" ADD CONSTRAINT "_AbsentAttendance_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,24 +0,0 @@
1
- -- DropForeignKey
2
- ALTER TABLE "Notification" DROP CONSTRAINT "Notification_receiverId_fkey";
3
-
4
- -- DropForeignKey
5
- ALTER TABLE "UserProfile" DROP CONSTRAINT "UserProfile_userId_fkey";
6
-
7
- -- AlterTable
8
- ALTER TABLE "Assignment" ADD COLUMN "order" INTEGER;
9
-
10
- -- AlterTable
11
- ALTER TABLE "Folder" ADD COLUMN "color" TEXT DEFAULT '#3B82F6';
12
-
13
- -- AlterTable
14
- ALTER TABLE "Section" ADD COLUMN "color" TEXT DEFAULT '#3B82F6',
15
- ADD COLUMN "order" INTEGER;
16
-
17
- -- AlterTable
18
- ALTER TABLE "Submission" ADD COLUMN "teacherComments" TEXT;
19
-
20
- -- AddForeignKey
21
- ALTER TABLE "UserProfile" ADD CONSTRAINT "UserProfile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
22
-
23
- -- AddForeignKey
24
- ALTER TABLE "Notification" ADD CONSTRAINT "Notification_receiverId_fkey" FOREIGN KEY ("receiverId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,15 +0,0 @@
1
- /*
2
- Warnings:
3
-
4
- - Added the required column `updatedAt` to the `UserProfile` table without a default value. This is not possible if the table is not empty.
5
-
6
- */
7
- -- AlterTable
8
- ALTER TABLE "public"."UserProfile" ADD COLUMN "bio" TEXT,
9
- ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
- ADD COLUMN "displayName" TEXT,
11
- ADD COLUMN "location" TEXT,
12
- ADD COLUMN "profilePicture" TEXT,
13
- ADD COLUMN "profilePictureThumbnail" TEXT,
14
- ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL,
15
- ADD COLUMN "website" TEXT;
@@ -1,68 +0,0 @@
1
- -- CreateEnum
2
- CREATE TYPE "ConversationType" AS ENUM ('DM', 'GROUP');
3
-
4
- -- CreateTable
5
- CREATE TABLE "Conversation" (
6
- "id" TEXT NOT NULL,
7
- "type" "ConversationType" NOT NULL,
8
- "name" TEXT,
9
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
- "updatedAt" TIMESTAMP(3) NOT NULL,
11
-
12
- CONSTRAINT "Conversation_pkey" PRIMARY KEY ("id")
13
- );
14
-
15
- -- CreateTable
16
- CREATE TABLE "ConversationMember" (
17
- "id" TEXT NOT NULL,
18
- "userId" TEXT NOT NULL,
19
- "conversationId" TEXT NOT NULL,
20
- "joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
-
22
- CONSTRAINT "ConversationMember_pkey" PRIMARY KEY ("id")
23
- );
24
-
25
- -- CreateTable
26
- CREATE TABLE "Message" (
27
- "id" TEXT NOT NULL,
28
- "content" TEXT NOT NULL,
29
- "senderId" TEXT NOT NULL,
30
- "conversationId" TEXT NOT NULL,
31
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
32
-
33
- CONSTRAINT "Message_pkey" PRIMARY KEY ("id")
34
- );
35
-
36
- -- CreateTable
37
- CREATE TABLE "MessageRead" (
38
- "id" TEXT NOT NULL,
39
- "messageId" TEXT NOT NULL,
40
- "userId" TEXT NOT NULL,
41
- "readAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
42
-
43
- CONSTRAINT "MessageRead_pkey" PRIMARY KEY ("id")
44
- );
45
-
46
- -- CreateIndex
47
- CREATE UNIQUE INDEX "ConversationMember_userId_conversationId_key" ON "ConversationMember"("userId", "conversationId");
48
-
49
- -- CreateIndex
50
- CREATE UNIQUE INDEX "MessageRead_messageId_userId_key" ON "MessageRead"("messageId", "userId");
51
-
52
- -- AddForeignKey
53
- ALTER TABLE "ConversationMember" ADD CONSTRAINT "ConversationMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
54
-
55
- -- AddForeignKey
56
- ALTER TABLE "ConversationMember" ADD CONSTRAINT "ConversationMember_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "Conversation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
57
-
58
- -- AddForeignKey
59
- ALTER TABLE "Message" ADD CONSTRAINT "Message_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
60
-
61
- -- AddForeignKey
62
- ALTER TABLE "Message" ADD CONSTRAINT "Message_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "Conversation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
63
-
64
- -- AddForeignKey
65
- ALTER TABLE "MessageRead" ADD CONSTRAINT "MessageRead_messageId_fkey" FOREIGN KEY ("messageId") REFERENCES "Message"("id") ON DELETE CASCADE ON UPDATE CASCADE;
66
-
67
- -- AddForeignKey
68
- ALTER TABLE "MessageRead" ADD CONSTRAINT "MessageRead_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,5 +0,0 @@
1
- -- CreateEnum
2
- CREATE TYPE "ConversationRole" AS ENUM ('ADMIN', 'MEMBER');
3
-
4
- -- AlterTable
5
- ALTER TABLE "ConversationMember" ADD COLUMN "role" "ConversationRole" NOT NULL DEFAULT 'MEMBER';
@@ -1,20 +0,0 @@
1
- /*
2
- Warnings:
3
-
4
- - You are about to drop the `MessageRead` table. If the table is not empty, all the data it contains will be lost.
5
-
6
- */
7
- -- DropForeignKey
8
- ALTER TABLE "MessageRead" DROP CONSTRAINT "MessageRead_messageId_fkey";
9
-
10
- -- DropForeignKey
11
- ALTER TABLE "MessageRead" DROP CONSTRAINT "MessageRead_userId_fkey";
12
-
13
- -- AlterTable
14
- ALTER TABLE "Conversation" ADD COLUMN "displayInChat" BOOLEAN NOT NULL DEFAULT true;
15
-
16
- -- AlterTable
17
- ALTER TABLE "ConversationMember" ADD COLUMN "lastViewedAt" TIMESTAMP(3);
18
-
19
- -- DropTable
20
- DROP TABLE "MessageRead";
@@ -1,21 +0,0 @@
1
- -- AlterTable
2
- ALTER TABLE "ConversationMember" ADD COLUMN "lastViewedMentionAt" TIMESTAMP(3);
3
-
4
- -- CreateTable
5
- CREATE TABLE "Mention" (
6
- "id" TEXT NOT NULL,
7
- "messageId" TEXT NOT NULL,
8
- "userId" TEXT NOT NULL,
9
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
-
11
- CONSTRAINT "Mention_pkey" PRIMARY KEY ("id")
12
- );
13
-
14
- -- CreateIndex
15
- CREATE UNIQUE INDEX "Mention_messageId_userId_key" ON "Mention"("messageId", "userId");
16
-
17
- -- AddForeignKey
18
- ALTER TABLE "Mention" ADD CONSTRAINT "Mention_messageId_fkey" FOREIGN KEY ("messageId") REFERENCES "Message"("id") ON DELETE CASCADE ON UPDATE CASCADE;
19
-
20
- -- AddForeignKey
21
- ALTER TABLE "Mention" ADD CONSTRAINT "Mention_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,25 +0,0 @@
1
- -- CreateTable
2
- CREATE TABLE "LabChat" (
3
- "id" TEXT NOT NULL,
4
- "title" TEXT NOT NULL,
5
- "context" TEXT NOT NULL,
6
- "classId" TEXT NOT NULL,
7
- "conversationId" TEXT NOT NULL,
8
- "createdById" TEXT NOT NULL,
9
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
- "updatedAt" TIMESTAMP(3) NOT NULL,
11
-
12
- CONSTRAINT "LabChat_pkey" PRIMARY KEY ("id")
13
- );
14
-
15
- -- CreateIndex
16
- CREATE UNIQUE INDEX "LabChat_conversationId_key" ON "LabChat"("conversationId");
17
-
18
- -- AddForeignKey
19
- ALTER TABLE "LabChat" ADD CONSTRAINT "LabChat_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE CASCADE ON UPDATE CASCADE;
20
-
21
- -- AddForeignKey
22
- ALTER TABLE "LabChat" ADD CONSTRAINT "LabChat_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "Conversation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
23
-
24
- -- AddForeignKey
25
- ALTER TABLE "LabChat" ADD CONSTRAINT "LabChat_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE CASCADE;
@@ -1,57 +0,0 @@
1
- -- CreateEnum
2
- CREATE TYPE "public"."UploadStatus" AS ENUM ('PENDING', 'UPLOADING', 'COMPLETED', 'FAILED', 'CANCELLED');
3
-
4
- -- AlterTable
5
- ALTER TABLE "public"."File" ADD COLUMN "cleanupAt" TIMESTAMP(3),
6
- ADD COLUMN "conversationId" TEXT,
7
- ADD COLUMN "isOrphaned" BOOLEAN NOT NULL DEFAULT false,
8
- ADD COLUMN "messageId" TEXT,
9
- ADD COLUMN "schoolDevelopementProgramId" TEXT,
10
- ADD COLUMN "uploadError" TEXT,
11
- ADD COLUMN "uploadExpiresAt" TIMESTAMP(3),
12
- ADD COLUMN "uploadProgress" INTEGER,
13
- ADD COLUMN "uploadRetryCount" INTEGER NOT NULL DEFAULT 0,
14
- ADD COLUMN "uploadSessionId" TEXT,
15
- ADD COLUMN "uploadStatus" "public"."UploadStatus" NOT NULL DEFAULT 'PENDING',
16
- ADD COLUMN "uploadUrl" TEXT;
17
-
18
- -- CreateTable
19
- CREATE TABLE "public"."SchoolDevelopementProgram" (
20
- "id" TEXT NOT NULL,
21
- "name" TEXT NOT NULL,
22
- "type" TEXT NOT NULL,
23
- "address" TEXT NOT NULL,
24
- "city" TEXT NOT NULL,
25
- "country" TEXT NOT NULL,
26
- "numberOfStudents" INTEGER NOT NULL,
27
- "numberOfTeachers" INTEGER NOT NULL,
28
- "website" TEXT,
29
- "contactName" TEXT,
30
- "contactRole" TEXT,
31
- "contactEmail" TEXT,
32
- "contactPhone" TEXT DEFAULT '',
33
- "eligibilityInformation" TEXT,
34
- "whyHelp" TEXT,
35
- "additionalInformation" TEXT,
36
- "submittedAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
37
- "reviewedAt" TIMESTAMP(3),
38
- "status" TEXT NOT NULL DEFAULT 'PENDING',
39
-
40
- CONSTRAINT "SchoolDevelopementProgram_pkey" PRIMARY KEY ("id")
41
- );
42
-
43
- -- CreateTable
44
- CREATE TABLE "public"."EarlyAccessRequest" (
45
- "id" TEXT NOT NULL,
46
- "email" TEXT NOT NULL,
47
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
48
- "institutionSize" TEXT NOT NULL,
49
-
50
- CONSTRAINT "EarlyAccessRequest_pkey" PRIMARY KEY ("id")
51
- );
52
-
53
- -- AddForeignKey
54
- ALTER TABLE "public"."File" ADD CONSTRAINT "File_messageId_fkey" FOREIGN KEY ("messageId") REFERENCES "public"."Message"("id") ON DELETE CASCADE ON UPDATE CASCADE;
55
-
56
- -- AddForeignKey
57
- ALTER TABLE "public"."File" ADD CONSTRAINT "File_schoolDevelopementProgramId_fkey" FOREIGN KEY ("schoolDevelopementProgramId") REFERENCES "public"."SchoolDevelopementProgram"("id") ON DELETE CASCADE ON UPDATE CASCADE;