@studious-lms/server 1.2.45 → 1.2.47
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.
- package/.env.example +45 -0
- package/.env.test.example +37 -0
- package/README.md +34 -7
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +12110 -0
- package/coverage/coverage-final.json +44 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +221 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/server/index.html +116 -0
- package/coverage/server/src/exportType.ts.html +109 -0
- package/coverage/server/src/index.html +161 -0
- package/coverage/server/src/index.ts.html +1702 -0
- package/coverage/server/src/instrument.ts.html +130 -0
- package/coverage/server/src/lib/config/env.ts.html +448 -0
- package/coverage/server/src/lib/config/index.html +116 -0
- package/coverage/server/src/lib/fileUpload.ts.html +1138 -0
- package/coverage/server/src/lib/googleCloudStorage.ts.html +334 -0
- package/coverage/server/src/lib/index.html +206 -0
- package/coverage/server/src/lib/jsonConversion.ts.html +2323 -0
- package/coverage/server/src/lib/jsonStyles.ts.html +193 -0
- package/coverage/server/src/lib/notificationHandler.ts.html +193 -0
- package/coverage/server/src/lib/pusher.ts.html +121 -0
- package/coverage/server/src/lib/thumbnailGenerator.ts.html +592 -0
- package/coverage/server/src/middleware/auth.ts.html +646 -0
- package/coverage/server/src/middleware/index.html +146 -0
- package/coverage/server/src/middleware/logging.ts.html +244 -0
- package/coverage/server/src/middleware/security.ts.html +271 -0
- package/coverage/server/src/routers/_app.ts.html +232 -0
- package/coverage/server/src/routers/agenda.ts.html +319 -0
- package/coverage/server/src/routers/announcement.ts.html +3481 -0
- package/coverage/server/src/routers/assignment.ts.html +7633 -0
- package/coverage/server/src/routers/attendance.ts.html +1030 -0
- package/coverage/server/src/routers/auth.ts.html +1081 -0
- package/coverage/server/src/routers/class.ts.html +3535 -0
- package/coverage/server/src/routers/comment.ts.html +991 -0
- package/coverage/server/src/routers/conversation.ts.html +982 -0
- package/coverage/server/src/routers/event.ts.html +1609 -0
- package/coverage/server/src/routers/file.ts.html +1144 -0
- package/coverage/server/src/routers/folder.ts.html +2797 -0
- package/coverage/server/src/routers/index.html +386 -0
- package/coverage/server/src/routers/labChat.ts.html +3073 -0
- package/coverage/server/src/routers/marketing.ts.html +340 -0
- package/coverage/server/src/routers/message.ts.html +1912 -0
- package/coverage/server/src/routers/notifications.ts.html +364 -0
- package/coverage/server/src/routers/section.ts.html +1120 -0
- package/coverage/server/src/routers/user.ts.html +862 -0
- package/coverage/server/src/routers/worksheet.ts.html +1729 -0
- package/coverage/server/src/trpc.ts.html +397 -0
- package/coverage/server/src/types/index.html +116 -0
- package/coverage/server/src/types/trpc.ts.html +127 -0
- package/coverage/server/src/utils/aiUser.ts.html +280 -0
- package/coverage/server/src/utils/email.ts.html +121 -0
- package/coverage/server/src/utils/generateInviteCode.ts.html +106 -0
- package/coverage/server/src/utils/index.html +206 -0
- package/coverage/server/src/utils/inference.ts.html +709 -0
- package/coverage/server/src/utils/logger.ts.html +664 -0
- package/coverage/server/src/utils/prismaErrorHandler.ts.html +907 -0
- package/coverage/server/src/utils/prismaWrapper.ts.html +355 -0
- package/coverage/server/vitest.config.ts.html +196 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -52
- package/dist/index.js.map +1 -1
- package/dist/instrument.js +15 -8
- package/dist/instrument.js.map +1 -1
- package/dist/lib/config/env.d.ts +169 -0
- package/dist/lib/config/env.d.ts.map +1 -0
- package/dist/lib/config/env.js +115 -0
- package/dist/lib/config/env.js.map +1 -0
- package/dist/lib/fileUpload.d.ts.map +1 -1
- package/dist/lib/fileUpload.js +5 -4
- package/dist/lib/fileUpload.js.map +1 -1
- package/dist/lib/googleCloudStorage.d.ts.map +1 -1
- package/dist/lib/googleCloudStorage.js +7 -8
- package/dist/lib/googleCloudStorage.js.map +1 -1
- package/dist/lib/jsonConversion.d.ts.map +1 -1
- package/dist/lib/jsonConversion.js +14 -16
- package/dist/lib/jsonConversion.js.map +1 -1
- package/dist/lib/notificationHandler.d.ts +2 -2
- package/dist/lib/prisma.d.ts +2 -2
- package/dist/lib/prisma.d.ts.map +1 -1
- package/dist/lib/prisma.js +22 -3
- package/dist/lib/prisma.js.map +1 -1
- package/dist/lib/pusher.d.ts.map +1 -1
- package/dist/lib/pusher.js +8 -7
- package/dist/lib/pusher.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +7 -5
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/security.d.ts +5 -0
- package/dist/middleware/security.d.ts.map +1 -0
- package/dist/middleware/security.js +77 -0
- package/dist/middleware/security.js.map +1 -0
- package/dist/routers/_app.d.ts +368 -108
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/_app.js +4 -2
- package/dist/routers/_app.js.map +1 -1
- package/dist/routers/agenda.d.ts.map +1 -1
- package/dist/routers/agenda.js +12 -9
- package/dist/routers/agenda.js.map +1 -1
- package/dist/routers/announcement.d.ts +8 -0
- package/dist/routers/announcement.d.ts.map +1 -1
- package/dist/routers/announcement.js +6 -4
- package/dist/routers/announcement.js.map +1 -1
- package/dist/routers/assignment.d.ts +17 -4
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +51 -19
- package/dist/routers/assignment.js.map +1 -1
- package/dist/routers/attendance.d.ts +1 -0
- package/dist/routers/attendance.d.ts.map +1 -1
- package/dist/routers/attendance.js +4 -4
- package/dist/routers/attendance.js.map +1 -1
- package/dist/routers/auth.d.ts +20 -0
- package/dist/routers/auth.d.ts.map +1 -1
- package/dist/routers/auth.js +132 -15
- package/dist/routers/auth.js.map +1 -1
- package/dist/routers/class.d.ts +10 -0
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/class.js +49 -5
- package/dist/routers/class.js.map +1 -1
- package/dist/routers/comment.d.ts +2 -0
- package/dist/routers/comment.d.ts.map +1 -1
- package/dist/routers/conversation.d.ts +2 -0
- package/dist/routers/conversation.d.ts.map +1 -1
- package/dist/routers/conversation.js +46 -31
- package/dist/routers/conversation.js.map +1 -1
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/file.js +30 -7
- package/dist/routers/file.js.map +1 -1
- package/dist/routers/labChat.d.ts +2 -0
- package/dist/routers/labChat.d.ts.map +1 -1
- package/dist/routers/labChat.js +5 -322
- package/dist/routers/labChat.js.map +1 -1
- package/dist/routers/marketing.d.ts +1 -1
- package/dist/routers/message.d.ts +1 -0
- package/dist/routers/message.d.ts.map +1 -1
- package/dist/routers/message.js +3 -2
- package/dist/routers/message.js.map +1 -1
- package/dist/routers/newtonChat.d.ts +55 -0
- package/dist/routers/newtonChat.d.ts.map +1 -0
- package/dist/routers/newtonChat.js +262 -0
- package/dist/routers/newtonChat.js.map +1 -0
- package/dist/routers/notifications.d.ts +4 -4
- package/dist/routers/section.d.ts +19 -4
- package/dist/routers/section.d.ts.map +1 -1
- package/dist/routers/section.js +26 -8
- package/dist/routers/section.js.map +1 -1
- package/dist/routers/user.d.ts.map +1 -1
- package/dist/routers/user.js +5 -4
- package/dist/routers/user.js.map +1 -1
- package/dist/routers/worksheet.d.ts +44 -41
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/routers/worksheet.js +25 -34
- package/dist/routers/worksheet.js.map +1 -1
- package/dist/seedDatabase.d.ts +1 -1
- package/dist/seedDatabase.js +275 -284
- package/dist/seedDatabase.js.map +1 -1
- package/dist/server/pipelines/aiLabChat.d.ts +21 -0
- package/dist/server/pipelines/aiLabChat.d.ts.map +1 -0
- package/dist/server/pipelines/aiLabChat.js +456 -0
- package/dist/server/pipelines/aiLabChat.js.map +1 -0
- package/dist/server/pipelines/aiNewtonChat.d.ts +30 -0
- package/dist/server/pipelines/aiNewtonChat.d.ts.map +1 -0
- package/dist/server/pipelines/aiNewtonChat.js +280 -0
- package/dist/server/pipelines/aiNewtonChat.js.map +1 -0
- package/dist/server/pipelines/gradeWorksheet.d.ts +15 -0
- package/dist/server/pipelines/gradeWorksheet.d.ts.map +1 -0
- package/dist/server/pipelines/gradeWorksheet.js +139 -0
- package/dist/server/pipelines/gradeWorksheet.js.map +1 -0
- package/dist/trpc.d.ts.map +1 -1
- package/dist/trpc.js +2 -2
- package/dist/trpc.js.map +1 -1
- package/dist/utils/email.d.ts +9 -1
- package/dist/utils/email.d.ts.map +1 -1
- package/dist/utils/email.js +20 -5
- package/dist/utils/email.js.map +1 -1
- package/dist/utils/inference.d.ts +5 -0
- package/dist/utils/inference.d.ts.map +1 -1
- package/dist/utils/inference.js +71 -7
- package/dist/utils/inference.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -3
- package/dist/utils/logger.js.map +1 -1
- package/docker-compose.yml +14 -0
- package/package.json +13 -4
- package/prisma/schema.prisma +34 -5
- package/scripts/test-pre-push.ts +14 -0
- package/src/index.ts +98 -54
- package/src/instrument.ts +13 -6
- package/src/lib/config/env.ts +126 -0
- package/src/lib/fileUpload.ts +3 -2
- package/src/lib/googleCloudStorage.ts +6 -6
- package/src/lib/jsonConversion.ts +12 -14
- package/src/lib/prisma.ts +23 -2
- package/src/lib/pusher.ts +6 -5
- package/src/middleware/auth.ts +5 -3
- package/src/middleware/security.ts +80 -0
- package/src/routers/_app.ts +2 -0
- package/src/routers/agenda.ts +10 -7
- package/src/routers/announcement.ts +4 -2
- package/src/routers/assignment.ts +74 -41
- package/src/routers/attendance.ts +2 -2
- package/src/routers/auth.ts +143 -14
- package/src/routers/class.ts +52 -3
- package/src/routers/conversation.ts +49 -29
- package/src/routers/file.ts +29 -5
- package/src/routers/labChat.ts +3 -367
- package/src/routers/message.ts +1 -1
- package/src/routers/newtonChat.ts +299 -0
- package/src/routers/section.ts +26 -6
- package/src/routers/user.ts +3 -2
- package/src/routers/worksheet.ts +26 -38
- package/src/seedDatabase.ts +290 -283
- package/src/server/pipelines/aiLabChat.ts +507 -0
- package/src/server/pipelines/aiNewtonChat.ts +338 -0
- package/src/server/pipelines/gradeWorksheet.ts +151 -0
- package/src/trpc.ts +2 -0
- package/src/utils/email.ts +30 -3
- package/src/utils/inference.ts +85 -5
- package/src/utils/logger.ts +2 -1
- package/tests/announcement.test.ts +164 -0
- package/tests/assignment.test.ts +296 -0
- package/tests/attendance.test.ts +168 -0
- package/tests/auth.test.ts +33 -10
- package/tests/class.test.ts +34 -9
- package/tests/event.test.ts +228 -0
- package/tests/section.test.ts +216 -0
- package/tests/setup.ts +70 -16
- package/tests/user.test.ts +158 -0
- package/vitest.config.ts +26 -0
- package/API_SPECIFICATION.md +0 -1597
- package/BASE64_REMOVAL_SUMMARY.md +0 -164
- package/CHAT_API_SPEC.md +0 -579
- package/LAB_CHAT_API_SPEC.md +0 -518
- package/dist/routers/school.d.ts +0 -208
- package/dist/routers/school.d.ts.map +0 -1
- package/dist/routers/school.js +0 -483
|
@@ -88,6 +88,15 @@ export declare const assignmentRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
88
88
|
} | null;
|
|
89
89
|
meta: object;
|
|
90
90
|
}>;
|
|
91
|
+
exists: import("@trpc/server").TRPCQueryProcedure<{
|
|
92
|
+
input: {
|
|
93
|
+
[x: string]: unknown;
|
|
94
|
+
classId: string;
|
|
95
|
+
id: string;
|
|
96
|
+
};
|
|
97
|
+
output: boolean;
|
|
98
|
+
meta: object;
|
|
99
|
+
}>;
|
|
91
100
|
move: import("@trpc/server").TRPCMutationProcedure<{
|
|
92
101
|
input: {
|
|
93
102
|
[x: string]: unknown;
|
|
@@ -125,11 +134,13 @@ export declare const assignmentRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
125
134
|
}>;
|
|
126
135
|
create: import("@trpc/server").TRPCMutationProcedure<{
|
|
127
136
|
input: {
|
|
137
|
+
[x: string]: unknown;
|
|
138
|
+
classId: string;
|
|
128
139
|
title: string;
|
|
129
140
|
dueDate: string;
|
|
130
|
-
classId: string;
|
|
131
141
|
instructions: string;
|
|
132
142
|
type?: "LAB" | "HOMEWORK" | "QUIZ" | "TEST" | "PROJECT" | "ESSAY" | "DISCUSSION" | "PRESENTATION" | "OTHER" | undefined;
|
|
143
|
+
id?: string | undefined;
|
|
133
144
|
files?: {
|
|
134
145
|
type: string;
|
|
135
146
|
name: string;
|
|
@@ -182,8 +193,9 @@ export declare const assignmentRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
182
193
|
}>;
|
|
183
194
|
update: import("@trpc/server").TRPCMutationProcedure<{
|
|
184
195
|
input: {
|
|
185
|
-
|
|
196
|
+
[x: string]: unknown;
|
|
186
197
|
classId: string;
|
|
198
|
+
id: string;
|
|
187
199
|
type?: "LAB" | "HOMEWORK" | "QUIZ" | "TEST" | "PROJECT" | "ESSAY" | "DISCUSSION" | "PRESENTATION" | "OTHER" | undefined;
|
|
188
200
|
files?: {
|
|
189
201
|
type: string;
|
|
@@ -302,8 +314,9 @@ export declare const assignmentRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
302
314
|
}>;
|
|
303
315
|
get: import("@trpc/server").TRPCQueryProcedure<{
|
|
304
316
|
input: {
|
|
305
|
-
|
|
317
|
+
[x: string]: unknown;
|
|
306
318
|
classId: string;
|
|
319
|
+
id: string;
|
|
307
320
|
};
|
|
308
321
|
output: {
|
|
309
322
|
sections: {
|
|
@@ -1048,9 +1061,9 @@ export declare const assignmentRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
1048
1061
|
return?: boolean | undefined;
|
|
1049
1062
|
rubricGrades?: {
|
|
1050
1063
|
comments: string;
|
|
1064
|
+
points: number;
|
|
1051
1065
|
criteriaId: string;
|
|
1052
1066
|
selectedLevelId: string;
|
|
1053
|
-
points: number;
|
|
1054
1067
|
}[] | undefined;
|
|
1055
1068
|
};
|
|
1056
1069
|
output: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["routers/assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAA2B,KAAK,gBAAgB,EAAgE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["routers/assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAA2B,KAAK,gBAAgB,EAAgE,MAAM,sBAAsB,CAAC;AAgNpJ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiyE3B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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]="
|
|
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]="ab676c82-5988-55c9-a90b-a62a2cee20ba")}catch(e){}}();
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { createTRPCRouter, protectedProcedure, protectedClassMemberProcedure, protectedTeacherProcedure } from "../trpc.js";
|
|
5
5
|
import { TRPCError } from "@trpc/server";
|
|
@@ -8,6 +8,7 @@ import { createDirectUploadFiles, confirmDirectUpload, updateUploadProgress } fr
|
|
|
8
8
|
import { deleteFile } from "../lib/googleCloudStorage.js";
|
|
9
9
|
import { sendNotifications } from "../lib/notificationHandler.js";
|
|
10
10
|
import { logger } from "../utils/logger.js";
|
|
11
|
+
import { gradeWorksheetPipeline } from "../server/pipelines/gradeWorksheet.js";
|
|
11
12
|
// DEPRECATED: This schema is no longer used - files are uploaded directly to GCS
|
|
12
13
|
// Use directFileSchema instead
|
|
13
14
|
// New schema for direct file uploads (no base64 data)
|
|
@@ -19,6 +20,7 @@ const directFileSchema = z.object({
|
|
|
19
20
|
});
|
|
20
21
|
const createAssignmentSchema = z.object({
|
|
21
22
|
classId: z.string(),
|
|
23
|
+
id: z.string().optional(),
|
|
22
24
|
title: z.string(),
|
|
23
25
|
instructions: z.string(),
|
|
24
26
|
dueDate: z.string(),
|
|
@@ -281,6 +283,19 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
281
283
|
});
|
|
282
284
|
return updated;
|
|
283
285
|
}),
|
|
286
|
+
exists: protectedClassMemberProcedure
|
|
287
|
+
.input(z.object({
|
|
288
|
+
id: z.string(),
|
|
289
|
+
}))
|
|
290
|
+
.query(async ({ ctx, input }) => {
|
|
291
|
+
if (!ctx.user) {
|
|
292
|
+
throw new TRPCError({ code: 'UNAUTHORIZED', message: 'User must be authenticated' });
|
|
293
|
+
}
|
|
294
|
+
const assignment = await prisma.assignment.findUnique({
|
|
295
|
+
where: { id: input.id },
|
|
296
|
+
});
|
|
297
|
+
return assignment ? true : false;
|
|
298
|
+
}),
|
|
284
299
|
move: protectedTeacherProcedure
|
|
285
300
|
.input(z.object({
|
|
286
301
|
id: z.string(),
|
|
@@ -310,10 +325,10 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
310
325
|
});
|
|
311
326
|
return updated;
|
|
312
327
|
}),
|
|
313
|
-
create:
|
|
328
|
+
create: protectedTeacherProcedure
|
|
314
329
|
.input(createAssignmentSchema)
|
|
315
330
|
.mutation(async ({ ctx, input }) => {
|
|
316
|
-
const { classId, title, instructions, dueDate, files, existingFileIds, aiPolicyLevel, acceptFiles, acceptExtendedResponse, acceptWorksheet, worksheetIds, gradeWithAI, studentIds, maxGrade, graded, weight, sectionId, type, markSchemeId, gradingBoundaryId, inProgress } = input;
|
|
331
|
+
const { classId, id, title, instructions, dueDate, files, existingFileIds, aiPolicyLevel, acceptFiles, acceptExtendedResponse, acceptWorksheet, worksheetIds, gradeWithAI, studentIds, maxGrade, graded, weight, sectionId, type, markSchemeId, gradingBoundaryId, inProgress } = input;
|
|
317
332
|
if (!ctx.user) {
|
|
318
333
|
throw new TRPCError({
|
|
319
334
|
code: "UNAUTHORIZED",
|
|
@@ -352,7 +367,6 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
352
367
|
return acc + maxPoints;
|
|
353
368
|
}, 0);
|
|
354
369
|
}
|
|
355
|
-
console.log(studentIds);
|
|
356
370
|
// Prepare submission data outside transaction
|
|
357
371
|
const submissionData = studentIds && studentIds.length > 0
|
|
358
372
|
? studentIds.map((studentId) => ({
|
|
@@ -367,6 +381,7 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
367
381
|
// Create assignment with order 0 (will be at top)
|
|
368
382
|
const created = await tx.assignment.create({
|
|
369
383
|
data: {
|
|
384
|
+
...(id && { id }),
|
|
370
385
|
title,
|
|
371
386
|
instructions,
|
|
372
387
|
dueDate: new Date(dueDate),
|
|
@@ -528,7 +543,7 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
528
543
|
});
|
|
529
544
|
return assignment;
|
|
530
545
|
}),
|
|
531
|
-
update:
|
|
546
|
+
update: protectedTeacherProcedure
|
|
532
547
|
.input(updateAssignmentSchema)
|
|
533
548
|
.mutation(async ({ ctx, input }) => {
|
|
534
549
|
const { id, title, instructions, dueDate, files, existingFileIds, worksheetIds, aiPolicyLevel, maxGrade, graded, weight, sectionId, type, inProgress, acceptFiles, acceptExtendedResponse, acceptWorksheet, gradeWithAI, studentIds } = input;
|
|
@@ -835,7 +850,7 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
835
850
|
id,
|
|
836
851
|
};
|
|
837
852
|
}),
|
|
838
|
-
get:
|
|
853
|
+
get: protectedClassMemberProcedure
|
|
839
854
|
.input(getAssignmentSchema)
|
|
840
855
|
.query(async ({ ctx, input }) => {
|
|
841
856
|
const { id, classId } = input;
|
|
@@ -1035,18 +1050,12 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
1035
1050
|
late: submission.assignment.dueDate < new Date(),
|
|
1036
1051
|
};
|
|
1037
1052
|
}),
|
|
1038
|
-
getSubmissionById:
|
|
1053
|
+
getSubmissionById: protectedClassMemberProcedure
|
|
1039
1054
|
.input(z.object({
|
|
1040
|
-
submissionId: z.string(),
|
|
1041
1055
|
classId: z.string(),
|
|
1056
|
+
submissionId: z.string(),
|
|
1042
1057
|
}))
|
|
1043
1058
|
.query(async ({ ctx, input }) => {
|
|
1044
|
-
if (!ctx.user) {
|
|
1045
|
-
throw new TRPCError({
|
|
1046
|
-
code: "UNAUTHORIZED",
|
|
1047
|
-
message: "User must be authenticated",
|
|
1048
|
-
});
|
|
1049
|
-
}
|
|
1050
1059
|
const { submissionId, classId } = input;
|
|
1051
1060
|
const submission = await prisma.submission.findFirst({
|
|
1052
1061
|
where: {
|
|
@@ -1054,11 +1063,22 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
1054
1063
|
assignment: {
|
|
1055
1064
|
classId,
|
|
1056
1065
|
class: {
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1066
|
+
OR: [
|
|
1067
|
+
{
|
|
1068
|
+
teachers: {
|
|
1069
|
+
some: {
|
|
1070
|
+
id: ctx.user?.id
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
students: {
|
|
1076
|
+
some: {
|
|
1077
|
+
id: ctx.user?.id
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1060
1080
|
}
|
|
1061
|
-
|
|
1081
|
+
],
|
|
1062
1082
|
}
|
|
1063
1083
|
},
|
|
1064
1084
|
},
|
|
@@ -1173,6 +1193,18 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
1173
1193
|
}
|
|
1174
1194
|
if (submit !== undefined) {
|
|
1175
1195
|
// Toggle submission status
|
|
1196
|
+
if (submission.assignment.acceptWorksheet && submission.assignment.gradeWithAI) {
|
|
1197
|
+
// Grade the submission with AI
|
|
1198
|
+
const worksheetResponses = await prisma.studentWorksheetResponse.findMany({
|
|
1199
|
+
where: {
|
|
1200
|
+
submissionId: submission.id,
|
|
1201
|
+
},
|
|
1202
|
+
});
|
|
1203
|
+
for (const worksheetResponse of worksheetResponses) {
|
|
1204
|
+
// Run it in the background, non-blocking
|
|
1205
|
+
gradeWorksheetPipeline(worksheetResponse.id);
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1176
1208
|
return await prisma.submission.update({
|
|
1177
1209
|
where: { id: submission.id },
|
|
1178
1210
|
data: {
|
|
@@ -2273,4 +2305,4 @@ export const assignmentRouter = createTRPCRouter({
|
|
|
2273
2305
|
}),
|
|
2274
2306
|
});
|
|
2275
2307
|
//# sourceMappingURL=assignment.js.map
|
|
2276
|
-
//# debugId=
|
|
2308
|
+
//# debugId=ab676c82-5988-55c9-a90b-a62a2cee20ba
|