@studious-lms/server 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +3 -0
- package/dist/index.js +40 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/config/cors.d.ts.map +1 -1
- package/dist/lib/config/cors.js +7 -2
- package/dist/lib/config/cors.js.map +1 -1
- package/dist/lib/config/env.d.ts +8 -0
- package/dist/lib/config/env.d.ts.map +1 -1
- package/dist/lib/config/env.js +5 -2
- package/dist/lib/config/env.js.map +1 -1
- package/dist/lib/pusher.d.ts +2 -1
- package/dist/lib/pusher.d.ts.map +1 -1
- package/dist/lib/pusher.js +4 -3
- package/dist/lib/pusher.js.map +1 -1
- package/dist/models/agenda.d.ts +6 -0
- package/dist/models/agenda.d.ts.map +1 -1
- package/dist/models/announcement.d.ts +3 -0
- package/dist/models/announcement.d.ts.map +1 -1
- package/dist/models/assignment.d.ts +61 -0
- package/dist/models/assignment.d.ts.map +1 -1
- package/dist/models/auth.d.ts +6 -0
- package/dist/models/auth.d.ts.map +1 -1
- package/dist/models/class.d.ts +28 -0
- package/dist/models/class.d.ts.map +1 -1
- package/dist/models/class.js +12 -3
- package/dist/models/class.js.map +1 -1
- package/dist/models/comment.d.ts +13 -0
- package/dist/models/comment.d.ts.map +1 -1
- package/dist/models/comment.js +3 -2
- package/dist/models/comment.js.map +1 -1
- package/dist/models/conversation.d.ts +17 -0
- package/dist/models/conversation.d.ts.map +1 -1
- package/dist/models/conversation.js +13 -2
- package/dist/models/conversation.js.map +1 -1
- package/dist/models/event.d.ts +12 -0
- package/dist/models/event.d.ts.map +1 -1
- package/dist/models/file.d.ts +38 -0
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/folder.d.ts +6 -0
- package/dist/models/folder.d.ts.map +1 -1
- package/dist/models/labChat.d.ts +6 -0
- package/dist/models/labChat.d.ts.map +1 -1
- package/dist/models/newtonChat.d.ts +3 -0
- package/dist/models/newtonChat.d.ts.map +1 -1
- package/dist/models/school.d.ts +3 -0
- package/dist/models/school.d.ts.map +1 -1
- package/dist/models/section.d.ts +3 -0
- package/dist/models/section.d.ts.map +1 -1
- package/dist/models/worksheet.d.ts +62 -0
- package/dist/models/worksheet.d.ts.map +1 -1
- package/dist/models/worksheet.js +37 -7
- package/dist/models/worksheet.js.map +1 -1
- package/dist/pipelines/gradeWorksheet.d.ts.map +1 -1
- package/dist/pipelines/gradeWorksheet.js +59 -14
- package/dist/pipelines/gradeWorksheet.js.map +1 -1
- package/dist/routers/_app.d.ts +4641 -2285
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/_app.js +6 -2
- package/dist/routers/_app.js.map +1 -1
- package/dist/routers/admin.d.ts +190 -0
- package/dist/routers/admin.d.ts.map +1 -0
- package/dist/routers/admin.js +50 -0
- package/dist/routers/admin.js.map +1 -0
- package/dist/routers/agenda.d.ts +6 -0
- package/dist/routers/agenda.d.ts.map +1 -1
- package/dist/routers/announcement.d.ts +6 -0
- package/dist/routers/announcement.d.ts.map +1 -1
- package/dist/routers/announcement.js +6 -5
- package/dist/routers/announcement.js.map +1 -1
- package/dist/routers/assignment.d.ts +58 -0
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +4 -4
- package/dist/routers/assignment.js.map +1 -1
- package/dist/routers/class.d.ts +54 -0
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/class.js +5 -2
- package/dist/routers/class.js.map +1 -1
- package/dist/routers/comment.d.ts +26 -0
- package/dist/routers/comment.d.ts.map +1 -1
- package/dist/routers/comment.js +6 -3
- package/dist/routers/comment.js.map +1 -1
- package/dist/routers/discussion.d.ts +823 -0
- package/dist/routers/discussion.d.ts.map +1 -0
- package/dist/routers/discussion.js +151 -0
- package/dist/routers/discussion.js.map +1 -0
- package/dist/routers/event.d.ts +3 -0
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/file.d.ts +4 -0
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/school.d.ts +6 -0
- package/dist/routers/school.d.ts.map +1 -1
- package/dist/routers/worksheet.d.ts +6 -0
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/routers/worksheet.js +4 -2
- package/dist/routers/worksheet.js.map +1 -1
- package/dist/seedDatabase.d.ts.map +1 -1
- package/dist/seedDatabase.js +1490 -1307
- package/dist/seedDatabase.js.map +1 -1
- package/dist/services/adminInstitution.d.ts +102 -0
- package/dist/services/adminInstitution.d.ts.map +1 -0
- package/dist/services/adminInstitution.js +117 -0
- package/dist/services/adminInstitution.js.map +1 -0
- package/dist/services/adminRunJob.d.ts +45 -0
- package/dist/services/adminRunJob.d.ts.map +1 -0
- package/dist/services/adminRunJob.js +41 -0
- package/dist/services/adminRunJob.js.map +1 -0
- package/dist/services/agenda.d.ts +6 -0
- package/dist/services/agenda.d.ts.map +1 -1
- package/dist/services/assignment.d.ts +50 -0
- package/dist/services/assignment.d.ts.map +1 -1
- package/dist/services/assignment.js +16 -9
- package/dist/services/assignment.js.map +1 -1
- package/dist/services/class.d.ts +54 -0
- package/dist/services/class.d.ts.map +1 -1
- package/dist/services/class.js +20 -3
- package/dist/services/class.js.map +1 -1
- package/dist/services/comment.d.ts +20 -0
- package/dist/services/comment.d.ts.map +1 -1
- package/dist/services/comment.js +23 -2
- package/dist/services/comment.js.map +1 -1
- package/dist/services/conversation.d.ts.map +1 -1
- package/dist/services/conversation.js +9 -7
- package/dist/services/conversation.js.map +1 -1
- package/dist/services/discussion.d.ts +762 -0
- package/dist/services/discussion.d.ts.map +1 -0
- package/dist/services/discussion.js +625 -0
- package/dist/services/discussion.js.map +1 -0
- package/dist/services/event.d.ts +3 -0
- package/dist/services/event.d.ts.map +1 -1
- package/dist/services/file.d.ts +8 -0
- package/dist/services/file.d.ts.map +1 -1
- package/dist/services/school.d.ts +6 -0
- package/dist/services/school.d.ts.map +1 -1
- package/dist/services/studentProgress.d.ts.map +1 -1
- package/dist/services/studentProgress.js +27 -5
- package/dist/services/studentProgress.js.map +1 -1
- package/dist/services/studentProgressInferenceCache.d.ts +16 -0
- package/dist/services/studentProgressInferenceCache.d.ts.map +1 -0
- package/dist/services/studentProgressInferenceCache.js +43 -0
- package/dist/services/studentProgressInferenceCache.js.map +1 -0
- package/dist/services/worksheet.d.ts +6 -0
- package/dist/services/worksheet.d.ts.map +1 -1
- package/dist/services/worksheet.js +5 -5
- package/dist/services/worksheet.js.map +1 -1
- package/dist/trpc.d.ts +12 -0
- package/dist/trpc.d.ts.map +1 -1
- package/dist/trpc.js +16 -3
- package/dist/trpc.js.map +1 -1
- package/dist/utils/adminPanelAccess.d.ts +8 -0
- package/dist/utils/adminPanelAccess.d.ts.map +1 -0
- package/dist/utils/adminPanelAccess.js +44 -0
- package/dist/utils/adminPanelAccess.js.map +1 -0
- package/package.json +1 -1
- package/prisma/migrations/20260510183000_add_discussions/migration.sql +151 -0
- package/prisma/schema.prisma +98 -0
- package/src/index.ts +39 -2
- package/src/lib/config/cors.ts +5 -0
- package/src/lib/config/env.ts +3 -0
- package/src/lib/pusher.ts +2 -1
- package/src/models/class.ts +10 -1
- package/src/models/comment.ts +1 -0
- package/src/models/conversation.ts +12 -0
- package/src/models/worksheet.ts +39 -5
- package/src/pipelines/gradeWorksheet.ts +66 -15
- package/src/routers/_app.ts +4 -0
- package/src/routers/admin.ts +70 -0
- package/src/routers/announcement.ts +4 -3
- package/src/routers/assignment.ts +2 -2
- package/src/routers/class.ts +3 -0
- package/src/routers/comment.ts +5 -0
- package/src/routers/discussion.ts +205 -0
- package/src/routers/worksheet.ts +2 -0
- package/src/seedDatabase.ts +1713 -1361
- package/src/services/adminInstitution.ts +140 -0
- package/src/services/adminRunJob.ts +46 -0
- package/src/services/assignment.ts +19 -8
- package/src/services/class.ts +28 -1
- package/src/services/comment.ts +22 -0
- package/src/services/conversation.ts +9 -4
- package/src/services/discussion.ts +701 -0
- package/src/services/studentProgress.ts +80 -3
- package/src/services/studentProgressInferenceCache.ts +64 -0
- package/src/services/worksheet.ts +5 -2
- package/src/trpc.ts +15 -0
- package/src/utils/adminPanelAccess.ts +46 -0
- package/tests/integration/routers/conversation.test.ts +9 -7
- package/tests/integration/routers/discussion.test.ts +253 -0
- package/tests/unit/services/discussion.test.ts +356 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export declare function listSchoolsForAdmin(input: {
|
|
2
|
+
page: number;
|
|
3
|
+
pageSize: number;
|
|
4
|
+
query?: string;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
items: ({
|
|
7
|
+
_count: {
|
|
8
|
+
departments: number;
|
|
9
|
+
memberships: number;
|
|
10
|
+
classes: number;
|
|
11
|
+
};
|
|
12
|
+
} & {
|
|
13
|
+
name: string;
|
|
14
|
+
id: string;
|
|
15
|
+
description: string | null;
|
|
16
|
+
logoId: string | null;
|
|
17
|
+
subdomain: string | null;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
updatedAt: Date;
|
|
20
|
+
})[];
|
|
21
|
+
total: number;
|
|
22
|
+
page: number;
|
|
23
|
+
pageSize: number;
|
|
24
|
+
pageCount: number;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function listDepartmentsForAdmin(input: {
|
|
27
|
+
page: number;
|
|
28
|
+
pageSize: number;
|
|
29
|
+
schoolId?: string;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
items: ({
|
|
32
|
+
school: {
|
|
33
|
+
name: string;
|
|
34
|
+
id: string;
|
|
35
|
+
subdomain: string | null;
|
|
36
|
+
};
|
|
37
|
+
_count: {
|
|
38
|
+
classes: number;
|
|
39
|
+
members: number;
|
|
40
|
+
};
|
|
41
|
+
} & {
|
|
42
|
+
name: string;
|
|
43
|
+
id: string;
|
|
44
|
+
description: string | null;
|
|
45
|
+
createdAt: Date;
|
|
46
|
+
updatedAt: Date;
|
|
47
|
+
schoolId: string;
|
|
48
|
+
color: string | null;
|
|
49
|
+
})[];
|
|
50
|
+
total: number;
|
|
51
|
+
page: number;
|
|
52
|
+
pageSize: number;
|
|
53
|
+
pageCount: number;
|
|
54
|
+
}>;
|
|
55
|
+
export declare function listSchoolDevelopmentProgramsForAdmin(input: {
|
|
56
|
+
page: number;
|
|
57
|
+
pageSize: number;
|
|
58
|
+
status?: string;
|
|
59
|
+
query?: string;
|
|
60
|
+
}): Promise<{
|
|
61
|
+
items: {
|
|
62
|
+
type: string;
|
|
63
|
+
status: string;
|
|
64
|
+
name: string;
|
|
65
|
+
id: string;
|
|
66
|
+
submittedAt: Date | null;
|
|
67
|
+
website: string | null;
|
|
68
|
+
address: string;
|
|
69
|
+
city: string;
|
|
70
|
+
country: string;
|
|
71
|
+
numberOfStudents: number;
|
|
72
|
+
numberOfTeachers: number;
|
|
73
|
+
contactName: string | null;
|
|
74
|
+
contactRole: string | null;
|
|
75
|
+
contactEmail: string | null;
|
|
76
|
+
contactPhone: string | null;
|
|
77
|
+
eligibilityInformation: string | null;
|
|
78
|
+
whyHelp: string | null;
|
|
79
|
+
additionalInformation: string | null;
|
|
80
|
+
reviewedAt: Date | null;
|
|
81
|
+
}[];
|
|
82
|
+
total: number;
|
|
83
|
+
page: number;
|
|
84
|
+
pageSize: number;
|
|
85
|
+
pageCount: number;
|
|
86
|
+
}>;
|
|
87
|
+
export declare function listEarlyAccessRequestsForAdmin(input: {
|
|
88
|
+
page: number;
|
|
89
|
+
pageSize: number;
|
|
90
|
+
}): Promise<{
|
|
91
|
+
items: {
|
|
92
|
+
id: string;
|
|
93
|
+
createdAt: Date;
|
|
94
|
+
email: string;
|
|
95
|
+
institutionSize: string;
|
|
96
|
+
}[];
|
|
97
|
+
total: number;
|
|
98
|
+
page: number;
|
|
99
|
+
pageSize: number;
|
|
100
|
+
pageCount: number;
|
|
101
|
+
}>;
|
|
102
|
+
//# sourceMappingURL=adminInstitution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminInstitution.d.ts","sourceRoot":"/","sources":["services/adminInstitution.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;GAsCA;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;;;;;;;;;;;;;;;;;;;;;;;;GA0BA;AAED,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BA;AAED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;GAmBA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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]="b1498315-0e25-53db-bf38-c21f30717c51")}catch(e){}}();
|
|
3
|
+
import { prisma } from '../lib/prisma.js';
|
|
4
|
+
export async function listSchoolsForAdmin(input) {
|
|
5
|
+
const skip = input.page * input.pageSize;
|
|
6
|
+
const where = {};
|
|
7
|
+
const q = input.query?.trim();
|
|
8
|
+
if (q) {
|
|
9
|
+
where.OR = [
|
|
10
|
+
{ name: { contains: q, mode: 'insensitive' } },
|
|
11
|
+
{ subdomain: { contains: q, mode: 'insensitive' } },
|
|
12
|
+
{ description: { contains: q, mode: 'insensitive' } },
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
const [items, total] = await Promise.all([
|
|
16
|
+
prisma.school.findMany({
|
|
17
|
+
where,
|
|
18
|
+
orderBy: { createdAt: 'desc' },
|
|
19
|
+
skip,
|
|
20
|
+
take: input.pageSize,
|
|
21
|
+
include: {
|
|
22
|
+
_count: {
|
|
23
|
+
select: {
|
|
24
|
+
memberships: true,
|
|
25
|
+
classes: true,
|
|
26
|
+
departments: true,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}),
|
|
31
|
+
prisma.school.count({ where }),
|
|
32
|
+
]);
|
|
33
|
+
return {
|
|
34
|
+
items,
|
|
35
|
+
total,
|
|
36
|
+
page: input.page,
|
|
37
|
+
pageSize: input.pageSize,
|
|
38
|
+
pageCount: Math.max(1, Math.ceil(total / input.pageSize)),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export async function listDepartmentsForAdmin(input) {
|
|
42
|
+
const skip = input.page * input.pageSize;
|
|
43
|
+
const where = {};
|
|
44
|
+
if (input.schoolId)
|
|
45
|
+
where.schoolId = input.schoolId;
|
|
46
|
+
const [items, total] = await Promise.all([
|
|
47
|
+
prisma.department.findMany({
|
|
48
|
+
where,
|
|
49
|
+
orderBy: [{ schoolId: 'asc' }, { name: 'asc' }],
|
|
50
|
+
skip,
|
|
51
|
+
take: input.pageSize,
|
|
52
|
+
include: {
|
|
53
|
+
school: { select: { id: true, name: true, subdomain: true } },
|
|
54
|
+
_count: { select: { classes: true, members: true } },
|
|
55
|
+
},
|
|
56
|
+
}),
|
|
57
|
+
prisma.department.count({ where }),
|
|
58
|
+
]);
|
|
59
|
+
return {
|
|
60
|
+
items,
|
|
61
|
+
total,
|
|
62
|
+
page: input.page,
|
|
63
|
+
pageSize: input.pageSize,
|
|
64
|
+
pageCount: Math.max(1, Math.ceil(total / input.pageSize)),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export async function listSchoolDevelopmentProgramsForAdmin(input) {
|
|
68
|
+
const skip = input.page * input.pageSize;
|
|
69
|
+
const where = {};
|
|
70
|
+
if (input.status?.trim())
|
|
71
|
+
where.status = input.status.trim();
|
|
72
|
+
const q = input.query?.trim();
|
|
73
|
+
if (q) {
|
|
74
|
+
where.OR = [
|
|
75
|
+
{ name: { contains: q, mode: 'insensitive' } },
|
|
76
|
+
{ city: { contains: q, mode: 'insensitive' } },
|
|
77
|
+
{ country: { contains: q, mode: 'insensitive' } },
|
|
78
|
+
{ contactEmail: { contains: q, mode: 'insensitive' } },
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
const [items, total] = await Promise.all([
|
|
82
|
+
prisma.schoolDevelopementProgram.findMany({
|
|
83
|
+
where,
|
|
84
|
+
orderBy: { submittedAt: 'desc' },
|
|
85
|
+
skip,
|
|
86
|
+
take: input.pageSize,
|
|
87
|
+
}),
|
|
88
|
+
prisma.schoolDevelopementProgram.count({ where }),
|
|
89
|
+
]);
|
|
90
|
+
return {
|
|
91
|
+
items,
|
|
92
|
+
total,
|
|
93
|
+
page: input.page,
|
|
94
|
+
pageSize: input.pageSize,
|
|
95
|
+
pageCount: Math.max(1, Math.ceil(total / input.pageSize)),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export async function listEarlyAccessRequestsForAdmin(input) {
|
|
99
|
+
const skip = input.page * input.pageSize;
|
|
100
|
+
const [items, total] = await Promise.all([
|
|
101
|
+
prisma.earlyAccessRequest.findMany({
|
|
102
|
+
orderBy: { createdAt: 'desc' },
|
|
103
|
+
skip,
|
|
104
|
+
take: input.pageSize,
|
|
105
|
+
}),
|
|
106
|
+
prisma.earlyAccessRequest.count(),
|
|
107
|
+
]);
|
|
108
|
+
return {
|
|
109
|
+
items,
|
|
110
|
+
total,
|
|
111
|
+
page: input.page,
|
|
112
|
+
pageSize: input.pageSize,
|
|
113
|
+
pageCount: Math.max(1, Math.ceil(total / input.pageSize)),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=adminInstitution.js.map
|
|
117
|
+
//# debugId=b1498315-0e25-53db-bf38-c21f30717c51
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminInstitution.js","sources":["services/adminInstitution.ts"],"sourceRoot":"/","sourcesContent":["import type { Prisma } from '@prisma/client';\nimport { prisma } from '../lib/prisma.js';\n\nexport async function listSchoolsForAdmin(input: {\n page: number;\n pageSize: number;\n query?: string;\n}) {\n const skip = input.page * input.pageSize;\n const where: Prisma.SchoolWhereInput = {};\n const q = input.query?.trim();\n if (q) {\n where.OR = [\n { name: { contains: q, mode: 'insensitive' } },\n { subdomain: { contains: q, mode: 'insensitive' } },\n { description: { contains: q, mode: 'insensitive' } },\n ];\n }\n\n const [items, total] = await Promise.all([\n prisma.school.findMany({\n where,\n orderBy: { createdAt: 'desc' },\n skip,\n take: input.pageSize,\n include: {\n _count: {\n select: {\n memberships: true,\n classes: true,\n departments: true,\n },\n },\n },\n }),\n prisma.school.count({ where }),\n ]);\n\n return {\n items,\n total,\n page: input.page,\n pageSize: input.pageSize,\n pageCount: Math.max(1, Math.ceil(total / input.pageSize)),\n };\n}\n\nexport async function listDepartmentsForAdmin(input: {\n page: number;\n pageSize: number;\n schoolId?: string;\n}) {\n const skip = input.page * input.pageSize;\n const where: Prisma.DepartmentWhereInput = {};\n if (input.schoolId) where.schoolId = input.schoolId;\n\n const [items, total] = await Promise.all([\n prisma.department.findMany({\n where,\n orderBy: [{ schoolId: 'asc' }, { name: 'asc' }],\n skip,\n take: input.pageSize,\n include: {\n school: { select: { id: true, name: true, subdomain: true } },\n _count: { select: { classes: true, members: true } },\n },\n }),\n prisma.department.count({ where }),\n ]);\n\n return {\n items,\n total,\n page: input.page,\n pageSize: input.pageSize,\n pageCount: Math.max(1, Math.ceil(total / input.pageSize)),\n };\n}\n\nexport async function listSchoolDevelopmentProgramsForAdmin(input: {\n page: number;\n pageSize: number;\n status?: string;\n query?: string;\n}) {\n const skip = input.page * input.pageSize;\n const where: Prisma.SchoolDevelopementProgramWhereInput = {};\n if (input.status?.trim()) where.status = input.status.trim();\n const q = input.query?.trim();\n if (q) {\n where.OR = [\n { name: { contains: q, mode: 'insensitive' } },\n { city: { contains: q, mode: 'insensitive' } },\n { country: { contains: q, mode: 'insensitive' } },\n { contactEmail: { contains: q, mode: 'insensitive' } },\n ];\n }\n\n const [items, total] = await Promise.all([\n prisma.schoolDevelopementProgram.findMany({\n where,\n orderBy: { submittedAt: 'desc' },\n skip,\n take: input.pageSize,\n }),\n prisma.schoolDevelopementProgram.count({ where }),\n ]);\n\n return {\n items,\n total,\n page: input.page,\n pageSize: input.pageSize,\n pageCount: Math.max(1, Math.ceil(total / input.pageSize)),\n };\n}\n\nexport async function listEarlyAccessRequestsForAdmin(input: {\n page: number;\n pageSize: number;\n}) {\n const skip = input.page * input.pageSize;\n\n const [items, total] = await Promise.all([\n prisma.earlyAccessRequest.findMany({\n orderBy: { createdAt: 'desc' },\n skip,\n take: input.pageSize,\n }),\n prisma.earlyAccessRequest.count(),\n ]);\n\n return {\n items,\n total,\n page: input.page,\n pageSize: input.pageSize,\n pageCount: Math.max(1, Math.ceil(total / input.pageSize)),\n };\n}\n"],"names":[],"mappings":"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","debug_id":"b1498315-0e25-53db-bf38-c21f30717c51"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Prisma, RunJobStatus, RunJobType } from '@prisma/client';
|
|
2
|
+
export declare function listRunJobsForAdmin(input: {
|
|
3
|
+
page: number;
|
|
4
|
+
pageSize: number;
|
|
5
|
+
status?: RunJobStatus;
|
|
6
|
+
type?: RunJobType;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
items: {
|
|
9
|
+
error: string | null;
|
|
10
|
+
type: import(".prisma/client").$Enums.RunJobType;
|
|
11
|
+
status: import(".prisma/client").$Enums.RunJobStatus;
|
|
12
|
+
result: Prisma.JsonValue | null;
|
|
13
|
+
id: string;
|
|
14
|
+
createdAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
userId: string | null;
|
|
17
|
+
classId: string | null;
|
|
18
|
+
input: Prisma.JsonValue;
|
|
19
|
+
attempts: number;
|
|
20
|
+
bullJobId: string | null;
|
|
21
|
+
startedAt: Date | null;
|
|
22
|
+
finishedAt: Date | null;
|
|
23
|
+
}[];
|
|
24
|
+
total: number;
|
|
25
|
+
page: number;
|
|
26
|
+
pageSize: number;
|
|
27
|
+
pageCount: number;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function getRunJobForAdmin(id: string): Promise<{
|
|
30
|
+
error: string | null;
|
|
31
|
+
type: import(".prisma/client").$Enums.RunJobType;
|
|
32
|
+
status: import(".prisma/client").$Enums.RunJobStatus;
|
|
33
|
+
result: Prisma.JsonValue | null;
|
|
34
|
+
id: string;
|
|
35
|
+
createdAt: Date;
|
|
36
|
+
updatedAt: Date;
|
|
37
|
+
userId: string | null;
|
|
38
|
+
classId: string | null;
|
|
39
|
+
input: Prisma.JsonValue;
|
|
40
|
+
attempts: number;
|
|
41
|
+
bullJobId: string | null;
|
|
42
|
+
startedAt: Date | null;
|
|
43
|
+
finishedAt: Date | null;
|
|
44
|
+
}>;
|
|
45
|
+
//# sourceMappingURL=adminRunJob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminRunJob.d.ts","sourceRoot":"/","sources":["services/adminRunJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIvE,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;;;;;;;;;;;;;;;;;;;;;GAyBA;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;GASjD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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]="1a0ad907-6bdd-54a4-84a4-858949f12f92")}catch(e){}}();
|
|
3
|
+
import { TRPCError } from '@trpc/server';
|
|
4
|
+
import { prisma } from '../lib/prisma.js';
|
|
5
|
+
export async function listRunJobsForAdmin(input) {
|
|
6
|
+
const { page, pageSize, status, type } = input;
|
|
7
|
+
const skip = page * pageSize;
|
|
8
|
+
const where = {};
|
|
9
|
+
if (status)
|
|
10
|
+
where.status = status;
|
|
11
|
+
if (type)
|
|
12
|
+
where.type = type;
|
|
13
|
+
const [items, total] = await Promise.all([
|
|
14
|
+
prisma.runJob.findMany({
|
|
15
|
+
where,
|
|
16
|
+
orderBy: { createdAt: 'desc' },
|
|
17
|
+
skip,
|
|
18
|
+
take: pageSize,
|
|
19
|
+
}),
|
|
20
|
+
prisma.runJob.count({ where }),
|
|
21
|
+
]);
|
|
22
|
+
return {
|
|
23
|
+
items,
|
|
24
|
+
total,
|
|
25
|
+
page,
|
|
26
|
+
pageSize,
|
|
27
|
+
pageCount: Math.max(1, Math.ceil(total / pageSize)),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export async function getRunJobForAdmin(id) {
|
|
31
|
+
const job = await prisma.runJob.findUnique({ where: { id } });
|
|
32
|
+
if (!job) {
|
|
33
|
+
throw new TRPCError({
|
|
34
|
+
code: 'NOT_FOUND',
|
|
35
|
+
message: 'Run job not found',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return job;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=adminRunJob.js.map
|
|
41
|
+
//# debugId=1a0ad907-6bdd-54a4-84a4-858949f12f92
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminRunJob.js","sources":["services/adminRunJob.ts"],"sourceRoot":"/","sourcesContent":["import type { Prisma, RunJobStatus, RunJobType } from '@prisma/client';\nimport { TRPCError } from '@trpc/server';\nimport { prisma } from '../lib/prisma.js';\n\nexport async function listRunJobsForAdmin(input: {\n page: number;\n pageSize: number;\n status?: RunJobStatus;\n type?: RunJobType;\n}) {\n const { page, pageSize, status, type } = input;\n const skip = page * pageSize;\n\n const where: Prisma.RunJobWhereInput = {};\n if (status) where.status = status;\n if (type) where.type = type;\n\n const [items, total] = await Promise.all([\n prisma.runJob.findMany({\n where,\n orderBy: { createdAt: 'desc' },\n skip,\n take: pageSize,\n }),\n prisma.runJob.count({ where }),\n ]);\n\n return {\n items,\n total,\n page,\n pageSize,\n pageCount: Math.max(1, Math.ceil(total / pageSize)),\n };\n}\n\nexport async function getRunJobForAdmin(id: string) {\n const job = await prisma.runJob.findUnique({ where: { id } });\n if (!job) {\n throw new TRPCError({\n code: 'NOT_FOUND',\n message: 'Run job not found',\n });\n }\n return job;\n}\n"],"names":[],"mappings":";;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAKzC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IAE7B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,MAAM;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAClC,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAE5B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrB,KAAK;YACL,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9B,IAAI;YACJ,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAU;IAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,SAAS,CAAC;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,mBAAmB;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","debug_id":"1a0ad907-6bdd-54a4-84a4-858949f12f92"}
|
|
@@ -11,6 +11,9 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
11
11
|
section: string;
|
|
12
12
|
syllabus: string | null;
|
|
13
13
|
departmentId: string | null;
|
|
14
|
+
discussionsEnabled: boolean;
|
|
15
|
+
studentsCanCreateDiscussions: boolean;
|
|
16
|
+
studentsCanReply: boolean;
|
|
14
17
|
} | null;
|
|
15
18
|
assignmentsAttached: {
|
|
16
19
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
@@ -59,6 +62,9 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
59
62
|
section: string;
|
|
60
63
|
syllabus: string | null;
|
|
61
64
|
departmentId: string | null;
|
|
65
|
+
discussionsEnabled: boolean;
|
|
66
|
+
studentsCanCreateDiscussions: boolean;
|
|
67
|
+
studentsCanReply: boolean;
|
|
62
68
|
} | null;
|
|
63
69
|
assignmentsAttached: {
|
|
64
70
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWhE"}
|
|
@@ -101,6 +101,9 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
101
101
|
section: string;
|
|
102
102
|
syllabus: string | null;
|
|
103
103
|
departmentId: string | null;
|
|
104
|
+
discussionsEnabled: boolean;
|
|
105
|
+
studentsCanCreateDiscussions: boolean;
|
|
106
|
+
studentsCanReply: boolean;
|
|
104
107
|
};
|
|
105
108
|
markScheme: {
|
|
106
109
|
id: string;
|
|
@@ -166,6 +169,8 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
166
169
|
conversationId: string | null;
|
|
167
170
|
messageId: string | null;
|
|
168
171
|
announcementId: string | null;
|
|
172
|
+
discussionId: string | null;
|
|
173
|
+
discussionReplyId: string | null;
|
|
169
174
|
schoolDevelopementProgramId: string | null;
|
|
170
175
|
}[];
|
|
171
176
|
attachments: {
|
|
@@ -194,6 +199,8 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
194
199
|
conversationId: string | null;
|
|
195
200
|
messageId: string | null;
|
|
196
201
|
announcementId: string | null;
|
|
202
|
+
discussionId: string | null;
|
|
203
|
+
discussionReplyId: string | null;
|
|
197
204
|
schoolDevelopementProgramId: string | null;
|
|
198
205
|
}[];
|
|
199
206
|
student: {
|
|
@@ -228,6 +235,9 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
228
235
|
section: string;
|
|
229
236
|
syllabus: string | null;
|
|
230
237
|
departmentId: string | null;
|
|
238
|
+
discussionsEnabled: boolean;
|
|
239
|
+
studentsCanCreateDiscussions: boolean;
|
|
240
|
+
studentsCanReply: boolean;
|
|
231
241
|
};
|
|
232
242
|
markScheme: {
|
|
233
243
|
id: string;
|
|
@@ -293,6 +303,8 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
293
303
|
conversationId: string | null;
|
|
294
304
|
messageId: string | null;
|
|
295
305
|
announcementId: string | null;
|
|
306
|
+
discussionId: string | null;
|
|
307
|
+
discussionReplyId: string | null;
|
|
296
308
|
schoolDevelopementProgramId: string | null;
|
|
297
309
|
}[];
|
|
298
310
|
attachments: {
|
|
@@ -321,6 +333,8 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
321
333
|
conversationId: string | null;
|
|
322
334
|
messageId: string | null;
|
|
323
335
|
announcementId: string | null;
|
|
336
|
+
discussionId: string | null;
|
|
337
|
+
discussionReplyId: string | null;
|
|
324
338
|
schoolDevelopementProgramId: string | null;
|
|
325
339
|
}[];
|
|
326
340
|
student: {
|
|
@@ -367,6 +381,9 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
367
381
|
section: string;
|
|
368
382
|
syllabus: string | null;
|
|
369
383
|
departmentId: string | null;
|
|
384
|
+
discussionsEnabled: boolean;
|
|
385
|
+
studentsCanCreateDiscussions: boolean;
|
|
386
|
+
studentsCanReply: boolean;
|
|
370
387
|
};
|
|
371
388
|
markScheme: {
|
|
372
389
|
id: string;
|
|
@@ -429,6 +446,8 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
429
446
|
conversationId: string | null;
|
|
430
447
|
messageId: string | null;
|
|
431
448
|
announcementId: string | null;
|
|
449
|
+
discussionId: string | null;
|
|
450
|
+
discussionReplyId: string | null;
|
|
432
451
|
schoolDevelopementProgramId: string | null;
|
|
433
452
|
} | null;
|
|
434
453
|
} & {
|
|
@@ -457,6 +476,8 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
457
476
|
conversationId: string | null;
|
|
458
477
|
messageId: string | null;
|
|
459
478
|
announcementId: string | null;
|
|
479
|
+
discussionId: string | null;
|
|
480
|
+
discussionReplyId: string | null;
|
|
460
481
|
schoolDevelopementProgramId: string | null;
|
|
461
482
|
})[];
|
|
462
483
|
student: {
|
|
@@ -608,6 +629,9 @@ export declare function updateAssignmentRecord(userId: string, input: {
|
|
|
608
629
|
section: string;
|
|
609
630
|
syllabus: string | null;
|
|
610
631
|
departmentId: string | null;
|
|
632
|
+
discussionsEnabled: boolean;
|
|
633
|
+
studentsCanCreateDiscussions: boolean;
|
|
634
|
+
studentsCanReply: boolean;
|
|
611
635
|
};
|
|
612
636
|
section: {
|
|
613
637
|
name: string;
|
|
@@ -671,6 +695,8 @@ export declare function updateAssignmentRecord(userId: string, input: {
|
|
|
671
695
|
conversationId: string | null;
|
|
672
696
|
messageId: string | null;
|
|
673
697
|
announcementId: string | null;
|
|
698
|
+
discussionId: string | null;
|
|
699
|
+
discussionReplyId: string | null;
|
|
674
700
|
schoolDevelopementProgramId: string | null;
|
|
675
701
|
} | null;
|
|
676
702
|
}[];
|
|
@@ -702,6 +728,9 @@ export declare function updateSubmissionRecord(userId: string, input: {
|
|
|
702
728
|
section: string;
|
|
703
729
|
syllabus: string | null;
|
|
704
730
|
departmentId: string | null;
|
|
731
|
+
discussionsEnabled: boolean;
|
|
732
|
+
studentsCanCreateDiscussions: boolean;
|
|
733
|
+
studentsCanReply: boolean;
|
|
705
734
|
};
|
|
706
735
|
markScheme: {
|
|
707
736
|
id: string;
|
|
@@ -763,6 +792,8 @@ export declare function updateSubmissionRecord(userId: string, input: {
|
|
|
763
792
|
conversationId: string | null;
|
|
764
793
|
messageId: string | null;
|
|
765
794
|
announcementId: string | null;
|
|
795
|
+
discussionId: string | null;
|
|
796
|
+
discussionReplyId: string | null;
|
|
766
797
|
schoolDevelopementProgramId: string | null;
|
|
767
798
|
}[];
|
|
768
799
|
student: {
|
|
@@ -817,6 +848,9 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
817
848
|
section: string;
|
|
818
849
|
syllabus: string | null;
|
|
819
850
|
departmentId: string | null;
|
|
851
|
+
discussionsEnabled: boolean;
|
|
852
|
+
studentsCanCreateDiscussions: boolean;
|
|
853
|
+
studentsCanReply: boolean;
|
|
820
854
|
};
|
|
821
855
|
markScheme: {
|
|
822
856
|
id: string;
|
|
@@ -879,6 +913,8 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
879
913
|
conversationId: string | null;
|
|
880
914
|
messageId: string | null;
|
|
881
915
|
announcementId: string | null;
|
|
916
|
+
discussionId: string | null;
|
|
917
|
+
discussionReplyId: string | null;
|
|
882
918
|
schoolDevelopementProgramId: string | null;
|
|
883
919
|
} | null;
|
|
884
920
|
} & {
|
|
@@ -907,6 +943,8 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
907
943
|
conversationId: string | null;
|
|
908
944
|
messageId: string | null;
|
|
909
945
|
announcementId: string | null;
|
|
946
|
+
discussionId: string | null;
|
|
947
|
+
discussionReplyId: string | null;
|
|
910
948
|
schoolDevelopementProgramId: string | null;
|
|
911
949
|
})[];
|
|
912
950
|
attachments: ({
|
|
@@ -936,6 +974,8 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
936
974
|
conversationId: string | null;
|
|
937
975
|
messageId: string | null;
|
|
938
976
|
announcementId: string | null;
|
|
977
|
+
discussionId: string | null;
|
|
978
|
+
discussionReplyId: string | null;
|
|
939
979
|
schoolDevelopementProgramId: string | null;
|
|
940
980
|
} | null;
|
|
941
981
|
} & {
|
|
@@ -964,6 +1004,8 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
964
1004
|
conversationId: string | null;
|
|
965
1005
|
messageId: string | null;
|
|
966
1006
|
announcementId: string | null;
|
|
1007
|
+
discussionId: string | null;
|
|
1008
|
+
discussionReplyId: string | null;
|
|
967
1009
|
schoolDevelopementProgramId: string | null;
|
|
968
1010
|
})[];
|
|
969
1011
|
student: {
|
|
@@ -1150,6 +1192,8 @@ export declare function attachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1150
1192
|
conversationId: string | null;
|
|
1151
1193
|
messageId: string | null;
|
|
1152
1194
|
announcementId: string | null;
|
|
1195
|
+
discussionId: string | null;
|
|
1196
|
+
discussionReplyId: string | null;
|
|
1153
1197
|
schoolDevelopementProgramId: string | null;
|
|
1154
1198
|
}[];
|
|
1155
1199
|
eventAttached: {
|
|
@@ -1238,6 +1282,8 @@ export declare function detachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1238
1282
|
conversationId: string | null;
|
|
1239
1283
|
messageId: string | null;
|
|
1240
1284
|
announcementId: string | null;
|
|
1285
|
+
discussionId: string | null;
|
|
1286
|
+
discussionReplyId: string | null;
|
|
1241
1287
|
schoolDevelopementProgramId: string | null;
|
|
1242
1288
|
}[];
|
|
1243
1289
|
eventAttached: {
|
|
@@ -1326,6 +1372,8 @@ export declare function attachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1326
1372
|
conversationId: string | null;
|
|
1327
1373
|
messageId: string | null;
|
|
1328
1374
|
announcementId: string | null;
|
|
1375
|
+
discussionId: string | null;
|
|
1376
|
+
discussionReplyId: string | null;
|
|
1329
1377
|
schoolDevelopementProgramId: string | null;
|
|
1330
1378
|
}[];
|
|
1331
1379
|
eventAttached: {
|
|
@@ -1414,6 +1462,8 @@ export declare function detachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1414
1462
|
conversationId: string | null;
|
|
1415
1463
|
messageId: string | null;
|
|
1416
1464
|
announcementId: string | null;
|
|
1465
|
+
discussionId: string | null;
|
|
1466
|
+
discussionReplyId: string | null;
|
|
1417
1467
|
schoolDevelopementProgramId: string | null;
|
|
1418
1468
|
}[];
|
|
1419
1469
|
eventAttached: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["services/assignment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["services/assignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Assignment service – create, read, update, delete assignments and submissions.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
!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]="
|
|
5
|
+
!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]="5a7c2de7-f22d-5043-a5d5-e6c52987db09")}catch(e){}}();
|
|
6
6
|
import { TRPCError } from "@trpc/server";
|
|
7
7
|
import { prisma } from "../lib/prisma.js";
|
|
8
8
|
import { findAssignmentById, findAssignmentWithDetails, findAssignmentWithClassForTeacher, findAssignmentForDelete, findAssignmentsDueToday, findSubmissionByAssignmentAndStudent, findSubmissionByIdForClassMember, findSubmissionForUpdate, findSubmissionForTeacherUpdate, findSubmissionsByAssignmentForTeacher, createSubmission, findSectionsByClassId, findAvailableEventsForAssignment, attachAssignmentToEvent, detachAssignmentFromEvent, duplicateAssignment, } from "../models/assignment.js";
|
|
@@ -11,6 +11,7 @@ import { deleteFile } from "../lib/googleCloudStorage.js";
|
|
|
11
11
|
import { sendToMultiple } from "./notification.js";
|
|
12
12
|
import { enqueueRunJob } from "../workers/queues.js";
|
|
13
13
|
import { logger } from "../utils/logger.js";
|
|
14
|
+
import { invalidateStudentProgressInferenceCache } from "./studentProgressInferenceCache.js";
|
|
14
15
|
export async function assignmentExists(id) {
|
|
15
16
|
const assignment = await findAssignmentById(id);
|
|
16
17
|
return !!assignment;
|
|
@@ -284,11 +285,13 @@ export async function updateAssignmentRecord(userId, input) {
|
|
|
284
285
|
message: "Assignment not found",
|
|
285
286
|
});
|
|
286
287
|
}
|
|
287
|
-
const submissionData = input.studentIds
|
|
288
|
-
? input.studentIds.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
288
|
+
const submissionData = input.studentIds
|
|
289
|
+
? (input.studentIds.length > 0
|
|
290
|
+
? input.studentIds.map((studentId) => ({ student: { connect: { id: studentId } } }))
|
|
291
|
+
: classData?.students.map((student) => ({
|
|
292
|
+
student: { connect: { id: student.id } },
|
|
293
|
+
})))
|
|
294
|
+
: undefined;
|
|
292
295
|
if (input.removedAttachments?.length) {
|
|
293
296
|
const filesToDelete = assignment.attachments.filter((f) => input.removedAttachments.includes(f.id));
|
|
294
297
|
await Promise.all(filesToDelete.map(async (file) => {
|
|
@@ -327,7 +330,7 @@ export async function updateAssignmentRecord(userId, input) {
|
|
|
327
330
|
connect: input.studentIds.map((id) => ({ id })),
|
|
328
331
|
},
|
|
329
332
|
}),
|
|
330
|
-
...(submissionData && {
|
|
333
|
+
...(input.studentIds && submissionData && {
|
|
331
334
|
submissions: {
|
|
332
335
|
deleteMany: {},
|
|
333
336
|
create: submissionData,
|
|
@@ -651,7 +654,7 @@ export async function updateSubmissionAsTeacherRecord(teacherId, input) {
|
|
|
651
654
|
}
|
|
652
655
|
}));
|
|
653
656
|
}
|
|
654
|
-
|
|
657
|
+
const updated = await prisma.submission.update({
|
|
655
658
|
where: { id: submissionId },
|
|
656
659
|
data: {
|
|
657
660
|
...(gradeReceived !== undefined && { gradeReceived }),
|
|
@@ -665,6 +668,10 @@ export async function updateSubmissionAsTeacherRecord(teacherId, input) {
|
|
|
665
668
|
},
|
|
666
669
|
include: submissionTeacherInclude,
|
|
667
670
|
});
|
|
671
|
+
if (gradeReceived !== undefined) {
|
|
672
|
+
invalidateStudentProgressInferenceCache(submission.assignment.classId, submission.studentId);
|
|
673
|
+
}
|
|
674
|
+
return updated;
|
|
668
675
|
}
|
|
669
676
|
export async function attachAssignmentToEventRecord(teacherId, assignmentId, eventId) {
|
|
670
677
|
const assignment = await findAssignmentWithClassForTeacher(assignmentId, teacherId);
|
|
@@ -958,4 +965,4 @@ export async function moveAssignmentRecord(teacherId, input) {
|
|
|
958
965
|
}, { maxWait: 5000, timeout: 10000 });
|
|
959
966
|
}
|
|
960
967
|
//# sourceMappingURL=assignment.js.map
|
|
961
|
-
//# debugId=
|
|
968
|
+
//# debugId=5a7c2de7-f22d-5043-a5d5-e6c52987db09
|