@studious-lms/server 1.4.6 → 1.4.9

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 (177) hide show
  1. package/.github/workflows/npm.yml +28 -0
  2. package/dist/models/access.d.ts +112 -0
  3. package/dist/models/access.d.ts.map +1 -0
  4. package/dist/models/access.js +49 -0
  5. package/dist/models/access.js.map +1 -0
  6. package/dist/models/announcement.d.ts +17 -2
  7. package/dist/models/announcement.d.ts.map +1 -1
  8. package/dist/models/announcement.js +21 -4
  9. package/dist/models/announcement.js.map +1 -1
  10. package/dist/models/assignment.d.ts +69 -37
  11. package/dist/models/assignment.d.ts.map +1 -1
  12. package/dist/models/assignment.js +124 -15
  13. package/dist/models/assignment.js.map +1 -1
  14. package/dist/models/attendance.d.ts +1 -1
  15. package/dist/models/attendance.d.ts.map +1 -1
  16. package/dist/models/attendance.js +6 -5
  17. package/dist/models/attendance.js.map +1 -1
  18. package/dist/models/auth.d.ts +5 -5
  19. package/dist/models/auth.d.ts.map +1 -1
  20. package/dist/models/auth.js +7 -11
  21. package/dist/models/auth.js.map +1 -1
  22. package/dist/models/class.d.ts +26 -26
  23. package/dist/models/class.d.ts.map +1 -1
  24. package/dist/models/class.js +7 -11
  25. package/dist/models/class.js.map +1 -1
  26. package/dist/models/comment.d.ts +134 -70
  27. package/dist/models/comment.d.ts.map +1 -1
  28. package/dist/models/comment.js +30 -42
  29. package/dist/models/comment.js.map +1 -1
  30. package/dist/models/conversation.d.ts +7 -7
  31. package/dist/models/event.d.ts +52 -3
  32. package/dist/models/event.d.ts.map +1 -1
  33. package/dist/models/event.js +56 -6
  34. package/dist/models/event.js.map +1 -1
  35. package/dist/models/file.d.ts +178 -103
  36. package/dist/models/file.d.ts.map +1 -1
  37. package/dist/models/file.js +54 -14
  38. package/dist/models/file.js.map +1 -1
  39. package/dist/models/folder.d.ts +22 -22
  40. package/dist/models/folder.d.ts.map +1 -1
  41. package/dist/models/folder.js +5 -4
  42. package/dist/models/folder.js.map +1 -1
  43. package/dist/models/labChat.d.ts +20 -20
  44. package/dist/models/labChat.d.ts.map +1 -1
  45. package/dist/models/labChat.js +8 -10
  46. package/dist/models/labChat.js.map +1 -1
  47. package/dist/models/marketing.d.ts +1 -1
  48. package/dist/models/message.d.ts +6 -6
  49. package/dist/models/newtonChat.d.ts +5 -5
  50. package/dist/models/school.d.ts +361 -0
  51. package/dist/models/school.d.ts.map +1 -0
  52. package/dist/models/school.js +314 -0
  53. package/dist/models/school.js.map +1 -0
  54. package/dist/models/section.d.ts +1 -1
  55. package/dist/models/section.d.ts.map +1 -1
  56. package/dist/models/section.js +5 -4
  57. package/dist/models/section.js.map +1 -1
  58. package/dist/models/user.d.ts +4 -4
  59. package/dist/models/worksheet.d.ts +163 -141
  60. package/dist/models/worksheet.d.ts.map +1 -1
  61. package/dist/models/worksheet.js +42 -17
  62. package/dist/models/worksheet.js.map +1 -1
  63. package/dist/pipelines/gradeWorksheet.d.ts +2 -2
  64. package/dist/pipelines/pdfToWorksheet.d.ts +1 -1
  65. package/dist/routers/_app.d.ts +1271 -327
  66. package/dist/routers/_app.d.ts.map +1 -1
  67. package/dist/routers/_app.js +4 -2
  68. package/dist/routers/_app.js.map +1 -1
  69. package/dist/routers/announcement.d.ts +5 -5
  70. package/dist/routers/announcement.d.ts.map +1 -1
  71. package/dist/routers/announcement.js +25 -5
  72. package/dist/routers/announcement.js.map +1 -1
  73. package/dist/routers/assignment.d.ts +79 -44
  74. package/dist/routers/assignment.d.ts.map +1 -1
  75. package/dist/routers/assignment.js +32 -12
  76. package/dist/routers/assignment.js.map +1 -1
  77. package/dist/routers/class.d.ts +40 -20
  78. package/dist/routers/class.d.ts.map +1 -1
  79. package/dist/routers/class.js +3 -2
  80. package/dist/routers/class.js.map +1 -1
  81. package/dist/routers/comment.d.ts +5 -5
  82. package/dist/routers/conversation.d.ts +6 -6
  83. package/dist/routers/event.d.ts +21 -2
  84. package/dist/routers/event.d.ts.map +1 -1
  85. package/dist/routers/file.d.ts +2 -2
  86. package/dist/routers/folder.d.ts +24 -24
  87. package/dist/routers/labChat.d.ts +7 -7
  88. package/dist/routers/school.d.ts +384 -0
  89. package/dist/routers/school.d.ts.map +1 -0
  90. package/dist/routers/school.js +79 -0
  91. package/dist/routers/school.js.map +1 -0
  92. package/dist/routers/search.d.ts +1 -1
  93. package/dist/routers/worksheet.d.ts +36 -20
  94. package/dist/routers/worksheet.d.ts.map +1 -1
  95. package/dist/routers/worksheet.js +10 -3
  96. package/dist/routers/worksheet.js.map +1 -1
  97. package/dist/services/announcement.d.ts.map +1 -1
  98. package/dist/services/announcement.js +10 -6
  99. package/dist/services/announcement.js.map +1 -1
  100. package/dist/services/assignment.d.ts +66 -36
  101. package/dist/services/assignment.d.ts.map +1 -1
  102. package/dist/services/assignment.js +37 -3
  103. package/dist/services/assignment.js.map +1 -1
  104. package/dist/services/class.d.ts +39 -19
  105. package/dist/services/class.d.ts.map +1 -1
  106. package/dist/services/class.js +52 -15
  107. package/dist/services/class.js.map +1 -1
  108. package/dist/services/comment.d.ts +5 -5
  109. package/dist/services/comment.d.ts.map +1 -1
  110. package/dist/services/comment.js +8 -3
  111. package/dist/services/comment.js.map +1 -1
  112. package/dist/services/conversation.d.ts +6 -6
  113. package/dist/services/event.d.ts +21 -2
  114. package/dist/services/event.d.ts.map +1 -1
  115. package/dist/services/event.js +11 -7
  116. package/dist/services/event.js.map +1 -1
  117. package/dist/services/file.d.ts +2 -2
  118. package/dist/services/file.d.ts.map +1 -1
  119. package/dist/services/file.js +17 -8
  120. package/dist/services/file.js.map +1 -1
  121. package/dist/services/folder.d.ts +24 -24
  122. package/dist/services/labChat.d.ts +7 -7
  123. package/dist/services/school.d.ts +299 -0
  124. package/dist/services/school.d.ts.map +1 -0
  125. package/dist/services/school.js +225 -0
  126. package/dist/services/school.js.map +1 -0
  127. package/dist/services/worksheet.d.ts +31 -20
  128. package/dist/services/worksheet.d.ts.map +1 -1
  129. package/dist/services/worksheet.js +37 -3
  130. package/dist/services/worksheet.js.map +1 -1
  131. package/package.json +1 -1
  132. package/prisma/migrations/20260504071500_school_memberships/migration.sql +81 -0
  133. package/prisma/schema.prisma +66 -2
  134. package/src/models/access.ts +48 -0
  135. package/src/models/announcement.ts +19 -2
  136. package/src/models/assignment.ts +149 -13
  137. package/src/models/attendance.ts +4 -3
  138. package/src/models/auth.ts +8 -9
  139. package/src/models/class.ts +8 -9
  140. package/src/models/comment.ts +29 -40
  141. package/src/models/event.ts +54 -4
  142. package/src/models/file.ts +53 -12
  143. package/src/models/folder.ts +3 -2
  144. package/src/models/labChat.ts +9 -8
  145. package/src/models/school.ts +361 -0
  146. package/src/models/section.ts +3 -2
  147. package/src/models/worksheet.ts +61 -12
  148. package/src/routers/_app.ts +2 -0
  149. package/src/routers/announcement.ts +30 -4
  150. package/src/routers/assignment.ts +46 -9
  151. package/src/routers/class.ts +1 -0
  152. package/src/routers/school.ts +122 -0
  153. package/src/routers/worksheet.ts +18 -0
  154. package/src/services/announcement.ts +12 -4
  155. package/src/services/assignment.ts +47 -1
  156. package/src/services/class.ts +61 -14
  157. package/src/services/comment.ts +10 -1
  158. package/src/services/event.ts +23 -6
  159. package/src/services/file.ts +20 -6
  160. package/src/services/school.ts +308 -0
  161. package/src/services/worksheet.ts +46 -0
  162. package/dist/lib/notificationHandler.d.ts +0 -25
  163. package/dist/lib/notificationHandler.d.ts.map +0 -1
  164. package/dist/lib/notificationHandler.js +0 -32
  165. package/dist/lib/notificationHandler.js.map +0 -1
  166. package/dist/server/pipelines/aiLabChat.d.ts +0 -21
  167. package/dist/server/pipelines/aiLabChat.d.ts.map +0 -1
  168. package/dist/server/pipelines/aiLabChat.js +0 -456
  169. package/dist/server/pipelines/aiLabChat.js.map +0 -1
  170. package/dist/server/pipelines/aiNewtonChat.d.ts +0 -30
  171. package/dist/server/pipelines/aiNewtonChat.d.ts.map +0 -1
  172. package/dist/server/pipelines/aiNewtonChat.js +0 -285
  173. package/dist/server/pipelines/aiNewtonChat.js.map +0 -1
  174. package/dist/server/pipelines/gradeWorksheet.d.ts +0 -30
  175. package/dist/server/pipelines/gradeWorksheet.d.ts.map +0 -1
  176. package/dist/server/pipelines/gradeWorksheet.js +0 -248
  177. package/dist/server/pipelines/gradeWorksheet.js.map +0 -1
@@ -0,0 +1,384 @@
1
+ import { z } from "zod";
2
+ export declare const schoolRouter: import("@trpc/server").TRPCBuiltRouter<{
3
+ ctx: import("../trpc.js").Context;
4
+ meta: object;
5
+ errorShape: {
6
+ data: {
7
+ zodError: z.typeToFlattenedError<any, string> | null;
8
+ prismaError: import("../utils/prismaErrorHandler.js").PrismaErrorInfo | null;
9
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
10
+ httpStatus: number;
11
+ path?: string;
12
+ stack?: string;
13
+ };
14
+ message: string;
15
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
16
+ };
17
+ transformer: false;
18
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
19
+ getCurrent: import("@trpc/server").TRPCQueryProcedure<{
20
+ input: {
21
+ schoolId?: string | undefined;
22
+ } | undefined;
23
+ output: {
24
+ activeSchool: {
25
+ name: string;
26
+ id: string;
27
+ logoId: string | null;
28
+ subdomain: string | null;
29
+ createdAt: Date;
30
+ updatedAt: Date;
31
+ } | null;
32
+ activeRole: import(".prisma/client").$Enums.SchoolMembershipRole | null;
33
+ memberships: ({
34
+ school: {
35
+ name: string;
36
+ id: string;
37
+ logoId: string | null;
38
+ subdomain: string | null;
39
+ createdAt: Date;
40
+ updatedAt: Date;
41
+ };
42
+ } & {
43
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
44
+ id: string;
45
+ createdAt: Date;
46
+ updatedAt: Date;
47
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
48
+ schoolId: string;
49
+ userId: string;
50
+ })[];
51
+ };
52
+ meta: object;
53
+ }>;
54
+ create: import("@trpc/server").TRPCMutationProcedure<{
55
+ input: {
56
+ name: string;
57
+ logoId?: string | undefined;
58
+ subdomain?: string | undefined;
59
+ };
60
+ output: {
61
+ school: {
62
+ memberships: {
63
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
64
+ id: string;
65
+ createdAt: Date;
66
+ updatedAt: Date;
67
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
68
+ schoolId: string;
69
+ userId: string;
70
+ }[];
71
+ } & {
72
+ name: string;
73
+ id: string;
74
+ logoId: string | null;
75
+ subdomain: string | null;
76
+ createdAt: Date;
77
+ updatedAt: Date;
78
+ };
79
+ };
80
+ meta: object;
81
+ }>;
82
+ getAdminOverview: import("@trpc/server").TRPCQueryProcedure<{
83
+ input: {
84
+ schoolId: string;
85
+ };
86
+ output: {
87
+ school: {
88
+ id: string;
89
+ name: string;
90
+ subdomain: string | null;
91
+ counts: {
92
+ ADMIN: number;
93
+ TEACHER: number;
94
+ STUDENT: number;
95
+ classes: number;
96
+ members: number;
97
+ pendingInvites: number;
98
+ };
99
+ recentClasses: {
100
+ name: string;
101
+ id: string;
102
+ subject: string;
103
+ color: string | null;
104
+ section: string;
105
+ _count: {
106
+ teachers: number;
107
+ students: number;
108
+ };
109
+ }[];
110
+ recentInvites: {
111
+ id: string;
112
+ createdAt: Date;
113
+ email: string;
114
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
115
+ expiresAt: Date;
116
+ }[];
117
+ };
118
+ };
119
+ meta: object;
120
+ }>;
121
+ listClasses: import("@trpc/server").TRPCQueryProcedure<{
122
+ input: {
123
+ schoolId: string;
124
+ };
125
+ output: {
126
+ classes: ({
127
+ _count: {
128
+ assignments: number;
129
+ teachers: number;
130
+ students: number;
131
+ };
132
+ teachers: {
133
+ id: string;
134
+ username: string;
135
+ profile: {
136
+ displayName: string | null;
137
+ profilePicture: string | null;
138
+ profilePictureThumbnail: string | null;
139
+ } | null;
140
+ }[];
141
+ students: {
142
+ id: string;
143
+ }[];
144
+ } & {
145
+ name: string;
146
+ id: string;
147
+ schoolId: string | null;
148
+ subject: string;
149
+ color: string | null;
150
+ section: string;
151
+ syllabus: string | null;
152
+ })[];
153
+ };
154
+ meta: object;
155
+ }>;
156
+ createClass: import("@trpc/server").TRPCMutationProcedure<{
157
+ input: {
158
+ name: string;
159
+ schoolId: string;
160
+ subject: string;
161
+ section: string;
162
+ color?: string | undefined;
163
+ teachers?: string[] | undefined;
164
+ students?: string[] | undefined;
165
+ };
166
+ output: {
167
+ class: {
168
+ teachers: {
169
+ id: string;
170
+ username: string;
171
+ email: string;
172
+ password: string;
173
+ verified: boolean;
174
+ role: import(".prisma/client").$Enums.UserRole;
175
+ schoolId: string | null;
176
+ }[];
177
+ students: {
178
+ id: string;
179
+ username: string;
180
+ email: string;
181
+ password: string;
182
+ verified: boolean;
183
+ role: import(".prisma/client").$Enums.UserRole;
184
+ schoolId: string | null;
185
+ }[];
186
+ } & {
187
+ name: string;
188
+ id: string;
189
+ schoolId: string | null;
190
+ subject: string;
191
+ color: string | null;
192
+ section: string;
193
+ syllabus: string | null;
194
+ };
195
+ };
196
+ meta: object;
197
+ }>;
198
+ listMembers: import("@trpc/server").TRPCQueryProcedure<{
199
+ input: {
200
+ schoolId: string;
201
+ };
202
+ output: {
203
+ members: {
204
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
205
+ id: string;
206
+ createdAt: Date;
207
+ updatedAt: Date;
208
+ user: {
209
+ id: string;
210
+ username: string;
211
+ email: string;
212
+ profile: {
213
+ displayName: string | null;
214
+ profilePicture: string | null;
215
+ profilePictureThumbnail: string | null;
216
+ } | null;
217
+ };
218
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
219
+ }[];
220
+ };
221
+ meta: object;
222
+ }>;
223
+ addMember: import("@trpc/server").TRPCMutationProcedure<{
224
+ input: {
225
+ role: "STUDENT" | "TEACHER" | "ADMIN";
226
+ schoolId: string;
227
+ memberUserId: string;
228
+ };
229
+ output: {
230
+ membership: {
231
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
232
+ id: string;
233
+ createdAt: Date;
234
+ updatedAt: Date;
235
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
236
+ schoolId: string;
237
+ userId: string;
238
+ };
239
+ };
240
+ meta: object;
241
+ }>;
242
+ updateMemberRole: import("@trpc/server").TRPCMutationProcedure<{
243
+ input: {
244
+ role: "STUDENT" | "TEACHER" | "ADMIN";
245
+ schoolId: string;
246
+ memberUserId: string;
247
+ };
248
+ output: {
249
+ membership: {
250
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
251
+ id: string;
252
+ createdAt: Date;
253
+ updatedAt: Date;
254
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
255
+ schoolId: string;
256
+ userId: string;
257
+ };
258
+ };
259
+ meta: object;
260
+ }>;
261
+ removeMember: import("@trpc/server").TRPCMutationProcedure<{
262
+ input: {
263
+ schoolId: string;
264
+ memberUserId: string;
265
+ };
266
+ output: {
267
+ success: boolean;
268
+ };
269
+ meta: object;
270
+ }>;
271
+ listInvites: import("@trpc/server").TRPCQueryProcedure<{
272
+ input: {
273
+ schoolId: string;
274
+ };
275
+ output: {
276
+ invites: {
277
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
278
+ id: string;
279
+ createdAt: Date;
280
+ email: string;
281
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
282
+ expiresAt: Date;
283
+ acceptedAt: Date | null;
284
+ revokedAt: Date | null;
285
+ invitedBy: {
286
+ id: string;
287
+ username: string;
288
+ profile: {
289
+ displayName: string | null;
290
+ } | null;
291
+ };
292
+ }[];
293
+ };
294
+ meta: object;
295
+ }>;
296
+ createInvite: import("@trpc/server").TRPCMutationProcedure<{
297
+ input: {
298
+ email: string;
299
+ role: "STUDENT" | "TEACHER" | "ADMIN";
300
+ schoolId: string;
301
+ };
302
+ output: {
303
+ invite: {
304
+ school: {
305
+ name: string;
306
+ id: string;
307
+ };
308
+ } & {
309
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
310
+ id: string;
311
+ createdAt: Date;
312
+ updatedAt: Date;
313
+ email: string;
314
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
315
+ schoolId: string;
316
+ token: string;
317
+ expiresAt: Date;
318
+ acceptedAt: Date | null;
319
+ revokedAt: Date | null;
320
+ invitedById: string;
321
+ };
322
+ };
323
+ meta: object;
324
+ }>;
325
+ revokeInvite: import("@trpc/server").TRPCMutationProcedure<{
326
+ input: {
327
+ schoolId: string;
328
+ inviteId: string;
329
+ };
330
+ output: {
331
+ invite: {
332
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
333
+ id: string;
334
+ createdAt: Date;
335
+ updatedAt: Date;
336
+ email: string;
337
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
338
+ schoolId: string;
339
+ token: string;
340
+ expiresAt: Date;
341
+ acceptedAt: Date | null;
342
+ revokedAt: Date | null;
343
+ invitedById: string;
344
+ };
345
+ };
346
+ meta: object;
347
+ }>;
348
+ getInvite: import("@trpc/server").TRPCQueryProcedure<{
349
+ input: {
350
+ token: string;
351
+ };
352
+ output: {
353
+ invite: {
354
+ id: string;
355
+ email: string;
356
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
357
+ school: {
358
+ name: string;
359
+ id: string;
360
+ };
361
+ expiresAt: Date;
362
+ };
363
+ };
364
+ meta: object;
365
+ }>;
366
+ acceptInvite: import("@trpc/server").TRPCMutationProcedure<{
367
+ input: {
368
+ token: string;
369
+ };
370
+ output: {
371
+ membership: {
372
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
373
+ id: string;
374
+ createdAt: Date;
375
+ updatedAt: Date;
376
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
377
+ schoolId: string;
378
+ userId: string;
379
+ };
380
+ };
381
+ meta: object;
382
+ }>;
383
+ }>>;
384
+ //# sourceMappingURL=school.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"school.d.ts","sourceRoot":"/","sources":["routers/school.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FvB,CAAC"}
@@ -0,0 +1,79 @@
1
+
2
+ !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]="02dca435-d5c2-55f1-abb0-f9865e41f911")}catch(e){}}();
3
+ import { z } from "zod";
4
+ import { createTRPCRouter, protectedProcedure, publicProcedure, } from "../trpc.js";
5
+ import { acceptInvite, addMember, createInvite, createSchoolClass, createSchoolRecord, getAdminOverview, getCurrentSchool, getInvite, listClasses, listInvites, listMembers, removeMember, revokeInvite, updateMemberRole, } from "../services/school.js";
6
+ const schoolRoleSchema = z.enum(["ADMIN", "TEACHER", "STUDENT"]);
7
+ const schoolIdSchema = z.object({
8
+ schoolId: z.string(),
9
+ });
10
+ export const schoolRouter = createTRPCRouter({
11
+ getCurrent: protectedProcedure
12
+ .input(z.object({ schoolId: z.string().optional() }).optional())
13
+ .query(({ ctx, input }) => getCurrentSchool(ctx.user.id, input?.schoolId)),
14
+ create: protectedProcedure
15
+ .input(z.object({
16
+ name: z.string().min(1),
17
+ subdomain: z.string().min(1).optional(),
18
+ logoId: z.string().optional(),
19
+ }))
20
+ .mutation(({ ctx, input }) => createSchoolRecord(ctx.user.id, input)),
21
+ getAdminOverview: protectedProcedure
22
+ .input(schoolIdSchema)
23
+ .query(({ ctx, input }) => getAdminOverview(ctx.user.id, input.schoolId)),
24
+ listClasses: protectedProcedure
25
+ .input(schoolIdSchema)
26
+ .query(({ ctx, input }) => listClasses(ctx.user.id, input.schoolId)),
27
+ createClass: protectedProcedure
28
+ .input(z.object({
29
+ schoolId: z.string(),
30
+ name: z.string(),
31
+ section: z.string(),
32
+ subject: z.string(),
33
+ color: z.string().optional(),
34
+ teachers: z.array(z.string()).optional(),
35
+ students: z.array(z.string()).optional(),
36
+ }))
37
+ .mutation(({ ctx, input }) => createSchoolClass(ctx.user.id, input)),
38
+ listMembers: protectedProcedure
39
+ .input(schoolIdSchema)
40
+ .query(({ ctx, input }) => listMembers(ctx.user.id, input.schoolId)),
41
+ addMember: protectedProcedure
42
+ .input(z.object({
43
+ schoolId: z.string(),
44
+ memberUserId: z.string(),
45
+ role: schoolRoleSchema,
46
+ }))
47
+ .mutation(({ ctx, input }) => addMember(ctx.user.id, input)),
48
+ updateMemberRole: protectedProcedure
49
+ .input(z.object({
50
+ schoolId: z.string(),
51
+ memberUserId: z.string(),
52
+ role: schoolRoleSchema,
53
+ }))
54
+ .mutation(({ ctx, input }) => updateMemberRole(ctx.user.id, input)),
55
+ removeMember: protectedProcedure
56
+ .input(z.object({ schoolId: z.string(), memberUserId: z.string() }))
57
+ .mutation(({ ctx, input }) => removeMember(ctx.user.id, input)),
58
+ listInvites: protectedProcedure
59
+ .input(schoolIdSchema)
60
+ .query(({ ctx, input }) => listInvites(ctx.user.id, input.schoolId)),
61
+ createInvite: protectedProcedure
62
+ .input(z.object({
63
+ schoolId: z.string(),
64
+ email: z.string().email(),
65
+ role: schoolRoleSchema,
66
+ }))
67
+ .mutation(({ ctx, input }) => createInvite(ctx.user.id, input)),
68
+ revokeInvite: protectedProcedure
69
+ .input(z.object({ schoolId: z.string(), inviteId: z.string() }))
70
+ .mutation(({ ctx, input }) => revokeInvite(ctx.user.id, input)),
71
+ getInvite: publicProcedure
72
+ .input(z.object({ token: z.string() }))
73
+ .query(({ input }) => getInvite(input.token)),
74
+ acceptInvite: protectedProcedure
75
+ .input(z.object({ token: z.string() }))
76
+ .mutation(({ ctx, input }) => acceptInvite(ctx.user.id, input.token)),
77
+ });
78
+ //# sourceMappingURL=school.js.map
79
+ //# debugId=02dca435-d5c2-55f1-abb0-f9865e41f911
@@ -0,0 +1 @@
1
+ {"version":3,"file":"school.js","sources":["routers/school.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport {\n createTRPCRouter,\n protectedProcedure,\n publicProcedure,\n} from \"../trpc.js\";\nimport {\n acceptInvite,\n addMember,\n createInvite,\n createSchoolClass,\n createSchoolRecord,\n getAdminOverview,\n getCurrentSchool,\n getInvite,\n listClasses,\n listInvites,\n listMembers,\n removeMember,\n revokeInvite,\n updateMemberRole,\n} from \"../services/school.js\";\n\nconst schoolRoleSchema = z.enum([\"ADMIN\", \"TEACHER\", \"STUDENT\"]);\n\nconst schoolIdSchema = z.object({\n schoolId: z.string(),\n});\n\nexport const schoolRouter = createTRPCRouter({\n getCurrent: protectedProcedure\n .input(z.object({ schoolId: z.string().optional() }).optional())\n .query(({ ctx, input }) =>\n getCurrentSchool(ctx.user!.id, input?.schoolId)\n ),\n\n create: protectedProcedure\n .input(\n z.object({\n name: z.string().min(1),\n subdomain: z.string().min(1).optional(),\n logoId: z.string().optional(),\n })\n )\n .mutation(({ ctx, input }) => createSchoolRecord(ctx.user!.id, input)),\n\n getAdminOverview: protectedProcedure\n .input(schoolIdSchema)\n .query(({ ctx, input }) => getAdminOverview(ctx.user!.id, input.schoolId)),\n\n listClasses: protectedProcedure\n .input(schoolIdSchema)\n .query(({ ctx, input }) => listClasses(ctx.user!.id, input.schoolId)),\n\n createClass: protectedProcedure\n .input(\n z.object({\n schoolId: z.string(),\n name: z.string(),\n section: z.string(),\n subject: z.string(),\n color: z.string().optional(),\n teachers: z.array(z.string()).optional(),\n students: z.array(z.string()).optional(),\n })\n )\n .mutation(({ ctx, input }) => createSchoolClass(ctx.user!.id, input)),\n\n listMembers: protectedProcedure\n .input(schoolIdSchema)\n .query(({ ctx, input }) => listMembers(ctx.user!.id, input.schoolId)),\n\n addMember: protectedProcedure\n .input(\n z.object({\n schoolId: z.string(),\n memberUserId: z.string(),\n role: schoolRoleSchema,\n })\n )\n .mutation(({ ctx, input }) => addMember(ctx.user!.id, input)),\n\n updateMemberRole: protectedProcedure\n .input(\n z.object({\n schoolId: z.string(),\n memberUserId: z.string(),\n role: schoolRoleSchema,\n })\n )\n .mutation(({ ctx, input }) => updateMemberRole(ctx.user!.id, input)),\n\n removeMember: protectedProcedure\n .input(z.object({ schoolId: z.string(), memberUserId: z.string() }))\n .mutation(({ ctx, input }) => removeMember(ctx.user!.id, input)),\n\n listInvites: protectedProcedure\n .input(schoolIdSchema)\n .query(({ ctx, input }) => listInvites(ctx.user!.id, input.schoolId)),\n\n createInvite: protectedProcedure\n .input(\n z.object({\n schoolId: z.string(),\n email: z.string().email(),\n role: schoolRoleSchema,\n })\n )\n .mutation(({ ctx, input }) => createInvite(ctx.user!.id, input)),\n\n revokeInvite: protectedProcedure\n .input(z.object({ schoolId: z.string(), inviteId: z.string() }))\n .mutation(({ ctx, input }) => revokeInvite(ctx.user!.id, input)),\n\n getInvite: publicProcedure\n .input(z.object({ token: z.string() }))\n .query(({ input }) => getInvite(input.token)),\n\n acceptInvite: protectedProcedure\n .input(z.object({ token: z.string() }))\n .mutation(({ ctx, input }) => acceptInvite(ctx.user!.id, input.token)),\n});\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjE,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;IAC3C,UAAU,EAAE,kBAAkB;SAC3B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC/D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CACxB,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAChD;IAEH,MAAM,EAAE,kBAAkB;SACvB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAExE,gBAAgB,EAAE,kBAAkB;SACjC,KAAK,CAAC,cAAc,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE5E,WAAW,EAAE,kBAAkB;SAC5B,KAAK,CAAC,cAAc,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvE,WAAW,EAAE,kBAAkB;SAC5B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEvE,WAAW,EAAE,kBAAkB;SAC5B,KAAK,CAAC,cAAc,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvE,SAAS,EAAE,kBAAkB;SAC1B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,gBAAgB;KACvB,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE/D,gBAAgB,EAAE,kBAAkB;SACjC,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,gBAAgB;KACvB,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,YAAY,EAAE,kBAAkB;SAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACnE,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAElE,WAAW,EAAE,kBAAkB;SAC5B,KAAK,CAAC,cAAc,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvE,YAAY,EAAE,kBAAkB;SAC7B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,gBAAgB;KACvB,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAElE,YAAY,EAAE,kBAAkB;SAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC/D,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAElE,SAAS,EAAE,eAAe;SACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACtC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/C,YAAY,EAAE,kBAAkB;SAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACtC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACzE,CAAC,CAAC","debug_id":"02dca435-d5c2-55f1-abb0-f9865e41f911"}
@@ -25,7 +25,7 @@ export declare const searchRouter: import("@trpc/server").TRPCBuiltRouter<{
25
25
  query: string;
26
26
  results: {
27
27
  id: string;
28
- type: "file" | "class" | "section" | "syllabus" | "assignment" | "event" | "announcement" | "worksheet";
28
+ type: "class" | "section" | "syllabus" | "file" | "assignment" | "announcement" | "event" | "worksheet";
29
29
  title: string;
30
30
  subtitle: string;
31
31
  classId: string;