@studious-lms/server 1.1.26 → 1.2.6

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 (486) hide show
  1. package/.coderabbit.yaml +9 -0
  2. package/.env.example +53 -0
  3. package/.env.test.example +37 -0
  4. package/README.md +34 -7
  5. package/dist/exportType.d.ts.map +1 -1
  6. package/dist/exportType.js +4 -0
  7. package/dist/exportType.js.map +1 -0
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +212 -51
  11. package/dist/index.js.map +1 -0
  12. package/dist/instrument.d.ts +2 -0
  13. package/dist/instrument.d.ts.map +1 -0
  14. package/dist/instrument.js +18 -0
  15. package/dist/instrument.js.map +1 -0
  16. package/dist/lib/config/env.d.ts +190 -0
  17. package/dist/lib/config/env.d.ts.map +1 -0
  18. package/dist/lib/config/env.js +121 -0
  19. package/dist/lib/config/env.js.map +1 -0
  20. package/dist/lib/fileUpload.d.ts +2 -2
  21. package/dist/lib/fileUpload.d.ts.map +1 -1
  22. package/dist/lib/fileUpload.js +15 -5
  23. package/dist/lib/fileUpload.js.map +1 -0
  24. package/dist/lib/googleCloudStorage.d.ts +6 -0
  25. package/dist/lib/googleCloudStorage.d.ts.map +1 -1
  26. package/dist/lib/googleCloudStorage.js +26 -6
  27. package/dist/lib/googleCloudStorage.js.map +1 -0
  28. package/dist/lib/jsonConversion.d.ts.map +1 -1
  29. package/dist/lib/jsonConversion.js +16 -14
  30. package/dist/lib/jsonConversion.js.map +1 -0
  31. package/dist/lib/jsonStyles.d.ts.map +1 -1
  32. package/dist/lib/jsonStyles.js +4 -0
  33. package/dist/lib/jsonStyles.js.map +1 -0
  34. package/dist/lib/notificationHandler.d.ts +2 -2
  35. package/dist/lib/notificationHandler.d.ts.map +1 -1
  36. package/dist/lib/notificationHandler.js +4 -0
  37. package/dist/lib/notificationHandler.js.map +1 -0
  38. package/dist/lib/prisma.d.ts +2 -2
  39. package/dist/lib/prisma.d.ts.map +1 -1
  40. package/dist/lib/prisma.js +24 -1
  41. package/dist/lib/prisma.js.map +1 -0
  42. package/dist/lib/pusher.d.ts +4 -1
  43. package/dist/lib/pusher.d.ts.map +1 -1
  44. package/dist/lib/pusher.js +14 -6
  45. package/dist/lib/pusher.js.map +1 -0
  46. package/dist/lib/redis.d.ts +5 -0
  47. package/dist/lib/redis.d.ts.map +1 -0
  48. package/dist/lib/redis.js +53 -0
  49. package/dist/lib/redis.js.map +1 -0
  50. package/dist/lib/thumbnailGenerator.d.ts +0 -21
  51. package/dist/lib/thumbnailGenerator.d.ts.map +1 -1
  52. package/dist/lib/thumbnailGenerator.js +159 -158
  53. package/dist/lib/thumbnailGenerator.js.map +1 -0
  54. package/dist/middleware/auth.d.ts.map +1 -1
  55. package/dist/middleware/auth.js +41 -93
  56. package/dist/middleware/auth.js.map +1 -0
  57. package/dist/middleware/logging.d.ts.map +1 -1
  58. package/dist/middleware/logging.js +4 -0
  59. package/dist/middleware/logging.js.map +1 -0
  60. package/dist/middleware/security.d.ts +5 -0
  61. package/dist/middleware/security.d.ts.map +1 -0
  62. package/dist/middleware/security.js +77 -0
  63. package/dist/middleware/security.js.map +1 -0
  64. package/dist/models/agenda.d.ts +97 -0
  65. package/dist/models/agenda.d.ts.map +1 -0
  66. package/dist/models/agenda.js +40 -0
  67. package/dist/models/agenda.js.map +1 -0
  68. package/dist/models/announcement.d.ts +223 -0
  69. package/dist/models/announcement.d.ts.map +1 -0
  70. package/dist/models/announcement.js +120 -0
  71. package/dist/models/announcement.js.map +1 -0
  72. package/dist/models/assignment.d.ts +1292 -0
  73. package/dist/models/assignment.d.ts.map +1 -0
  74. package/dist/models/assignment.js +309 -0
  75. package/dist/models/assignment.js.map +1 -0
  76. package/dist/models/attendance.d.ts +180 -0
  77. package/dist/models/attendance.d.ts.map +1 -0
  78. package/dist/models/attendance.js +188 -0
  79. package/dist/models/attendance.js.map +1 -0
  80. package/dist/models/auth.d.ts +153 -0
  81. package/dist/models/auth.d.ts.map +1 -0
  82. package/dist/models/auth.js +217 -0
  83. package/dist/models/auth.js.map +1 -0
  84. package/dist/models/class.d.ts +439 -0
  85. package/dist/models/class.d.ts.map +1 -0
  86. package/dist/models/class.js +546 -0
  87. package/dist/models/class.js.map +1 -0
  88. package/dist/models/comment.d.ts +171 -0
  89. package/dist/models/comment.d.ts.map +1 -0
  90. package/dist/models/comment.js +138 -0
  91. package/dist/models/comment.js.map +1 -0
  92. package/dist/models/conversation.d.ts +164 -0
  93. package/dist/models/conversation.d.ts.map +1 -0
  94. package/dist/models/conversation.js +175 -0
  95. package/dist/models/conversation.js.map +1 -0
  96. package/dist/models/event.d.ts +295 -0
  97. package/dist/models/event.d.ts.map +1 -0
  98. package/dist/models/event.js +145 -0
  99. package/dist/models/event.js.map +1 -0
  100. package/dist/models/file.d.ts +536 -0
  101. package/dist/models/file.d.ts.map +1 -0
  102. package/dist/models/file.js +126 -0
  103. package/dist/models/file.js.map +1 -0
  104. package/dist/models/folder.d.ts +295 -0
  105. package/dist/models/folder.d.ts.map +1 -0
  106. package/dist/models/folder.js +202 -0
  107. package/dist/models/folder.js.map +1 -0
  108. package/dist/models/labChat.d.ts +243 -0
  109. package/dist/models/labChat.d.ts.map +1 -0
  110. package/dist/models/labChat.js +204 -0
  111. package/dist/models/labChat.js.map +1 -0
  112. package/dist/models/marketing.d.ts +72 -0
  113. package/dist/models/marketing.d.ts.map +1 -0
  114. package/dist/models/marketing.js +26 -0
  115. package/dist/models/marketing.js.map +1 -0
  116. package/dist/models/message.d.ts +100 -0
  117. package/dist/models/message.d.ts.map +1 -0
  118. package/dist/models/message.js +131 -0
  119. package/dist/models/message.js.map +1 -0
  120. package/dist/models/newtonChat.d.ts +72 -0
  121. package/dist/models/newtonChat.d.ts.map +1 -0
  122. package/dist/models/newtonChat.js +61 -0
  123. package/dist/models/newtonChat.js.map +1 -0
  124. package/dist/models/notification.d.ts +65 -0
  125. package/dist/models/notification.d.ts.map +1 -0
  126. package/dist/models/notification.js +46 -0
  127. package/dist/models/notification.js.map +1 -0
  128. package/dist/models/section.d.ts +102 -0
  129. package/dist/models/section.d.ts.map +1 -0
  130. package/dist/models/section.js +83 -0
  131. package/dist/models/section.js.map +1 -0
  132. package/dist/models/user.d.ts +39 -0
  133. package/dist/models/user.d.ts.map +1 -0
  134. package/dist/models/user.js +38 -0
  135. package/dist/models/user.js.map +1 -0
  136. package/dist/models/worksheet.d.ts +460 -0
  137. package/dist/models/worksheet.d.ts.map +1 -0
  138. package/dist/models/worksheet.js +200 -0
  139. package/dist/models/worksheet.js.map +1 -0
  140. package/dist/pipelines/aiLabChat.d.ts +21 -0
  141. package/dist/pipelines/aiLabChat.d.ts.map +1 -0
  142. package/dist/pipelines/aiLabChat.js +460 -0
  143. package/dist/pipelines/aiLabChat.js.map +1 -0
  144. package/dist/pipelines/aiNewtonChat.d.ts +30 -0
  145. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -0
  146. package/dist/pipelines/aiNewtonChat.js +289 -0
  147. package/dist/pipelines/aiNewtonChat.js.map +1 -0
  148. package/dist/pipelines/gradeWorksheet.d.ts +30 -0
  149. package/dist/pipelines/gradeWorksheet.d.ts.map +1 -0
  150. package/dist/pipelines/gradeWorksheet.js +252 -0
  151. package/dist/pipelines/gradeWorksheet.js.map +1 -0
  152. package/dist/routers/_app.d.ts +6438 -3910
  153. package/dist/routers/_app.d.ts.map +1 -1
  154. package/dist/routers/_app.js +10 -0
  155. package/dist/routers/_app.js.map +1 -0
  156. package/dist/routers/agenda.d.ts +58 -6
  157. package/dist/routers/agenda.d.ts.map +1 -1
  158. package/dist/routers/agenda.js +6 -58
  159. package/dist/routers/agenda.js.map +1 -0
  160. package/dist/routers/announcement.d.ts +325 -6
  161. package/dist/routers/announcement.d.ts.map +1 -1
  162. package/dist/routers/announcement.js +543 -77
  163. package/dist/routers/announcement.js.map +1 -0
  164. package/dist/routers/assignment.d.ts +419 -357
  165. package/dist/routers/assignment.d.ts.map +1 -1
  166. package/dist/routers/assignment.js +100 -1689
  167. package/dist/routers/assignment.js.map +1 -0
  168. package/dist/routers/attendance.d.ts +20 -9
  169. package/dist/routers/attendance.d.ts.map +1 -1
  170. package/dist/routers/attendance.js +10 -263
  171. package/dist/routers/attendance.js.map +1 -0
  172. package/dist/routers/auth.d.ts +21 -1
  173. package/dist/routers/auth.d.ts.map +1 -1
  174. package/dist/routers/auth.js +37 -241
  175. package/dist/routers/auth.js.map +1 -0
  176. package/dist/routers/class.d.ts +198 -68
  177. package/dist/routers/class.d.ts.map +1 -1
  178. package/dist/routers/class.js +88 -909
  179. package/dist/routers/class.js.map +1 -0
  180. package/dist/routers/comment.d.ts +153 -0
  181. package/dist/routers/comment.d.ts.map +1 -0
  182. package/dist/routers/comment.js +58 -0
  183. package/dist/routers/comment.js.map +1 -0
  184. package/dist/routers/conversation.d.ts +73 -3
  185. package/dist/routers/conversation.d.ts.map +1 -1
  186. package/dist/routers/conversation.js +23 -265
  187. package/dist/routers/conversation.js.map +1 -0
  188. package/dist/routers/event.d.ts +46 -37
  189. package/dist/routers/event.d.ts.map +1 -1
  190. package/dist/routers/event.js +15 -431
  191. package/dist/routers/event.js.map +1 -0
  192. package/dist/routers/file.d.ts +4 -2
  193. package/dist/routers/file.d.ts.map +1 -1
  194. package/dist/routers/file.js +11 -298
  195. package/dist/routers/file.js.map +1 -0
  196. package/dist/routers/folder.d.ts +21 -14
  197. package/dist/routers/folder.d.ts.map +1 -1
  198. package/dist/routers/folder.js +36 -743
  199. package/dist/routers/folder.js.map +1 -0
  200. package/dist/routers/labChat.d.ts +12 -9
  201. package/dist/routers/labChat.d.ts.map +1 -1
  202. package/dist/routers/labChat.js +21 -885
  203. package/dist/routers/labChat.js.map +1 -0
  204. package/dist/routers/marketing.d.ts +2 -2
  205. package/dist/routers/marketing.d.ts.map +1 -1
  206. package/dist/routers/marketing.js +9 -54
  207. package/dist/routers/marketing.js.map +1 -0
  208. package/dist/routers/message.d.ts +2 -1
  209. package/dist/routers/message.d.ts.map +1 -1
  210. package/dist/routers/message.js +29 -519
  211. package/dist/routers/message.js.map +1 -0
  212. package/dist/routers/newtonChat.d.ts +55 -0
  213. package/dist/routers/newtonChat.d.ts.map +1 -0
  214. package/dist/routers/newtonChat.js +22 -0
  215. package/dist/routers/newtonChat.js.map +1 -0
  216. package/dist/routers/notifications.d.ts +8 -8
  217. package/dist/routers/notifications.d.ts.map +1 -1
  218. package/dist/routers/notifications.js +20 -81
  219. package/dist/routers/notifications.js.map +1 -0
  220. package/dist/routers/section.d.ts +23 -8
  221. package/dist/routers/section.d.ts.map +1 -1
  222. package/dist/routers/section.js +23 -273
  223. package/dist/routers/section.js.map +1 -0
  224. package/dist/routers/user.d.ts +1 -1
  225. package/dist/routers/user.d.ts.map +1 -1
  226. package/dist/routers/user.js +34 -204
  227. package/dist/routers/user.js.map +1 -0
  228. package/dist/routers/worksheet.d.ts +362 -0
  229. package/dist/routers/worksheet.d.ts.map +1 -0
  230. package/dist/routers/worksheet.js +153 -0
  231. package/dist/routers/worksheet.js.map +1 -0
  232. package/dist/seedDatabase.d.ts +2 -3
  233. package/dist/seedDatabase.d.ts.map +1 -1
  234. package/dist/seedDatabase.js +309 -288
  235. package/dist/seedDatabase.js.map +1 -0
  236. package/dist/server/pipelines/aiLabChat.d.ts +21 -0
  237. package/dist/server/pipelines/aiLabChat.d.ts.map +1 -0
  238. package/dist/server/pipelines/aiLabChat.js +456 -0
  239. package/dist/server/pipelines/aiLabChat.js.map +1 -0
  240. package/dist/server/pipelines/aiNewtonChat.d.ts +30 -0
  241. package/dist/server/pipelines/aiNewtonChat.d.ts.map +1 -0
  242. package/dist/server/pipelines/aiNewtonChat.js +285 -0
  243. package/dist/server/pipelines/aiNewtonChat.js.map +1 -0
  244. package/dist/server/pipelines/gradeWorksheet.d.ts +30 -0
  245. package/dist/server/pipelines/gradeWorksheet.d.ts.map +1 -0
  246. package/dist/server/pipelines/gradeWorksheet.js +248 -0
  247. package/dist/server/pipelines/gradeWorksheet.js.map +1 -0
  248. package/dist/services/agenda.d.ts +100 -0
  249. package/dist/services/agenda.d.ts.map +1 -0
  250. package/dist/services/agenda.js +21 -0
  251. package/dist/services/agenda.js.map +1 -0
  252. package/dist/services/announcement.d.ts +135 -0
  253. package/dist/services/announcement.d.ts.map +1 -0
  254. package/dist/services/announcement.js +223 -0
  255. package/dist/services/announcement.js.map +1 -0
  256. package/dist/services/assignment.d.ts +1462 -0
  257. package/dist/services/assignment.d.ts.map +1 -0
  258. package/dist/services/assignment.js +898 -0
  259. package/dist/services/assignment.js.map +1 -0
  260. package/dist/services/attendance.d.ts +93 -0
  261. package/dist/services/attendance.d.ts.map +1 -0
  262. package/dist/services/attendance.js +61 -0
  263. package/dist/services/attendance.js.map +1 -0
  264. package/dist/services/auth.d.ts +68 -0
  265. package/dist/services/auth.d.ts.map +1 -0
  266. package/dist/services/auth.js +218 -0
  267. package/dist/services/auth.js.map +1 -0
  268. package/dist/services/class.d.ts +621 -0
  269. package/dist/services/class.d.ts.map +1 -0
  270. package/dist/services/class.js +474 -0
  271. package/dist/services/class.js.map +1 -0
  272. package/dist/services/comment.d.ts +100 -0
  273. package/dist/services/comment.d.ts.map +1 -0
  274. package/dist/services/comment.js +83 -0
  275. package/dist/services/comment.js.map +1 -0
  276. package/dist/services/conversation.d.ts +159 -0
  277. package/dist/services/conversation.d.ts.map +1 -0
  278. package/dist/services/conversation.js +138 -0
  279. package/dist/services/conversation.js.map +1 -0
  280. package/dist/services/event.d.ts +216 -0
  281. package/dist/services/event.d.ts.map +1 -0
  282. package/dist/services/event.js +168 -0
  283. package/dist/services/event.js.map +1 -0
  284. package/dist/services/file.d.ts +74 -0
  285. package/dist/services/file.d.ts.map +1 -0
  286. package/dist/services/file.js +133 -0
  287. package/dist/services/file.js.map +1 -0
  288. package/dist/services/folder.d.ts +239 -0
  289. package/dist/services/folder.d.ts.map +1 -0
  290. package/dist/services/folder.js +248 -0
  291. package/dist/services/folder.js.map +1 -0
  292. package/dist/services/labChat.d.ts +165 -0
  293. package/dist/services/labChat.d.ts.map +1 -0
  294. package/dist/services/labChat.js +289 -0
  295. package/dist/services/labChat.js.map +1 -0
  296. package/dist/services/marketing.d.ts +50 -0
  297. package/dist/services/marketing.d.ts.map +1 -0
  298. package/dist/services/marketing.js +32 -0
  299. package/dist/services/marketing.js.map +1 -0
  300. package/dist/services/message.d.ts +95 -0
  301. package/dist/services/message.d.ts.map +1 -0
  302. package/dist/services/message.js +350 -0
  303. package/dist/services/message.js.map +1 -0
  304. package/dist/services/newtonChat.d.ts +22 -0
  305. package/dist/services/newtonChat.d.ts.map +1 -0
  306. package/dist/services/newtonChat.js +174 -0
  307. package/dist/services/newtonChat.js.map +1 -0
  308. package/dist/services/notification.d.ts +65 -0
  309. package/dist/services/notification.d.ts.map +1 -0
  310. package/dist/services/notification.js +33 -0
  311. package/dist/services/notification.js.map +1 -0
  312. package/dist/services/section.d.ts +53 -0
  313. package/dist/services/section.d.ts.map +1 -0
  314. package/dist/services/section.js +199 -0
  315. package/dist/services/section.js.map +1 -0
  316. package/dist/services/user.d.ts +48 -0
  317. package/dist/services/user.d.ts.map +1 -0
  318. package/dist/services/user.js +141 -0
  319. package/dist/services/user.js.map +1 -0
  320. package/dist/services/worksheet.d.ts +239 -0
  321. package/dist/services/worksheet.d.ts.map +1 -0
  322. package/dist/services/worksheet.js +235 -0
  323. package/dist/services/worksheet.js.map +1 -0
  324. package/dist/socket/handlers.d.ts.map +1 -1
  325. package/dist/socket/handlers.js +4 -0
  326. package/dist/socket/handlers.js.map +1 -0
  327. package/dist/trpc.d.ts.map +1 -1
  328. package/dist/trpc.js +4 -0
  329. package/dist/trpc.js.map +1 -0
  330. package/dist/types/trpc.d.ts.map +1 -1
  331. package/dist/types/trpc.js +4 -0
  332. package/dist/types/trpc.js.map +1 -0
  333. package/dist/utils/aiUser.d.ts +1 -3
  334. package/dist/utils/aiUser.d.ts.map +1 -1
  335. package/dist/utils/aiUser.js +8 -3
  336. package/dist/utils/aiUser.js.map +1 -0
  337. package/dist/utils/email.d.ts +12 -1
  338. package/dist/utils/email.d.ts.map +1 -1
  339. package/dist/utils/email.js +26 -4
  340. package/dist/utils/email.js.map +1 -0
  341. package/dist/utils/generateInviteCode.d.ts +1 -2
  342. package/dist/utils/generateInviteCode.d.ts.map +1 -1
  343. package/dist/utils/generateInviteCode.js +5 -2
  344. package/dist/utils/generateInviteCode.js.map +1 -0
  345. package/dist/utils/inference.d.ts +8 -0
  346. package/dist/utils/inference.d.ts.map +1 -1
  347. package/dist/utils/inference.js +78 -10
  348. package/dist/utils/inference.js.map +1 -0
  349. package/dist/utils/logger.d.ts +3 -0
  350. package/dist/utils/logger.d.ts.map +1 -1
  351. package/dist/utils/logger.js +8 -1
  352. package/dist/utils/logger.js.map +1 -0
  353. package/dist/utils/prismaErrorHandler.d.ts.map +1 -1
  354. package/dist/utils/prismaErrorHandler.js +7 -0
  355. package/dist/utils/prismaErrorHandler.js.map +1 -0
  356. package/dist/utils/prismaWrapper.d.ts +1 -0
  357. package/dist/utils/prismaWrapper.d.ts.map +1 -1
  358. package/dist/utils/prismaWrapper.js +8 -0
  359. package/dist/utils/prismaWrapper.js.map +1 -0
  360. package/docker-compose.yml +19 -0
  361. package/package.json +21 -4
  362. package/prisma/migrations/20251109122857_annuoncements_comments/migration.sql +30 -0
  363. package/prisma/migrations/20251109135555_reactions_announcements_comments/migration.sql +35 -0
  364. package/prisma/schema.prisma +180 -12
  365. package/scripts/test-pre-push.ts +14 -0
  366. package/src/index.ts +247 -52
  367. package/src/instrument.ts +15 -0
  368. package/src/lib/config/env.ts +132 -0
  369. package/src/lib/fileUpload.ts +13 -6
  370. package/src/lib/googleCloudStorage.ts +23 -6
  371. package/src/lib/jsonConversion.ts +12 -14
  372. package/src/lib/prisma.ts +23 -2
  373. package/src/lib/pusher.ts +11 -6
  374. package/src/lib/redis.ts +56 -0
  375. package/src/lib/thumbnailGenerator.ts +170 -168
  376. package/src/middleware/auth.ts +86 -137
  377. package/src/middleware/security.ts +80 -0
  378. package/src/models/agenda.ts +46 -0
  379. package/src/models/announcement.ts +134 -0
  380. package/src/models/assignment.ts +322 -0
  381. package/src/models/attendance.ts +208 -0
  382. package/src/models/auth.ts +247 -0
  383. package/src/models/class.ts +598 -0
  384. package/src/models/comment.ts +152 -0
  385. package/src/models/conversation.ts +200 -0
  386. package/src/models/event.ts +177 -0
  387. package/src/models/file.ts +129 -0
  388. package/src/models/folder.ts +225 -0
  389. package/src/models/labChat.ts +213 -0
  390. package/src/models/marketing.ts +45 -0
  391. package/src/models/message.ts +153 -0
  392. package/src/models/newtonChat.ts +70 -0
  393. package/src/models/notification.ts +54 -0
  394. package/src/models/section.ts +98 -0
  395. package/src/models/user.ts +47 -0
  396. package/src/models/worksheet.ts +294 -0
  397. package/src/pipelines/aiLabChat.ts +511 -0
  398. package/src/pipelines/aiNewtonChat.ts +347 -0
  399. package/src/pipelines/gradeWorksheet.ts +286 -0
  400. package/src/routers/_app.ts +6 -0
  401. package/src/routers/agenda.ts +3 -61
  402. package/src/routers/announcement.ts +616 -79
  403. package/src/routers/assignment.ts +148 -1827
  404. package/src/routers/attendance.ts +16 -277
  405. package/src/routers/auth.ts +79 -313
  406. package/src/routers/class.ts +265 -1038
  407. package/src/routers/comment.ts +76 -0
  408. package/src/routers/conversation.ts +53 -284
  409. package/src/routers/event.ts +50 -481
  410. package/src/routers/file.ts +45 -344
  411. package/src/routers/folder.ts +107 -836
  412. package/src/routers/labChat.ts +29 -969
  413. package/src/routers/marketing.ts +35 -77
  414. package/src/routers/message.ts +45 -571
  415. package/src/routers/newtonChat.ts +36 -0
  416. package/src/routers/notifications.ts +32 -82
  417. package/src/routers/section.ts +58 -322
  418. package/src/routers/user.ts +49 -226
  419. package/src/routers/worksheet.ts +252 -0
  420. package/src/seedDatabase.ts +328 -289
  421. package/src/services/agenda.ts +21 -0
  422. package/src/services/announcement.ts +290 -0
  423. package/src/services/assignment.ts +1198 -0
  424. package/src/services/attendance.ts +85 -0
  425. package/src/services/auth.ts +277 -0
  426. package/src/services/class.ts +622 -0
  427. package/src/services/comment.ts +106 -0
  428. package/src/services/conversation.ts +213 -0
  429. package/src/services/event.ts +231 -0
  430. package/src/services/file.ts +167 -0
  431. package/src/services/folder.ts +316 -0
  432. package/src/services/labChat.ts +352 -0
  433. package/src/services/marketing.ts +57 -0
  434. package/src/services/message.ts +461 -0
  435. package/src/services/newtonChat.ts +222 -0
  436. package/src/services/notification.ts +50 -0
  437. package/src/services/section.ts +283 -0
  438. package/src/services/user.ts +172 -0
  439. package/src/services/worksheet.ts +358 -0
  440. package/src/trpc.ts +4 -0
  441. package/src/utils/aiUser.ts +4 -3
  442. package/src/utils/email.ts +33 -4
  443. package/src/utils/generateInviteCode.ts +1 -3
  444. package/src/utils/inference.ts +89 -10
  445. package/src/utils/logger.ts +4 -1
  446. package/src/utils/prismaErrorHandler.ts +3 -0
  447. package/src/utils/prismaWrapper.ts +4 -0
  448. package/tests/globalSetup.ts +62 -0
  449. package/tests/helpers.ts +22 -0
  450. package/tests/middleware/security.test.ts +42 -0
  451. package/tests/routers/agenda.test.ts +138 -0
  452. package/tests/routers/announcement.test.ts +490 -0
  453. package/tests/routers/assignment.test.ts +837 -0
  454. package/tests/routers/attendance.test.ts +160 -0
  455. package/tests/routers/auth.test.ts +171 -0
  456. package/tests/{class.test.ts → routers/class.test.ts} +163 -92
  457. package/tests/routers/comment.test.ts +126 -0
  458. package/tests/routers/conversation.test.ts +145 -0
  459. package/tests/routers/event.test.ts +289 -0
  460. package/tests/routers/folder.test.ts +178 -0
  461. package/tests/routers/labChat.test.ts +115 -0
  462. package/tests/routers/marketing.test.ts +59 -0
  463. package/tests/routers/message.test.ts +123 -0
  464. package/tests/routers/notification.test.ts +69 -0
  465. package/tests/routers/section.test.ts +208 -0
  466. package/tests/server/rateLimit.test.ts +73 -0
  467. package/tests/setup.ts +39 -59
  468. package/tests/user.test.ts +136 -0
  469. package/tests/utils/aiUser.test.ts +22 -0
  470. package/tests/utils/generateInviteCode.test.ts +24 -0
  471. package/tests/utils/logger.test.ts +74 -0
  472. package/tests/utils/prismaErrorHandler.test.ts +101 -0
  473. package/tests/utils/prismaWrapper.test.ts +82 -0
  474. package/tests/worksheet.test.ts +181 -0
  475. package/tsconfig.json +9 -2
  476. package/vitest.config.ts +30 -1
  477. package/vitest.unit.config.ts +21 -0
  478. package/API_SPECIFICATION.md +0 -1597
  479. package/BASE64_REMOVAL_SUMMARY.md +0 -164
  480. package/CHAT_API_SPEC.md +0 -579
  481. package/LAB_CHAT_API_SPEC.md +0 -518
  482. package/dist/routers/school.d.ts +0 -208
  483. package/dist/routers/school.d.ts.map +0 -1
  484. package/dist/routers/school.js +0 -481
  485. package/src/lib/notificationHandler.ts +0 -36
  486. package/tests/auth.test.ts +0 -25
@@ -0,0 +1,1462 @@
1
+ export declare function assignmentExists(id: string): Promise<boolean>;
2
+ export declare function getDueToday(): Promise<{
3
+ dueDate: string;
4
+ type: import(".prisma/client").$Enums.AssignmentType;
5
+ id: string;
6
+ class: {
7
+ id: string;
8
+ name: string;
9
+ };
10
+ title: string;
11
+ maxGrade: number | null;
12
+ graded: boolean;
13
+ }[]>;
14
+ export declare function getAssignment(id: string, _classId: string): Promise<{
15
+ sections: {
16
+ id: string;
17
+ name: string;
18
+ }[];
19
+ submissions: {
20
+ student: {
21
+ id: string;
22
+ username: string;
23
+ };
24
+ }[];
25
+ class: {
26
+ id: string;
27
+ name: string;
28
+ };
29
+ section: {
30
+ id: string;
31
+ name: string;
32
+ } | null;
33
+ worksheets: {
34
+ id: string;
35
+ name: string;
36
+ }[];
37
+ teacher: {
38
+ id: string;
39
+ username: string;
40
+ };
41
+ attachments: {
42
+ path: string;
43
+ type: string;
44
+ id: string;
45
+ name: string;
46
+ size: number | null;
47
+ uploadedAt: Date | null;
48
+ thumbnailId: string | null;
49
+ }[];
50
+ eventAttached: {
51
+ id: string;
52
+ location: string | null;
53
+ name: string | null;
54
+ color: string | null;
55
+ startTime: Date;
56
+ endTime: Date;
57
+ remarks: string | null;
58
+ } | null;
59
+ markScheme: {
60
+ id: string;
61
+ structured: string;
62
+ } | null;
63
+ gradingBoundary: {
64
+ id: string;
65
+ structured: string;
66
+ } | null;
67
+ type: import(".prisma/client").$Enums.AssignmentType;
68
+ id: string;
69
+ createdAt: Date | null;
70
+ classId: string;
71
+ title: string;
72
+ dueDate: Date;
73
+ maxGrade: number | null;
74
+ eventId: string | null;
75
+ instructions: string;
76
+ modifiedAt: Date | null;
77
+ teacherId: string;
78
+ acceptFiles: boolean;
79
+ acceptExtendedResponse: boolean;
80
+ acceptWorksheet: boolean;
81
+ gradeWithAI: boolean;
82
+ aiPolicyLevel: number;
83
+ sectionId: string | null;
84
+ graded: boolean;
85
+ weight: number;
86
+ inProgress: boolean;
87
+ template: boolean;
88
+ markSchemeId: string | null;
89
+ order: number | null;
90
+ gradingBoundaryId: string | null;
91
+ }>;
92
+ export declare function getSubmission(assignmentId: string, studentId: string): Promise<{
93
+ late: boolean;
94
+ assignment: {
95
+ class: {
96
+ id: string;
97
+ schoolId: string | null;
98
+ name: string;
99
+ subject: string;
100
+ color: string | null;
101
+ section: string;
102
+ syllabus: string | null;
103
+ };
104
+ worksheets: {
105
+ id: string;
106
+ name: string;
107
+ }[];
108
+ markScheme: {
109
+ id: string;
110
+ structured: string;
111
+ } | null;
112
+ gradingBoundary: {
113
+ id: string;
114
+ structured: string;
115
+ } | null;
116
+ } & {
117
+ type: import(".prisma/client").$Enums.AssignmentType;
118
+ id: string;
119
+ createdAt: Date | null;
120
+ classId: string;
121
+ title: string;
122
+ dueDate: Date;
123
+ maxGrade: number | null;
124
+ eventId: string | null;
125
+ instructions: string;
126
+ modifiedAt: Date | null;
127
+ teacherId: string;
128
+ acceptFiles: boolean;
129
+ acceptExtendedResponse: boolean;
130
+ acceptWorksheet: boolean;
131
+ gradeWithAI: boolean;
132
+ aiPolicyLevel: number;
133
+ sectionId: string | null;
134
+ graded: boolean;
135
+ weight: number;
136
+ inProgress: boolean;
137
+ template: boolean;
138
+ markSchemeId: string | null;
139
+ order: number | null;
140
+ gradingBoundaryId: string | null;
141
+ };
142
+ attachments: {
143
+ path: string;
144
+ type: string;
145
+ id: string;
146
+ userId: string | null;
147
+ name: string;
148
+ size: number | null;
149
+ uploadedAt: Date | null;
150
+ assignmentId: string | null;
151
+ submissionId: string | null;
152
+ thumbnailId: string | null;
153
+ annotationId: string | null;
154
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
155
+ uploadUrl: string | null;
156
+ uploadExpiresAt: Date | null;
157
+ uploadSessionId: string | null;
158
+ uploadProgress: number | null;
159
+ uploadError: string | null;
160
+ uploadRetryCount: number;
161
+ isOrphaned: boolean;
162
+ cleanupAt: Date | null;
163
+ classDraftId: string | null;
164
+ folderId: string | null;
165
+ conversationId: string | null;
166
+ messageId: string | null;
167
+ announcementId: string | null;
168
+ schoolDevelopementProgramId: string | null;
169
+ }[];
170
+ student: {
171
+ id: string;
172
+ username: string;
173
+ };
174
+ annotations: {
175
+ path: string;
176
+ type: string;
177
+ id: string;
178
+ userId: string | null;
179
+ name: string;
180
+ size: number | null;
181
+ uploadedAt: Date | null;
182
+ assignmentId: string | null;
183
+ submissionId: string | null;
184
+ thumbnailId: string | null;
185
+ annotationId: string | null;
186
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
187
+ uploadUrl: string | null;
188
+ uploadExpiresAt: Date | null;
189
+ uploadSessionId: string | null;
190
+ uploadProgress: number | null;
191
+ uploadError: string | null;
192
+ uploadRetryCount: number;
193
+ isOrphaned: boolean;
194
+ cleanupAt: Date | null;
195
+ classDraftId: string | null;
196
+ folderId: string | null;
197
+ conversationId: string | null;
198
+ messageId: string | null;
199
+ announcementId: string | null;
200
+ schoolDevelopementProgramId: string | null;
201
+ }[];
202
+ id: string;
203
+ createdAt: Date;
204
+ assignmentId: string;
205
+ modifiedAt: Date;
206
+ studentId: string;
207
+ extendedResponse: string | null;
208
+ gradeReceived: number | null;
209
+ rubricState: string | null;
210
+ teacherComments: string | null;
211
+ submittedAt: Date | null;
212
+ submitted: boolean | null;
213
+ returned: boolean | null;
214
+ }>;
215
+ export declare function getSubmissionById(submissionId: string, classId: string, userId: string): Promise<{
216
+ late: boolean;
217
+ assignment: {
218
+ class: {
219
+ id: string;
220
+ schoolId: string | null;
221
+ name: string;
222
+ subject: string;
223
+ color: string | null;
224
+ section: string;
225
+ syllabus: string | null;
226
+ };
227
+ worksheets: {
228
+ id: string;
229
+ name: string;
230
+ }[];
231
+ markScheme: {
232
+ id: string;
233
+ structured: string;
234
+ } | null;
235
+ gradingBoundary: {
236
+ id: string;
237
+ structured: string;
238
+ } | null;
239
+ } & {
240
+ type: import(".prisma/client").$Enums.AssignmentType;
241
+ id: string;
242
+ createdAt: Date | null;
243
+ classId: string;
244
+ title: string;
245
+ dueDate: Date;
246
+ maxGrade: number | null;
247
+ eventId: string | null;
248
+ instructions: string;
249
+ modifiedAt: Date | null;
250
+ teacherId: string;
251
+ acceptFiles: boolean;
252
+ acceptExtendedResponse: boolean;
253
+ acceptWorksheet: boolean;
254
+ gradeWithAI: boolean;
255
+ aiPolicyLevel: number;
256
+ sectionId: string | null;
257
+ graded: boolean;
258
+ weight: number;
259
+ inProgress: boolean;
260
+ template: boolean;
261
+ markSchemeId: string | null;
262
+ order: number | null;
263
+ gradingBoundaryId: string | null;
264
+ };
265
+ attachments: {
266
+ path: string;
267
+ type: string;
268
+ id: string;
269
+ userId: string | null;
270
+ name: string;
271
+ size: number | null;
272
+ uploadedAt: Date | null;
273
+ assignmentId: string | null;
274
+ submissionId: string | null;
275
+ thumbnailId: string | null;
276
+ annotationId: string | null;
277
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
278
+ uploadUrl: string | null;
279
+ uploadExpiresAt: Date | null;
280
+ uploadSessionId: string | null;
281
+ uploadProgress: number | null;
282
+ uploadError: string | null;
283
+ uploadRetryCount: number;
284
+ isOrphaned: boolean;
285
+ cleanupAt: Date | null;
286
+ classDraftId: string | null;
287
+ folderId: string | null;
288
+ conversationId: string | null;
289
+ messageId: string | null;
290
+ announcementId: string | null;
291
+ schoolDevelopementProgramId: string | null;
292
+ }[];
293
+ student: {
294
+ id: string;
295
+ username: string;
296
+ profile: {
297
+ id: string;
298
+ userId: string;
299
+ displayName: string | null;
300
+ bio: string | null;
301
+ location: string | null;
302
+ website: string | null;
303
+ profilePicture: string | null;
304
+ profilePictureThumbnail: string | null;
305
+ createdAt: Date;
306
+ updatedAt: Date;
307
+ } | null;
308
+ };
309
+ annotations: {
310
+ path: string;
311
+ type: string;
312
+ id: string;
313
+ userId: string | null;
314
+ name: string;
315
+ size: number | null;
316
+ uploadedAt: Date | null;
317
+ assignmentId: string | null;
318
+ submissionId: string | null;
319
+ thumbnailId: string | null;
320
+ annotationId: string | null;
321
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
322
+ uploadUrl: string | null;
323
+ uploadExpiresAt: Date | null;
324
+ uploadSessionId: string | null;
325
+ uploadProgress: number | null;
326
+ uploadError: string | null;
327
+ uploadRetryCount: number;
328
+ isOrphaned: boolean;
329
+ cleanupAt: Date | null;
330
+ classDraftId: string | null;
331
+ folderId: string | null;
332
+ conversationId: string | null;
333
+ messageId: string | null;
334
+ announcementId: string | null;
335
+ schoolDevelopementProgramId: string | null;
336
+ }[];
337
+ id: string;
338
+ createdAt: Date;
339
+ assignmentId: string;
340
+ modifiedAt: Date;
341
+ studentId: string;
342
+ extendedResponse: string | null;
343
+ gradeReceived: number | null;
344
+ rubricState: string | null;
345
+ teacherComments: string | null;
346
+ submittedAt: Date | null;
347
+ submitted: boolean | null;
348
+ returned: boolean | null;
349
+ }>;
350
+ export declare function getSubmissions(assignmentId: string, teacherId: string): Promise<{
351
+ late: boolean;
352
+ assignment: {
353
+ class: {
354
+ id: string;
355
+ schoolId: string | null;
356
+ name: string;
357
+ subject: string;
358
+ color: string | null;
359
+ section: string;
360
+ syllabus: string | null;
361
+ };
362
+ markScheme: {
363
+ id: string;
364
+ structured: string;
365
+ } | null;
366
+ gradingBoundary: {
367
+ id: string;
368
+ structured: string;
369
+ } | null;
370
+ } & {
371
+ type: import(".prisma/client").$Enums.AssignmentType;
372
+ id: string;
373
+ createdAt: Date | null;
374
+ classId: string;
375
+ title: string;
376
+ dueDate: Date;
377
+ maxGrade: number | null;
378
+ eventId: string | null;
379
+ instructions: string;
380
+ modifiedAt: Date | null;
381
+ teacherId: string;
382
+ acceptFiles: boolean;
383
+ acceptExtendedResponse: boolean;
384
+ acceptWorksheet: boolean;
385
+ gradeWithAI: boolean;
386
+ aiPolicyLevel: number;
387
+ sectionId: string | null;
388
+ graded: boolean;
389
+ weight: number;
390
+ inProgress: boolean;
391
+ template: boolean;
392
+ markSchemeId: string | null;
393
+ order: number | null;
394
+ gradingBoundaryId: string | null;
395
+ };
396
+ attachments: ({
397
+ thumbnail: {
398
+ path: string;
399
+ type: string;
400
+ id: string;
401
+ userId: string | null;
402
+ name: string;
403
+ size: number | null;
404
+ uploadedAt: Date | null;
405
+ assignmentId: string | null;
406
+ submissionId: string | null;
407
+ thumbnailId: string | null;
408
+ annotationId: string | null;
409
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
410
+ uploadUrl: string | null;
411
+ uploadExpiresAt: Date | null;
412
+ uploadSessionId: string | null;
413
+ uploadProgress: number | null;
414
+ uploadError: string | null;
415
+ uploadRetryCount: number;
416
+ isOrphaned: boolean;
417
+ cleanupAt: Date | null;
418
+ classDraftId: string | null;
419
+ folderId: string | null;
420
+ conversationId: string | null;
421
+ messageId: string | null;
422
+ announcementId: string | null;
423
+ schoolDevelopementProgramId: string | null;
424
+ } | null;
425
+ } & {
426
+ path: string;
427
+ type: string;
428
+ id: string;
429
+ userId: string | null;
430
+ name: string;
431
+ size: number | null;
432
+ uploadedAt: Date | null;
433
+ assignmentId: string | null;
434
+ submissionId: string | null;
435
+ thumbnailId: string | null;
436
+ annotationId: string | null;
437
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
438
+ uploadUrl: string | null;
439
+ uploadExpiresAt: Date | null;
440
+ uploadSessionId: string | null;
441
+ uploadProgress: number | null;
442
+ uploadError: string | null;
443
+ uploadRetryCount: number;
444
+ isOrphaned: boolean;
445
+ cleanupAt: Date | null;
446
+ classDraftId: string | null;
447
+ folderId: string | null;
448
+ conversationId: string | null;
449
+ messageId: string | null;
450
+ announcementId: string | null;
451
+ schoolDevelopementProgramId: string | null;
452
+ })[];
453
+ student: {
454
+ id: string;
455
+ username: string;
456
+ profile: {
457
+ displayName: string | null;
458
+ profilePicture: string | null;
459
+ profilePictureThumbnail: string | null;
460
+ } | null;
461
+ };
462
+ id: string;
463
+ createdAt: Date;
464
+ assignmentId: string;
465
+ modifiedAt: Date;
466
+ studentId: string;
467
+ extendedResponse: string | null;
468
+ gradeReceived: number | null;
469
+ rubricState: string | null;
470
+ teacherComments: string | null;
471
+ submittedAt: Date | null;
472
+ submitted: boolean | null;
473
+ returned: boolean | null;
474
+ }[]>;
475
+ export declare function createAssignmentRecord(userId: string, input: {
476
+ classId: string;
477
+ id?: string;
478
+ title: string;
479
+ instructions: string;
480
+ dueDate: string;
481
+ files?: {
482
+ name: string;
483
+ type: string;
484
+ size: number;
485
+ }[];
486
+ existingFileIds?: string[];
487
+ aiPolicyLevel?: number;
488
+ acceptFiles?: boolean;
489
+ acceptExtendedResponse?: boolean;
490
+ acceptWorksheet?: boolean;
491
+ worksheetIds?: string[];
492
+ gradeWithAI?: boolean;
493
+ studentIds?: string[];
494
+ maxGrade?: number;
495
+ graded?: boolean;
496
+ weight?: number;
497
+ sectionId?: string;
498
+ type?: string;
499
+ markSchemeId?: string;
500
+ gradingBoundaryId?: string;
501
+ inProgress?: boolean;
502
+ }): Promise<{
503
+ type: import(".prisma/client").$Enums.AssignmentType;
504
+ id: string;
505
+ class: {
506
+ id: string;
507
+ name: string;
508
+ };
509
+ section: {
510
+ id: string;
511
+ name: string;
512
+ } | null;
513
+ title: string;
514
+ dueDate: Date;
515
+ maxGrade: number | null;
516
+ instructions: string;
517
+ graded: boolean;
518
+ weight: number;
519
+ teacher: {
520
+ id: string;
521
+ username: string;
522
+ };
523
+ attachments: {
524
+ type: string;
525
+ id: string;
526
+ name: string;
527
+ }[];
528
+ }>;
529
+ export declare function updateAssignmentRecord(userId: string, input: {
530
+ id: string;
531
+ classId: string;
532
+ title?: string;
533
+ instructions?: string;
534
+ dueDate?: string;
535
+ files?: {
536
+ name: string;
537
+ type: string;
538
+ size: number;
539
+ }[];
540
+ existingFileIds?: string[];
541
+ removedAttachments?: string[];
542
+ worksheetIds?: string[];
543
+ aiPolicyLevel?: number;
544
+ maxGrade?: number;
545
+ graded?: boolean;
546
+ weight?: number;
547
+ sectionId?: string | null;
548
+ type?: string;
549
+ inProgress?: boolean;
550
+ acceptFiles?: boolean;
551
+ acceptExtendedResponse?: boolean;
552
+ acceptWorksheet?: boolean;
553
+ gradeWithAI?: boolean;
554
+ studentIds?: string[];
555
+ }): Promise<{
556
+ type: import(".prisma/client").$Enums.AssignmentType;
557
+ id: string;
558
+ submissions: {
559
+ student: {
560
+ id: string;
561
+ username: string;
562
+ };
563
+ }[];
564
+ createdAt: Date | null;
565
+ class: {
566
+ id: string;
567
+ schoolId: string | null;
568
+ name: string;
569
+ subject: string;
570
+ color: string | null;
571
+ section: string;
572
+ syllabus: string | null;
573
+ };
574
+ section: {
575
+ id: string;
576
+ classId: string;
577
+ name: string;
578
+ color: string | null;
579
+ order: number | null;
580
+ } | null;
581
+ title: string;
582
+ dueDate: Date;
583
+ maxGrade: number | null;
584
+ instructions: string;
585
+ graded: boolean;
586
+ weight: number;
587
+ markSchemeId: string | null;
588
+ teacher: {
589
+ id: string;
590
+ username: string;
591
+ email: string;
592
+ password: string;
593
+ verified: boolean;
594
+ role: import(".prisma/client").$Enums.UserRole;
595
+ schoolId: string | null;
596
+ };
597
+ attachments: {
598
+ path: string;
599
+ type: string;
600
+ id: string;
601
+ name: string;
602
+ size: number | null;
603
+ uploadedAt: Date | null;
604
+ thumbnail: {
605
+ path: string;
606
+ type: string;
607
+ id: string;
608
+ userId: string | null;
609
+ name: string;
610
+ size: number | null;
611
+ uploadedAt: Date | null;
612
+ assignmentId: string | null;
613
+ submissionId: string | null;
614
+ thumbnailId: string | null;
615
+ annotationId: string | null;
616
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
617
+ uploadUrl: string | null;
618
+ uploadExpiresAt: Date | null;
619
+ uploadSessionId: string | null;
620
+ uploadProgress: number | null;
621
+ uploadError: string | null;
622
+ uploadRetryCount: number;
623
+ isOrphaned: boolean;
624
+ cleanupAt: Date | null;
625
+ classDraftId: string | null;
626
+ folderId: string | null;
627
+ conversationId: string | null;
628
+ messageId: string | null;
629
+ announcementId: string | null;
630
+ schoolDevelopementProgramId: string | null;
631
+ } | null;
632
+ thumbnailId: string | null;
633
+ }[];
634
+ }>;
635
+ export declare function deleteAssignmentRecord(userId: string, id: string, _classId: string): Promise<{
636
+ id: string;
637
+ }>;
638
+ export declare function updateSubmissionRecord(userId: string, input: {
639
+ submissionId: string;
640
+ assignmentId: string;
641
+ classId: string;
642
+ submit?: boolean;
643
+ newAttachments?: {
644
+ name: string;
645
+ type: string;
646
+ size: number;
647
+ }[];
648
+ extendedResponse?: string;
649
+ existingFileIds?: string[];
650
+ removedAttachments?: string[];
651
+ }): Promise<{
652
+ assignment: {
653
+ class: {
654
+ id: string;
655
+ schoolId: string | null;
656
+ name: string;
657
+ subject: string;
658
+ color: string | null;
659
+ section: string;
660
+ syllabus: string | null;
661
+ };
662
+ markScheme: {
663
+ id: string;
664
+ structured: string;
665
+ } | null;
666
+ gradingBoundary: {
667
+ id: string;
668
+ structured: string;
669
+ } | null;
670
+ } & {
671
+ type: import(".prisma/client").$Enums.AssignmentType;
672
+ id: string;
673
+ createdAt: Date | null;
674
+ classId: string;
675
+ title: string;
676
+ dueDate: Date;
677
+ maxGrade: number | null;
678
+ eventId: string | null;
679
+ instructions: string;
680
+ modifiedAt: Date | null;
681
+ teacherId: string;
682
+ acceptFiles: boolean;
683
+ acceptExtendedResponse: boolean;
684
+ acceptWorksheet: boolean;
685
+ gradeWithAI: boolean;
686
+ aiPolicyLevel: number;
687
+ sectionId: string | null;
688
+ graded: boolean;
689
+ weight: number;
690
+ inProgress: boolean;
691
+ template: boolean;
692
+ markSchemeId: string | null;
693
+ order: number | null;
694
+ gradingBoundaryId: string | null;
695
+ };
696
+ attachments: {
697
+ path: string;
698
+ type: string;
699
+ id: string;
700
+ userId: string | null;
701
+ name: string;
702
+ size: number | null;
703
+ uploadedAt: Date | null;
704
+ assignmentId: string | null;
705
+ submissionId: string | null;
706
+ thumbnailId: string | null;
707
+ annotationId: string | null;
708
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
709
+ uploadUrl: string | null;
710
+ uploadExpiresAt: Date | null;
711
+ uploadSessionId: string | null;
712
+ uploadProgress: number | null;
713
+ uploadError: string | null;
714
+ uploadRetryCount: number;
715
+ isOrphaned: boolean;
716
+ cleanupAt: Date | null;
717
+ classDraftId: string | null;
718
+ folderId: string | null;
719
+ conversationId: string | null;
720
+ messageId: string | null;
721
+ announcementId: string | null;
722
+ schoolDevelopementProgramId: string | null;
723
+ }[];
724
+ student: {
725
+ id: string;
726
+ username: string;
727
+ };
728
+ } & {
729
+ id: string;
730
+ createdAt: Date;
731
+ assignmentId: string;
732
+ modifiedAt: Date;
733
+ studentId: string;
734
+ extendedResponse: string | null;
735
+ gradeReceived: number | null;
736
+ rubricState: string | null;
737
+ teacherComments: string | null;
738
+ submittedAt: Date | null;
739
+ submitted: boolean | null;
740
+ returned: boolean | null;
741
+ }>;
742
+ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input: {
743
+ submissionId: string;
744
+ assignmentId: string;
745
+ classId: string;
746
+ return?: boolean;
747
+ gradeReceived?: number | null;
748
+ newAttachments?: {
749
+ name: string;
750
+ type: string;
751
+ size: number;
752
+ }[];
753
+ existingFileIds?: string[];
754
+ removedAttachments?: string[];
755
+ rubricGrades?: {
756
+ criteriaId: string;
757
+ selectedLevelId: string;
758
+ points: number;
759
+ comments: string;
760
+ }[];
761
+ feedback?: string;
762
+ }): Promise<{
763
+ assignment: {
764
+ class: {
765
+ id: string;
766
+ schoolId: string | null;
767
+ name: string;
768
+ subject: string;
769
+ color: string | null;
770
+ section: string;
771
+ syllabus: string | null;
772
+ };
773
+ markScheme: {
774
+ id: string;
775
+ structured: string;
776
+ } | null;
777
+ gradingBoundary: {
778
+ id: string;
779
+ structured: string;
780
+ } | null;
781
+ } & {
782
+ type: import(".prisma/client").$Enums.AssignmentType;
783
+ id: string;
784
+ createdAt: Date | null;
785
+ classId: string;
786
+ title: string;
787
+ dueDate: Date;
788
+ maxGrade: number | null;
789
+ eventId: string | null;
790
+ instructions: string;
791
+ modifiedAt: Date | null;
792
+ teacherId: string;
793
+ acceptFiles: boolean;
794
+ acceptExtendedResponse: boolean;
795
+ acceptWorksheet: boolean;
796
+ gradeWithAI: boolean;
797
+ aiPolicyLevel: number;
798
+ sectionId: string | null;
799
+ graded: boolean;
800
+ weight: number;
801
+ inProgress: boolean;
802
+ template: boolean;
803
+ markSchemeId: string | null;
804
+ order: number | null;
805
+ gradingBoundaryId: string | null;
806
+ };
807
+ attachments: ({
808
+ thumbnail: {
809
+ path: string;
810
+ type: string;
811
+ id: string;
812
+ userId: string | null;
813
+ name: string;
814
+ size: number | null;
815
+ uploadedAt: Date | null;
816
+ assignmentId: string | null;
817
+ submissionId: string | null;
818
+ thumbnailId: string | null;
819
+ annotationId: string | null;
820
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
821
+ uploadUrl: string | null;
822
+ uploadExpiresAt: Date | null;
823
+ uploadSessionId: string | null;
824
+ uploadProgress: number | null;
825
+ uploadError: string | null;
826
+ uploadRetryCount: number;
827
+ isOrphaned: boolean;
828
+ cleanupAt: Date | null;
829
+ classDraftId: string | null;
830
+ folderId: string | null;
831
+ conversationId: string | null;
832
+ messageId: string | null;
833
+ announcementId: string | null;
834
+ schoolDevelopementProgramId: string | null;
835
+ } | null;
836
+ } & {
837
+ path: string;
838
+ type: string;
839
+ id: string;
840
+ userId: string | null;
841
+ name: string;
842
+ size: number | null;
843
+ uploadedAt: Date | null;
844
+ assignmentId: string | null;
845
+ submissionId: string | null;
846
+ thumbnailId: string | null;
847
+ annotationId: string | null;
848
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
849
+ uploadUrl: string | null;
850
+ uploadExpiresAt: Date | null;
851
+ uploadSessionId: string | null;
852
+ uploadProgress: number | null;
853
+ uploadError: string | null;
854
+ uploadRetryCount: number;
855
+ isOrphaned: boolean;
856
+ cleanupAt: Date | null;
857
+ classDraftId: string | null;
858
+ folderId: string | null;
859
+ conversationId: string | null;
860
+ messageId: string | null;
861
+ announcementId: string | null;
862
+ schoolDevelopementProgramId: string | null;
863
+ })[];
864
+ student: {
865
+ id: string;
866
+ username: string;
867
+ profile: {
868
+ displayName: string | null;
869
+ profilePicture: string | null;
870
+ profilePictureThumbnail: string | null;
871
+ } | null;
872
+ };
873
+ annotations: ({
874
+ thumbnail: {
875
+ path: string;
876
+ type: string;
877
+ id: string;
878
+ userId: string | null;
879
+ name: string;
880
+ size: number | null;
881
+ uploadedAt: Date | null;
882
+ assignmentId: string | null;
883
+ submissionId: string | null;
884
+ thumbnailId: string | null;
885
+ annotationId: string | null;
886
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
887
+ uploadUrl: string | null;
888
+ uploadExpiresAt: Date | null;
889
+ uploadSessionId: string | null;
890
+ uploadProgress: number | null;
891
+ uploadError: string | null;
892
+ uploadRetryCount: number;
893
+ isOrphaned: boolean;
894
+ cleanupAt: Date | null;
895
+ classDraftId: string | null;
896
+ folderId: string | null;
897
+ conversationId: string | null;
898
+ messageId: string | null;
899
+ announcementId: string | null;
900
+ schoolDevelopementProgramId: string | null;
901
+ } | null;
902
+ } & {
903
+ path: string;
904
+ type: string;
905
+ id: string;
906
+ userId: string | null;
907
+ name: string;
908
+ size: number | null;
909
+ uploadedAt: Date | null;
910
+ assignmentId: string | null;
911
+ submissionId: string | null;
912
+ thumbnailId: string | null;
913
+ annotationId: string | null;
914
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
915
+ uploadUrl: string | null;
916
+ uploadExpiresAt: Date | null;
917
+ uploadSessionId: string | null;
918
+ uploadProgress: number | null;
919
+ uploadError: string | null;
920
+ uploadRetryCount: number;
921
+ isOrphaned: boolean;
922
+ cleanupAt: Date | null;
923
+ classDraftId: string | null;
924
+ folderId: string | null;
925
+ conversationId: string | null;
926
+ messageId: string | null;
927
+ announcementId: string | null;
928
+ schoolDevelopementProgramId: string | null;
929
+ })[];
930
+ } & {
931
+ id: string;
932
+ createdAt: Date;
933
+ assignmentId: string;
934
+ modifiedAt: Date;
935
+ studentId: string;
936
+ extendedResponse: string | null;
937
+ gradeReceived: number | null;
938
+ rubricState: string | null;
939
+ teacherComments: string | null;
940
+ submittedAt: Date | null;
941
+ submitted: boolean | null;
942
+ returned: boolean | null;
943
+ }>;
944
+ export declare function attachAssignmentToEventRecord(teacherId: string, assignmentId: string, eventId: string): Promise<{
945
+ assignment: {
946
+ section: {
947
+ id: string;
948
+ name: string;
949
+ } | null;
950
+ teacher: {
951
+ id: string;
952
+ username: string;
953
+ };
954
+ attachments: {
955
+ type: string;
956
+ id: string;
957
+ name: string;
958
+ }[];
959
+ eventAttached: {
960
+ id: string;
961
+ name: string | null;
962
+ color: string | null;
963
+ startTime: Date;
964
+ endTime: Date;
965
+ } | null;
966
+ } & {
967
+ type: import(".prisma/client").$Enums.AssignmentType;
968
+ id: string;
969
+ createdAt: Date | null;
970
+ classId: string;
971
+ title: string;
972
+ dueDate: Date;
973
+ maxGrade: number | null;
974
+ eventId: string | null;
975
+ instructions: string;
976
+ modifiedAt: Date | null;
977
+ teacherId: string;
978
+ acceptFiles: boolean;
979
+ acceptExtendedResponse: boolean;
980
+ acceptWorksheet: boolean;
981
+ gradeWithAI: boolean;
982
+ aiPolicyLevel: number;
983
+ sectionId: string | null;
984
+ graded: boolean;
985
+ weight: number;
986
+ inProgress: boolean;
987
+ template: boolean;
988
+ markSchemeId: string | null;
989
+ order: number | null;
990
+ gradingBoundaryId: string | null;
991
+ };
992
+ }>;
993
+ export declare function detachAssignmentFromEventRecord(teacherId: string, assignmentId: string): Promise<{
994
+ assignment: {
995
+ section: {
996
+ id: string;
997
+ name: string;
998
+ } | null;
999
+ teacher: {
1000
+ id: string;
1001
+ username: string;
1002
+ };
1003
+ attachments: {
1004
+ type: string;
1005
+ id: string;
1006
+ name: string;
1007
+ }[];
1008
+ eventAttached: {
1009
+ id: string;
1010
+ name: string | null;
1011
+ color: string | null;
1012
+ startTime: Date;
1013
+ endTime: Date;
1014
+ } | null;
1015
+ } & {
1016
+ type: import(".prisma/client").$Enums.AssignmentType;
1017
+ id: string;
1018
+ createdAt: Date | null;
1019
+ classId: string;
1020
+ title: string;
1021
+ dueDate: Date;
1022
+ maxGrade: number | null;
1023
+ eventId: string | null;
1024
+ instructions: string;
1025
+ modifiedAt: Date | null;
1026
+ teacherId: string;
1027
+ acceptFiles: boolean;
1028
+ acceptExtendedResponse: boolean;
1029
+ acceptWorksheet: boolean;
1030
+ gradeWithAI: boolean;
1031
+ aiPolicyLevel: number;
1032
+ sectionId: string | null;
1033
+ graded: boolean;
1034
+ weight: number;
1035
+ inProgress: boolean;
1036
+ template: boolean;
1037
+ markSchemeId: string | null;
1038
+ order: number | null;
1039
+ gradingBoundaryId: string | null;
1040
+ };
1041
+ }>;
1042
+ export declare function getAvailableEventsForAssignment(teacherId: string, assignmentId: string): Promise<{
1043
+ events: {
1044
+ id: string;
1045
+ location: string | null;
1046
+ name: string | null;
1047
+ color: string | null;
1048
+ startTime: Date;
1049
+ endTime: Date;
1050
+ remarks: string | null;
1051
+ }[];
1052
+ }>;
1053
+ export declare function attachMarkSchemeRecord(teacherId: string, assignmentId: string, markSchemeId: string | null): Promise<{
1054
+ section: {
1055
+ id: string;
1056
+ classId: string;
1057
+ name: string;
1058
+ color: string | null;
1059
+ order: number | null;
1060
+ } | null;
1061
+ teacher: {
1062
+ id: string;
1063
+ username: string;
1064
+ email: string;
1065
+ password: string;
1066
+ verified: boolean;
1067
+ role: import(".prisma/client").$Enums.UserRole;
1068
+ schoolId: string | null;
1069
+ };
1070
+ attachments: {
1071
+ path: string;
1072
+ type: string;
1073
+ id: string;
1074
+ userId: string | null;
1075
+ name: string;
1076
+ size: number | null;
1077
+ uploadedAt: Date | null;
1078
+ assignmentId: string | null;
1079
+ submissionId: string | null;
1080
+ thumbnailId: string | null;
1081
+ annotationId: string | null;
1082
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
1083
+ uploadUrl: string | null;
1084
+ uploadExpiresAt: Date | null;
1085
+ uploadSessionId: string | null;
1086
+ uploadProgress: number | null;
1087
+ uploadError: string | null;
1088
+ uploadRetryCount: number;
1089
+ isOrphaned: boolean;
1090
+ cleanupAt: Date | null;
1091
+ classDraftId: string | null;
1092
+ folderId: string | null;
1093
+ conversationId: string | null;
1094
+ messageId: string | null;
1095
+ announcementId: string | null;
1096
+ schoolDevelopementProgramId: string | null;
1097
+ }[];
1098
+ eventAttached: {
1099
+ id: string;
1100
+ userId: string | null;
1101
+ location: string | null;
1102
+ classId: string | null;
1103
+ name: string | null;
1104
+ color: string | null;
1105
+ startTime: Date;
1106
+ endTime: Date;
1107
+ remarks: string | null;
1108
+ } | null;
1109
+ markScheme: {
1110
+ id: string;
1111
+ classId: string;
1112
+ structured: string;
1113
+ } | null;
1114
+ } & {
1115
+ type: import(".prisma/client").$Enums.AssignmentType;
1116
+ id: string;
1117
+ createdAt: Date | null;
1118
+ classId: string;
1119
+ title: string;
1120
+ dueDate: Date;
1121
+ maxGrade: number | null;
1122
+ eventId: string | null;
1123
+ instructions: string;
1124
+ modifiedAt: Date | null;
1125
+ teacherId: string;
1126
+ acceptFiles: boolean;
1127
+ acceptExtendedResponse: boolean;
1128
+ acceptWorksheet: boolean;
1129
+ gradeWithAI: boolean;
1130
+ aiPolicyLevel: number;
1131
+ sectionId: string | null;
1132
+ graded: boolean;
1133
+ weight: number;
1134
+ inProgress: boolean;
1135
+ template: boolean;
1136
+ markSchemeId: string | null;
1137
+ order: number | null;
1138
+ gradingBoundaryId: string | null;
1139
+ }>;
1140
+ export declare function detachMarkSchemeRecord(teacherId: string, assignmentId: string): Promise<{
1141
+ section: {
1142
+ id: string;
1143
+ classId: string;
1144
+ name: string;
1145
+ color: string | null;
1146
+ order: number | null;
1147
+ } | null;
1148
+ teacher: {
1149
+ id: string;
1150
+ username: string;
1151
+ email: string;
1152
+ password: string;
1153
+ verified: boolean;
1154
+ role: import(".prisma/client").$Enums.UserRole;
1155
+ schoolId: string | null;
1156
+ };
1157
+ attachments: {
1158
+ path: string;
1159
+ type: string;
1160
+ id: string;
1161
+ userId: string | null;
1162
+ name: string;
1163
+ size: number | null;
1164
+ uploadedAt: Date | null;
1165
+ assignmentId: string | null;
1166
+ submissionId: string | null;
1167
+ thumbnailId: string | null;
1168
+ annotationId: string | null;
1169
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
1170
+ uploadUrl: string | null;
1171
+ uploadExpiresAt: Date | null;
1172
+ uploadSessionId: string | null;
1173
+ uploadProgress: number | null;
1174
+ uploadError: string | null;
1175
+ uploadRetryCount: number;
1176
+ isOrphaned: boolean;
1177
+ cleanupAt: Date | null;
1178
+ classDraftId: string | null;
1179
+ folderId: string | null;
1180
+ conversationId: string | null;
1181
+ messageId: string | null;
1182
+ announcementId: string | null;
1183
+ schoolDevelopementProgramId: string | null;
1184
+ }[];
1185
+ eventAttached: {
1186
+ id: string;
1187
+ userId: string | null;
1188
+ location: string | null;
1189
+ classId: string | null;
1190
+ name: string | null;
1191
+ color: string | null;
1192
+ startTime: Date;
1193
+ endTime: Date;
1194
+ remarks: string | null;
1195
+ } | null;
1196
+ markScheme: {
1197
+ id: string;
1198
+ classId: string;
1199
+ structured: string;
1200
+ } | null;
1201
+ } & {
1202
+ type: import(".prisma/client").$Enums.AssignmentType;
1203
+ id: string;
1204
+ createdAt: Date | null;
1205
+ classId: string;
1206
+ title: string;
1207
+ dueDate: Date;
1208
+ maxGrade: number | null;
1209
+ eventId: string | null;
1210
+ instructions: string;
1211
+ modifiedAt: Date | null;
1212
+ teacherId: string;
1213
+ acceptFiles: boolean;
1214
+ acceptExtendedResponse: boolean;
1215
+ acceptWorksheet: boolean;
1216
+ gradeWithAI: boolean;
1217
+ aiPolicyLevel: number;
1218
+ sectionId: string | null;
1219
+ graded: boolean;
1220
+ weight: number;
1221
+ inProgress: boolean;
1222
+ template: boolean;
1223
+ markSchemeId: string | null;
1224
+ order: number | null;
1225
+ gradingBoundaryId: string | null;
1226
+ }>;
1227
+ export declare function attachGradingBoundaryRecord(teacherId: string, assignmentId: string, gradingBoundaryId: string | null): Promise<{
1228
+ section: {
1229
+ id: string;
1230
+ classId: string;
1231
+ name: string;
1232
+ color: string | null;
1233
+ order: number | null;
1234
+ } | null;
1235
+ teacher: {
1236
+ id: string;
1237
+ username: string;
1238
+ email: string;
1239
+ password: string;
1240
+ verified: boolean;
1241
+ role: import(".prisma/client").$Enums.UserRole;
1242
+ schoolId: string | null;
1243
+ };
1244
+ attachments: {
1245
+ path: string;
1246
+ type: string;
1247
+ id: string;
1248
+ userId: string | null;
1249
+ name: string;
1250
+ size: number | null;
1251
+ uploadedAt: Date | null;
1252
+ assignmentId: string | null;
1253
+ submissionId: string | null;
1254
+ thumbnailId: string | null;
1255
+ annotationId: string | null;
1256
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
1257
+ uploadUrl: string | null;
1258
+ uploadExpiresAt: Date | null;
1259
+ uploadSessionId: string | null;
1260
+ uploadProgress: number | null;
1261
+ uploadError: string | null;
1262
+ uploadRetryCount: number;
1263
+ isOrphaned: boolean;
1264
+ cleanupAt: Date | null;
1265
+ classDraftId: string | null;
1266
+ folderId: string | null;
1267
+ conversationId: string | null;
1268
+ messageId: string | null;
1269
+ announcementId: string | null;
1270
+ schoolDevelopementProgramId: string | null;
1271
+ }[];
1272
+ eventAttached: {
1273
+ id: string;
1274
+ userId: string | null;
1275
+ location: string | null;
1276
+ classId: string | null;
1277
+ name: string | null;
1278
+ color: string | null;
1279
+ startTime: Date;
1280
+ endTime: Date;
1281
+ remarks: string | null;
1282
+ } | null;
1283
+ gradingBoundary: {
1284
+ id: string;
1285
+ classId: string;
1286
+ structured: string;
1287
+ } | null;
1288
+ } & {
1289
+ type: import(".prisma/client").$Enums.AssignmentType;
1290
+ id: string;
1291
+ createdAt: Date | null;
1292
+ classId: string;
1293
+ title: string;
1294
+ dueDate: Date;
1295
+ maxGrade: number | null;
1296
+ eventId: string | null;
1297
+ instructions: string;
1298
+ modifiedAt: Date | null;
1299
+ teacherId: string;
1300
+ acceptFiles: boolean;
1301
+ acceptExtendedResponse: boolean;
1302
+ acceptWorksheet: boolean;
1303
+ gradeWithAI: boolean;
1304
+ aiPolicyLevel: number;
1305
+ sectionId: string | null;
1306
+ graded: boolean;
1307
+ weight: number;
1308
+ inProgress: boolean;
1309
+ template: boolean;
1310
+ markSchemeId: string | null;
1311
+ order: number | null;
1312
+ gradingBoundaryId: string | null;
1313
+ }>;
1314
+ export declare function detachGradingBoundaryRecord(teacherId: string, assignmentId: string): Promise<{
1315
+ section: {
1316
+ id: string;
1317
+ classId: string;
1318
+ name: string;
1319
+ color: string | null;
1320
+ order: number | null;
1321
+ } | null;
1322
+ teacher: {
1323
+ id: string;
1324
+ username: string;
1325
+ email: string;
1326
+ password: string;
1327
+ verified: boolean;
1328
+ role: import(".prisma/client").$Enums.UserRole;
1329
+ schoolId: string | null;
1330
+ };
1331
+ attachments: {
1332
+ path: string;
1333
+ type: string;
1334
+ id: string;
1335
+ userId: string | null;
1336
+ name: string;
1337
+ size: number | null;
1338
+ uploadedAt: Date | null;
1339
+ assignmentId: string | null;
1340
+ submissionId: string | null;
1341
+ thumbnailId: string | null;
1342
+ annotationId: string | null;
1343
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
1344
+ uploadUrl: string | null;
1345
+ uploadExpiresAt: Date | null;
1346
+ uploadSessionId: string | null;
1347
+ uploadProgress: number | null;
1348
+ uploadError: string | null;
1349
+ uploadRetryCount: number;
1350
+ isOrphaned: boolean;
1351
+ cleanupAt: Date | null;
1352
+ classDraftId: string | null;
1353
+ folderId: string | null;
1354
+ conversationId: string | null;
1355
+ messageId: string | null;
1356
+ announcementId: string | null;
1357
+ schoolDevelopementProgramId: string | null;
1358
+ }[];
1359
+ eventAttached: {
1360
+ id: string;
1361
+ userId: string | null;
1362
+ location: string | null;
1363
+ classId: string | null;
1364
+ name: string | null;
1365
+ color: string | null;
1366
+ startTime: Date;
1367
+ endTime: Date;
1368
+ remarks: string | null;
1369
+ } | null;
1370
+ gradingBoundary: {
1371
+ id: string;
1372
+ classId: string;
1373
+ structured: string;
1374
+ } | null;
1375
+ } & {
1376
+ type: import(".prisma/client").$Enums.AssignmentType;
1377
+ id: string;
1378
+ createdAt: Date | null;
1379
+ classId: string;
1380
+ title: string;
1381
+ dueDate: Date;
1382
+ maxGrade: number | null;
1383
+ eventId: string | null;
1384
+ instructions: string;
1385
+ modifiedAt: Date | null;
1386
+ teacherId: string;
1387
+ acceptFiles: boolean;
1388
+ acceptExtendedResponse: boolean;
1389
+ acceptWorksheet: boolean;
1390
+ gradeWithAI: boolean;
1391
+ aiPolicyLevel: number;
1392
+ sectionId: string | null;
1393
+ graded: boolean;
1394
+ weight: number;
1395
+ inProgress: boolean;
1396
+ template: boolean;
1397
+ markSchemeId: string | null;
1398
+ order: number | null;
1399
+ gradingBoundaryId: string | null;
1400
+ }>;
1401
+ export declare function reorderAssignmentRecord(teacherId: string, input: {
1402
+ classId: string;
1403
+ movedId: string;
1404
+ position: "start" | "end" | "before" | "after";
1405
+ targetId?: string;
1406
+ }): Promise<{
1407
+ type: import(".prisma/client").$Enums.AssignmentType;
1408
+ id: string;
1409
+ createdAt: Date | null;
1410
+ classId: string;
1411
+ title: string;
1412
+ dueDate: Date;
1413
+ maxGrade: number | null;
1414
+ eventId: string | null;
1415
+ instructions: string;
1416
+ modifiedAt: Date | null;
1417
+ teacherId: string;
1418
+ acceptFiles: boolean;
1419
+ acceptExtendedResponse: boolean;
1420
+ acceptWorksheet: boolean;
1421
+ gradeWithAI: boolean;
1422
+ aiPolicyLevel: number;
1423
+ sectionId: string | null;
1424
+ graded: boolean;
1425
+ weight: number;
1426
+ inProgress: boolean;
1427
+ template: boolean;
1428
+ markSchemeId: string | null;
1429
+ order: number | null;
1430
+ gradingBoundaryId: string | null;
1431
+ } | null>;
1432
+ export declare function moveAssignmentRecord(teacherId: string, input: {
1433
+ id: string;
1434
+ classId: string;
1435
+ targetSectionId: string | null;
1436
+ }): Promise<{
1437
+ type: import(".prisma/client").$Enums.AssignmentType;
1438
+ id: string;
1439
+ createdAt: Date | null;
1440
+ classId: string;
1441
+ title: string;
1442
+ dueDate: Date;
1443
+ maxGrade: number | null;
1444
+ eventId: string | null;
1445
+ instructions: string;
1446
+ modifiedAt: Date | null;
1447
+ teacherId: string;
1448
+ acceptFiles: boolean;
1449
+ acceptExtendedResponse: boolean;
1450
+ acceptWorksheet: boolean;
1451
+ gradeWithAI: boolean;
1452
+ aiPolicyLevel: number;
1453
+ sectionId: string | null;
1454
+ graded: boolean;
1455
+ weight: number;
1456
+ inProgress: boolean;
1457
+ template: boolean;
1458
+ markSchemeId: string | null;
1459
+ order: number | null;
1460
+ gradingBoundaryId: string | null;
1461
+ } | null>;
1462
+ //# sourceMappingURL=assignment.d.ts.map