@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
@@ -7,6 +7,8 @@ export declare function getEvent(userId: string, id: string): Promise<{
7
7
  email: string;
8
8
  password: string;
9
9
  verified: boolean;
10
+ termsAcceptedAt: Date | null;
11
+ termsVersion: string | null;
10
12
  schoolId: string | null;
11
13
  } | null;
12
14
  class: ({
@@ -18,24 +20,24 @@ export declare function getEvent(userId: string, id: string): Promise<{
18
20
  userId: string;
19
21
  }[];
20
22
  } & {
21
- name: string;
22
23
  id: string;
24
+ createdAt: Date;
25
+ updatedAt: Date;
26
+ name: string;
23
27
  description: string | null;
24
28
  logoId: string | null;
25
29
  subdomain: string | null;
26
- createdAt: Date;
27
- updatedAt: Date;
28
30
  }) | null;
29
31
  teachers: {
30
32
  id: string;
31
33
  }[];
32
34
  } & {
33
- name: string;
35
+ section: string;
34
36
  id: string;
37
+ name: string;
35
38
  schoolId: string | null;
36
- subject: string;
37
39
  color: string | null;
38
- section: string;
40
+ subject: string;
39
41
  syllabus: string | null;
40
42
  departmentId: string | null;
41
43
  discussionsEnabled: boolean;
@@ -44,36 +46,36 @@ export declare function getEvent(userId: string, id: string): Promise<{
44
46
  }) | null;
45
47
  assignmentsAttached: {
46
48
  type: import(".prisma/client").$Enums.AssignmentType;
47
- id: string;
48
49
  section: {
49
- name: string;
50
50
  id: string;
51
+ name: string;
51
52
  } | null;
53
+ id: string;
52
54
  title: string;
53
- instructions: string;
54
55
  dueDate: Date;
55
- graded: boolean;
56
56
  maxGrade: number | null;
57
+ attachments: {
58
+ type: string;
59
+ id: string;
60
+ name: string;
61
+ }[];
62
+ instructions: string;
63
+ graded: boolean;
57
64
  weight: number;
58
65
  teacher: {
59
66
  id: string;
60
67
  username: string;
61
68
  };
62
- attachments: {
63
- type: string;
64
- name: string;
65
- id: string;
66
- }[];
67
69
  }[];
68
70
  } & {
69
- name: string | null;
70
71
  id: string;
71
72
  userId: string | null;
73
+ location: string | null;
74
+ name: string | null;
72
75
  color: string | null;
73
76
  classId: string | null;
74
77
  startTime: Date;
75
78
  endTime: Date;
76
- location: string | null;
77
79
  remarks: string | null;
78
80
  };
79
81
  }>;
@@ -88,18 +90,18 @@ export declare function createEventRecord(userId: string, input: {
88
90
  color?: string;
89
91
  }): Promise<{
90
92
  event: {
91
- name: string | null;
92
- id: string;
93
- userId: string | null;
94
93
  class: {
95
- name: string;
96
94
  id: string;
95
+ name: string;
97
96
  } | null;
97
+ id: string;
98
+ userId: string | null;
99
+ location: string | null;
100
+ name: string | null;
98
101
  color: string | null;
99
102
  classId: string | null;
100
103
  startTime: Date;
101
104
  endTime: Date;
102
- location: string | null;
103
105
  remarks: string | null;
104
106
  };
105
107
  }>;
@@ -113,14 +115,14 @@ export declare function updateEventRecord(userId: string, id: string, data: {
113
115
  classId?: string;
114
116
  }): Promise<{
115
117
  event: {
116
- name: string | null;
117
118
  id: string;
118
119
  userId: string | null;
120
+ location: string | null;
121
+ name: string | null;
119
122
  color: string | null;
120
123
  classId: string | null;
121
124
  startTime: Date;
122
125
  endTime: Date;
123
- location: string | null;
124
126
  remarks: string | null;
125
127
  };
126
128
  }>;
@@ -130,27 +132,29 @@ export declare function deleteEventRecord(userId: string, id: string): Promise<{
130
132
  export declare function attachAssignment(userId: string, eventId: string, assignmentId: string): Promise<{
131
133
  assignment: {
132
134
  section: {
133
- name: string;
134
135
  id: string;
136
+ name: string;
135
137
  } | null;
136
- teacher: {
137
- id: string;
138
- username: string;
139
- };
140
138
  attachments: {
141
139
  type: string;
142
- name: string;
143
140
  id: string;
141
+ name: string;
144
142
  }[];
143
+ teacher: {
144
+ id: string;
145
+ username: string;
146
+ };
145
147
  } & {
146
148
  type: import(".prisma/client").$Enums.AssignmentType;
147
149
  id: string;
148
150
  createdAt: Date | null;
149
151
  classId: string;
150
- modifiedAt: Date | null;
151
152
  title: string;
152
- instructions: string;
153
153
  dueDate: Date;
154
+ maxGrade: number | null;
155
+ eventId: string | null;
156
+ instructions: string;
157
+ modifiedAt: Date | null;
154
158
  teacherId: string;
155
159
  acceptFiles: boolean;
156
160
  acceptExtendedResponse: boolean;
@@ -159,11 +163,9 @@ export declare function attachAssignment(userId: string, eventId: string, assign
159
163
  aiPolicyLevel: number;
160
164
  sectionId: string | null;
161
165
  graded: boolean;
162
- maxGrade: number | null;
163
166
  weight: number;
164
167
  inProgress: boolean;
165
168
  template: boolean;
166
- eventId: string | null;
167
169
  markSchemeId: string | null;
168
170
  order: number | null;
169
171
  gradingBoundaryId: string | null;
@@ -172,27 +174,29 @@ export declare function attachAssignment(userId: string, eventId: string, assign
172
174
  export declare function detachAssignment(userId: string, eventId: string, assignmentId: string): Promise<{
173
175
  assignment: {
174
176
  section: {
175
- name: string;
176
177
  id: string;
178
+ name: string;
177
179
  } | null;
178
- teacher: {
179
- id: string;
180
- username: string;
181
- };
182
180
  attachments: {
183
181
  type: string;
184
- name: string;
185
182
  id: string;
183
+ name: string;
186
184
  }[];
185
+ teacher: {
186
+ id: string;
187
+ username: string;
188
+ };
187
189
  } & {
188
190
  type: import(".prisma/client").$Enums.AssignmentType;
189
191
  id: string;
190
192
  createdAt: Date | null;
191
193
  classId: string;
192
- modifiedAt: Date | null;
193
194
  title: string;
194
- instructions: string;
195
195
  dueDate: Date;
196
+ maxGrade: number | null;
197
+ eventId: string | null;
198
+ instructions: string;
199
+ modifiedAt: Date | null;
196
200
  teacherId: string;
197
201
  acceptFiles: boolean;
198
202
  acceptExtendedResponse: boolean;
@@ -201,11 +205,9 @@ export declare function detachAssignment(userId: string, eventId: string, assign
201
205
  aiPolicyLevel: number;
202
206
  sectionId: string | null;
203
207
  graded: boolean;
204
- maxGrade: number | null;
205
208
  weight: number;
206
209
  inProgress: boolean;
207
210
  template: boolean;
208
- eventId: string | null;
209
211
  markSchemeId: string | null;
210
212
  order: number | null;
211
213
  gradingBoundaryId: string | null;
@@ -214,26 +216,26 @@ export declare function detachAssignment(userId: string, eventId: string, assign
214
216
  export declare function getAvailableAssignments(userId: string, eventId: string): Promise<{
215
217
  assignments: {
216
218
  type: import(".prisma/client").$Enums.AssignmentType;
217
- id: string;
218
219
  section: {
219
- name: string;
220
220
  id: string;
221
+ name: string;
221
222
  } | null;
223
+ id: string;
222
224
  title: string;
223
- instructions: string;
224
225
  dueDate: Date;
225
- graded: boolean;
226
226
  maxGrade: number | null;
227
+ attachments: {
228
+ type: string;
229
+ id: string;
230
+ name: string;
231
+ }[];
232
+ instructions: string;
233
+ graded: boolean;
227
234
  weight: number;
228
235
  teacher: {
229
236
  id: string;
230
237
  username: string;
231
238
  };
232
- attachments: {
233
- type: string;
234
- name: string;
235
- id: string;
236
- }[];
237
239
  }[];
238
240
  }>;
239
241
  //# sourceMappingURL=event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["services/event.ts"],"names":[],"mappings":"AAmBA,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAexD;AAED,wCAAwC;AACxC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;GAwBF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;GA2BF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;GAiBjE;AAuBD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAkBhB"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["services/event.ts"],"names":[],"mappings":"AAmBA,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAexD;AAED,wCAAwC;AACxC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;GAwBF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;GA2BF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;GAiBjE;AAuBD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAkBhB"}
@@ -27,12 +27,16 @@ export declare function moveFile(fileId: string, targetFolderId: string): Promis
27
27
  } & {
28
28
  path: string;
29
29
  type: string;
30
- name: string;
31
30
  id: string;
32
31
  userId: string | null;
33
- folderId: string | null;
32
+ name: string;
34
33
  size: number | null;
35
34
  uploadedAt: Date | null;
35
+ assignmentId: string | null;
36
+ submissionId: string | null;
37
+ thumbnailId: string | null;
38
+ annotationId: string | null;
39
+ conversationId: string | null;
36
40
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
37
41
  uploadUrl: string | null;
38
42
  uploadExpiresAt: Date | null;
@@ -42,12 +46,8 @@ export declare function moveFile(fileId: string, targetFolderId: string): Promis
42
46
  uploadRetryCount: number;
43
47
  isOrphaned: boolean;
44
48
  cleanupAt: Date | null;
45
- thumbnailId: string | null;
46
- assignmentId: string | null;
47
- submissionId: string | null;
48
- annotationId: string | null;
49
49
  classDraftId: string | null;
50
- conversationId: string | null;
50
+ folderId: string | null;
51
51
  messageId: string | null;
52
52
  announcementId: string | null;
53
53
  discussionId: string | null;
@@ -62,12 +62,16 @@ export declare function renameFile(fileId: string, newName: string): Promise<{
62
62
  } & {
63
63
  path: string;
64
64
  type: string;
65
- name: string;
66
65
  id: string;
67
66
  userId: string | null;
68
- folderId: string | null;
67
+ name: string;
69
68
  size: number | null;
70
69
  uploadedAt: Date | null;
70
+ assignmentId: string | null;
71
+ submissionId: string | null;
72
+ thumbnailId: string | null;
73
+ annotationId: string | null;
74
+ conversationId: string | null;
71
75
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
72
76
  uploadUrl: string | null;
73
77
  uploadExpiresAt: Date | null;
@@ -77,12 +81,8 @@ export declare function renameFile(fileId: string, newName: string): Promise<{
77
81
  uploadRetryCount: number;
78
82
  isOrphaned: boolean;
79
83
  cleanupAt: Date | null;
80
- thumbnailId: string | null;
81
- assignmentId: string | null;
82
- submissionId: string | null;
83
- annotationId: string | null;
84
84
  classDraftId: string | null;
85
- conversationId: string | null;
85
+ folderId: string | null;
86
86
  messageId: string | null;
87
87
  announcementId: string | null;
88
88
  discussionId: string | null;
@@ -107,12 +107,16 @@ export declare function moveFileScoped(userId: string, input: {
107
107
  } & {
108
108
  path: string;
109
109
  type: string;
110
- name: string;
111
110
  id: string;
112
111
  userId: string | null;
113
- folderId: string | null;
112
+ name: string;
114
113
  size: number | null;
115
114
  uploadedAt: Date | null;
115
+ assignmentId: string | null;
116
+ submissionId: string | null;
117
+ thumbnailId: string | null;
118
+ annotationId: string | null;
119
+ conversationId: string | null;
116
120
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
117
121
  uploadUrl: string | null;
118
122
  uploadExpiresAt: Date | null;
@@ -122,12 +126,8 @@ export declare function moveFileScoped(userId: string, input: {
122
126
  uploadRetryCount: number;
123
127
  isOrphaned: boolean;
124
128
  cleanupAt: Date | null;
125
- thumbnailId: string | null;
126
- assignmentId: string | null;
127
- submissionId: string | null;
128
- annotationId: string | null;
129
129
  classDraftId: string | null;
130
- conversationId: string | null;
130
+ folderId: string | null;
131
131
  messageId: string | null;
132
132
  announcementId: string | null;
133
133
  discussionId: string | null;
@@ -146,12 +146,16 @@ export declare function renameFileScoped(userId: string, input: {
146
146
  } & {
147
147
  path: string;
148
148
  type: string;
149
- name: string;
150
149
  id: string;
151
150
  userId: string | null;
152
- folderId: string | null;
151
+ name: string;
153
152
  size: number | null;
154
153
  uploadedAt: Date | null;
154
+ assignmentId: string | null;
155
+ submissionId: string | null;
156
+ thumbnailId: string | null;
157
+ annotationId: string | null;
158
+ conversationId: string | null;
155
159
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
156
160
  uploadUrl: string | null;
157
161
  uploadExpiresAt: Date | null;
@@ -161,12 +165,8 @@ export declare function renameFileScoped(userId: string, input: {
161
165
  uploadRetryCount: number;
162
166
  isOrphaned: boolean;
163
167
  cleanupAt: Date | null;
164
- thumbnailId: string | null;
165
- assignmentId: string | null;
166
- submissionId: string | null;
167
- annotationId: string | null;
168
168
  classDraftId: string | null;
169
- conversationId: string | null;
169
+ folderId: string | null;
170
170
  messageId: string | null;
171
171
  announcementId: string | null;
172
172
  discussionId: string | null;
@@ -36,37 +36,37 @@ export declare function browseFolder(userId: string, input: {
36
36
  files: {
37
37
  path: string;
38
38
  type: string;
39
- name: string;
40
- id: string;
41
39
  user: {
42
40
  id: string;
43
41
  username: string;
44
42
  } | null;
43
+ id: string;
44
+ name: string;
45
45
  size: number | null;
46
46
  uploadedAt: Date | null;
47
47
  }[];
48
48
  childFolders: {
49
- name: string;
50
49
  id: string;
51
- color: string | null;
50
+ name: string;
52
51
  _count: {
53
52
  files: number;
54
53
  childFolders: number;
55
54
  };
55
+ color: string | null;
56
56
  }[];
57
57
  parentFolder: {
58
- name: string;
59
58
  id: string;
59
+ name: string;
60
60
  } | null;
61
61
  } & {
62
- name: string;
63
62
  id: string;
63
+ name: string;
64
+ scope: import(".prisma/client").$Enums.FolderScope;
65
+ parentFolderId: string | null;
64
66
  color: string | null;
65
67
  classId: string | null;
66
68
  schoolStorageId: string | null;
67
69
  personalOwnerId: string | null;
68
- scope: import(".prisma/client").$Enums.FolderScope;
69
- parentFolderId: string | null;
70
70
  };
71
71
  breadcrumbs: {
72
72
  id: string;
@@ -149,87 +149,87 @@ export declare function getRootFolder(userId: string, scope: CloudScope): Promis
149
149
  files: {
150
150
  path: string;
151
151
  type: string;
152
- name: string;
153
- id: string;
154
152
  user: {
155
153
  id: string;
156
154
  username: string;
157
155
  } | null;
156
+ id: string;
157
+ name: string;
158
158
  size: number | null;
159
159
  uploadedAt: Date | null;
160
160
  }[];
161
161
  childFolders: {
162
- name: string;
163
162
  id: string;
164
- color: string | null;
163
+ name: string;
165
164
  _count: {
166
165
  files: number;
167
166
  childFolders: number;
168
167
  };
168
+ color: string | null;
169
169
  }[];
170
170
  parentFolder: {
171
- name: string;
172
171
  id: string;
172
+ name: string;
173
173
  } | null;
174
174
  } & {
175
- name: string;
176
175
  id: string;
176
+ name: string;
177
+ scope: import(".prisma/client").$Enums.FolderScope;
178
+ parentFolderId: string | null;
177
179
  color: string | null;
178
180
  classId: string | null;
179
181
  schoolStorageId: string | null;
180
182
  personalOwnerId: string | null;
181
- scope: import(".prisma/client").$Enums.FolderScope;
182
- parentFolderId: string | null;
183
183
  }>;
184
184
  export declare function getFolder(userId: string, folderId: string): Promise<{
185
185
  files: {
186
186
  path: string;
187
187
  type: string;
188
- name: string;
189
- id: string;
190
188
  user: {
191
189
  id: string;
192
190
  username: string;
193
191
  } | null;
192
+ id: string;
193
+ name: string;
194
194
  size: number | null;
195
195
  uploadedAt: Date | null;
196
196
  }[];
197
197
  childFolders: {
198
- name: string;
199
198
  id: string;
200
- color: string | null;
199
+ name: string;
201
200
  _count: {
202
201
  files: number;
203
202
  childFolders: number;
204
203
  };
204
+ color: string | null;
205
205
  }[];
206
206
  parentFolder: {
207
- name: string;
208
207
  id: string;
208
+ name: string;
209
209
  } | null;
210
210
  } & {
211
- name: string;
212
211
  id: string;
212
+ name: string;
213
+ scope: import(".prisma/client").$Enums.FolderScope;
214
+ parentFolderId: string | null;
213
215
  color: string | null;
214
216
  classId: string | null;
215
217
  schoolStorageId: string | null;
216
218
  personalOwnerId: string | null;
217
- scope: import(".prisma/client").$Enums.FolderScope;
218
- parentFolderId: string | null;
219
219
  }>;
220
220
  export declare function getFolderBreadcrumbs(userId: string, folderId: string): Promise<{
221
221
  id: string;
222
222
  name: string;
223
223
  }[]>;
224
224
  export declare function getFolderParents(userId: string, folderId: string): Promise<({
225
- name: string;
226
225
  id: string;
226
+ name: string;
227
+ scope: import(".prisma/client").$Enums.FolderScope;
228
+ parentFolderId: string | null;
227
229
  color: string | null;
228
230
  classId: string | null;
229
231
  schoolStorageId: string | null;
230
232
  personalOwnerId: string | null;
231
- scope: import(".prisma/client").$Enums.FolderScope;
232
- parentFolderId: string | null;
233
233
  } | null)[]>;
234
234
  export declare function createFolderRecord(userId: string, input: {
235
235
  name: string;
@@ -237,28 +237,28 @@ export declare function createFolderRecord(userId: string, input: {
237
237
  color?: string;
238
238
  scope?: CloudScope;
239
239
  }): Promise<{
240
- name: string;
241
240
  id: string;
241
+ name: string;
242
+ scope: import(".prisma/client").$Enums.FolderScope;
243
+ parentFolderId: string | null;
242
244
  color: string | null;
243
245
  classId: string | null;
244
246
  schoolStorageId: string | null;
245
247
  personalOwnerId: string | null;
246
- scope: import(".prisma/client").$Enums.FolderScope;
247
- parentFolderId: string | null;
248
248
  }>;
249
249
  export declare function updateFolderRecord(userId: string, input: {
250
250
  folderId: string;
251
251
  name?: string;
252
252
  color?: string;
253
253
  }): Promise<{
254
- name: string;
255
254
  id: string;
255
+ name: string;
256
+ scope: import(".prisma/client").$Enums.FolderScope;
257
+ parentFolderId: string | null;
256
258
  color: string | null;
257
259
  classId: string | null;
258
260
  schoolStorageId: string | null;
259
261
  personalOwnerId: string | null;
260
- scope: import(".prisma/client").$Enums.FolderScope;
261
- parentFolderId: string | null;
262
262
  }>;
263
263
  export declare function deleteFolder(userId: string, folderId: string): Promise<{
264
264
  success: boolean;
@@ -293,12 +293,12 @@ export declare function listUserScopes(userId: string): Promise<{
293
293
  role: import(".prisma/client").$Enums.SchoolMembershipRole;
294
294
  }[];
295
295
  classes: {
296
- name: string;
296
+ section: string;
297
297
  id: string;
298
+ name: string;
298
299
  schoolId: string | null;
299
- subject: string;
300
300
  color: string | null;
301
- section: string;
301
+ subject: string;
302
302
  }[];
303
303
  sharedWithMe: {
304
304
  kind: "SHARED_WITH_ME";
@@ -1 +1 @@
1
- {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["services/folder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["services/folder.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,12 @@
11
11
  * endpoints — no duplicate routers.
12
12
  */
13
13
 
14
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="338c145a-d8eb-5931-9a42-2a9c7c9acc94")}catch(e){}}();
14
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0e6d72f8-42d4-50f6-907d-bbab13f2bf3f")}catch(e){}}();
15
15
  import { TRPCError } from "@trpc/server";
16
16
  import { prisma } from "../lib/prisma.js";
17
17
  import { createSubFolder, deleteFolderById, findFolderById, findFolderWithContents, findOrCreateScopeRoot, listFolderBreadcrumbs, renameFolder, resolveFolderScope, } from "../models/cloudStorage.js";
18
18
  import { createDirectUploadFiles, confirmDirectUpload, } from "../lib/fileUpload.js";
19
+ import { enqueueEmbedding } from "./embedding.js";
19
20
  import { getScopeDefault, listSharedWithMe, requireFolderAccess as requireFolderAccessResolved, } from "./permissions.js";
20
21
  /**
21
22
  * Scope-default-only check: used when there is no folder id yet (browsing or
@@ -323,8 +324,37 @@ export async function confirmFolderUpload(_userId, input) {
323
324
  // exists with PENDING status, and the user holds the session id needed to
324
325
  // PUT bytes. Confirming flips status, so we just trust the call.
325
326
  await confirmDirectUpload(input.fileId, input.uploadSuccess, input.errorMessage);
327
+ // Index file for RAG search if it belongs to a class folder
328
+ if (input.uploadSuccess) {
329
+ const file = await prisma.file.findUnique({
330
+ where: { id: input.fileId },
331
+ select: { folderId: true },
332
+ });
333
+ if (file?.folderId) {
334
+ const classId = await resolveFileClassId(file.folderId);
335
+ if (classId) {
336
+ enqueueEmbedding(classId, 'FILE', input.fileId);
337
+ }
338
+ }
339
+ }
326
340
  return { success: true };
327
341
  }
342
+ /** Walk up folder tree to find classId, if any. */
343
+ async function resolveFileClassId(folderId) {
344
+ let currentId = folderId;
345
+ while (currentId) {
346
+ const folder = await prisma.folder.findUnique({
347
+ where: { id: currentId },
348
+ select: { classId: true, parentFolderId: true },
349
+ });
350
+ if (!folder)
351
+ return null;
352
+ if (folder.classId)
353
+ return folder.classId;
354
+ currentId = folder.parentFolderId;
355
+ }
356
+ return null;
357
+ }
328
358
  /** What scopes can this user pick from in cloud-storage UIs? */
329
359
  export async function listUserScopes(userId) {
330
360
  const memberships = await prisma.schoolMembership.findMany({
@@ -375,4 +405,4 @@ export async function listUserScopes(userId) {
375
405
  };
376
406
  }
377
407
  //# sourceMappingURL=folder.js.map
378
- //# debugId=338c145a-d8eb-5931-9a42-2a9c7c9acc94
408
+ //# debugId=0e6d72f8-42d4-50f6-907d-bbab13f2bf3f