@studious-lms/server 1.0.6 → 1.0.7

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 (101) hide show
  1. package/API_SPECIFICATION.md +1117 -0
  2. package/dist/exportType.js +1 -2
  3. package/dist/index.js +25 -30
  4. package/dist/lib/fileUpload.d.ts.map +1 -1
  5. package/dist/lib/fileUpload.js +31 -29
  6. package/dist/lib/googleCloudStorage.js +9 -14
  7. package/dist/lib/prisma.js +4 -7
  8. package/dist/lib/thumbnailGenerator.js +12 -20
  9. package/dist/middleware/auth.d.ts.map +1 -1
  10. package/dist/middleware/auth.js +17 -22
  11. package/dist/middleware/logging.js +5 -9
  12. package/dist/routers/_app.d.ts +3483 -1801
  13. package/dist/routers/_app.d.ts.map +1 -1
  14. package/dist/routers/_app.js +28 -27
  15. package/dist/routers/agenda.d.ts +13 -8
  16. package/dist/routers/agenda.d.ts.map +1 -1
  17. package/dist/routers/agenda.js +14 -17
  18. package/dist/routers/announcement.d.ts +4 -3
  19. package/dist/routers/announcement.d.ts.map +1 -1
  20. package/dist/routers/announcement.js +28 -31
  21. package/dist/routers/assignment.d.ts +282 -196
  22. package/dist/routers/assignment.d.ts.map +1 -1
  23. package/dist/routers/assignment.js +256 -202
  24. package/dist/routers/attendance.d.ts +5 -4
  25. package/dist/routers/attendance.d.ts.map +1 -1
  26. package/dist/routers/attendance.js +31 -34
  27. package/dist/routers/auth.d.ts +1 -0
  28. package/dist/routers/auth.d.ts.map +1 -1
  29. package/dist/routers/auth.js +80 -75
  30. package/dist/routers/class.d.ts +284 -14
  31. package/dist/routers/class.d.ts.map +1 -1
  32. package/dist/routers/class.js +435 -164
  33. package/dist/routers/event.d.ts +47 -38
  34. package/dist/routers/event.d.ts.map +1 -1
  35. package/dist/routers/event.js +76 -79
  36. package/dist/routers/file.d.ts +71 -1
  37. package/dist/routers/file.d.ts.map +1 -1
  38. package/dist/routers/file.js +267 -32
  39. package/dist/routers/folder.d.ts +296 -0
  40. package/dist/routers/folder.d.ts.map +1 -0
  41. package/dist/routers/folder.js +693 -0
  42. package/dist/routers/notifications.d.ts +103 -0
  43. package/dist/routers/notifications.d.ts.map +1 -0
  44. package/dist/routers/notifications.js +91 -0
  45. package/dist/routers/school.d.ts +208 -0
  46. package/dist/routers/school.d.ts.map +1 -0
  47. package/dist/routers/school.js +481 -0
  48. package/dist/routers/section.d.ts +1 -0
  49. package/dist/routers/section.d.ts.map +1 -1
  50. package/dist/routers/section.js +30 -33
  51. package/dist/routers/user.d.ts +2 -1
  52. package/dist/routers/user.d.ts.map +1 -1
  53. package/dist/routers/user.js +21 -24
  54. package/dist/seedDatabase.d.ts +22 -0
  55. package/dist/seedDatabase.d.ts.map +1 -0
  56. package/dist/seedDatabase.js +57 -0
  57. package/dist/socket/handlers.js +26 -30
  58. package/dist/trpc.d.ts +5 -0
  59. package/dist/trpc.d.ts.map +1 -1
  60. package/dist/trpc.js +35 -26
  61. package/dist/types/trpc.js +1 -2
  62. package/dist/utils/email.js +2 -8
  63. package/dist/utils/generateInviteCode.js +1 -5
  64. package/dist/utils/logger.d.ts.map +1 -1
  65. package/dist/utils/logger.js +13 -9
  66. package/dist/utils/prismaErrorHandler.d.ts +9 -0
  67. package/dist/utils/prismaErrorHandler.d.ts.map +1 -0
  68. package/dist/utils/prismaErrorHandler.js +234 -0
  69. package/dist/utils/prismaWrapper.d.ts +14 -0
  70. package/dist/utils/prismaWrapper.d.ts.map +1 -0
  71. package/dist/utils/prismaWrapper.js +64 -0
  72. package/package.json +11 -4
  73. package/prisma/migrations/20250807062924_init/migration.sql +436 -0
  74. package/prisma/migrations/migration_lock.toml +3 -0
  75. package/prisma/schema.prisma +67 -0
  76. package/src/index.ts +2 -2
  77. package/src/lib/fileUpload.ts +16 -7
  78. package/src/middleware/auth.ts +0 -2
  79. package/src/routers/_app.ts +5 -1
  80. package/src/routers/assignment.ts +82 -22
  81. package/src/routers/auth.ts +80 -54
  82. package/src/routers/class.ts +330 -36
  83. package/src/routers/file.ts +283 -20
  84. package/src/routers/folder.ts +755 -0
  85. package/src/routers/notifications.ts +93 -0
  86. package/src/seedDatabase.ts +66 -0
  87. package/src/socket/handlers.ts +4 -4
  88. package/src/trpc.ts +13 -0
  89. package/src/utils/logger.ts +14 -4
  90. package/src/utils/prismaErrorHandler.ts +275 -0
  91. package/src/utils/prismaWrapper.ts +91 -0
  92. package/tests/auth.test.ts +25 -0
  93. package/tests/class.test.ts +281 -0
  94. package/tests/setup.ts +98 -0
  95. package/tests/startup.test.ts +5 -0
  96. package/tsconfig.json +2 -1
  97. package/vitest.config.ts +11 -0
  98. package/dist/logger.d.ts +0 -26
  99. package/dist/logger.d.ts.map +0 -1
  100. package/dist/logger.js +0 -135
  101. package/src/logger.ts +0 -163
@@ -5,6 +5,7 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
5
5
  errorShape: {
6
6
  data: {
7
7
  zodError: z.typeToFlattenedError<any, string> | null;
8
+ prismaError: import("../utils/prismaErrorHandler").PrismaErrorInfo | null;
8
9
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
9
10
  httpStatus: number;
10
11
  path?: string;
@@ -24,6 +25,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
24
25
  section: string;
25
26
  subject: string;
26
27
  dueToday: {
28
+ type: import(".prisma/client").$Enums.AssignmentType;
29
+ id: string;
30
+ title: string;
31
+ }[];
32
+ assignments: {
33
+ type: import(".prisma/client").$Enums.AssignmentType;
27
34
  id: string;
28
35
  title: string;
29
36
  }[];
@@ -35,17 +42,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
35
42
  section: string;
36
43
  subject: string;
37
44
  dueToday: {
45
+ type: import(".prisma/client").$Enums.AssignmentType;
38
46
  id: string;
39
47
  title: string;
40
48
  }[];
41
- color: string | null;
42
- }[];
43
- adminInClass: {
44
- id: string;
45
- name: string;
46
- section: string;
47
- subject: string;
48
- dueToday: {
49
+ assignments: {
50
+ type: import(".prisma/client").$Enums.AssignmentType;
49
51
  id: string;
50
52
  title: string;
51
53
  }[];
@@ -78,12 +80,13 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
78
80
  name: string;
79
81
  } | null;
80
82
  title: string;
81
- instructions: string;
82
83
  dueDate: Date;
83
- createdAt: Date | null;
84
- graded: boolean;
85
84
  maxGrade: number | null;
85
+ instructions: string;
86
86
  weight: number;
87
+ graded: boolean;
88
+ createdAt: Date | null;
89
+ inProgress: boolean;
87
90
  markScheme: {
88
91
  id: string;
89
92
  structured: string;
@@ -100,12 +103,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
100
103
  }[];
101
104
  announcements: {
102
105
  id: string;
106
+ remarks: string;
103
107
  teacher: {
104
108
  id: string;
105
109
  username: string;
106
110
  };
107
111
  createdAt: Date;
108
- remarks: string;
109
112
  }[];
110
113
  students: {
111
114
  id: string;
@@ -116,10 +119,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
116
119
  username: string;
117
120
  }[];
118
121
  id: string;
122
+ schoolId: string | null;
119
123
  name: string;
120
124
  subject: string;
121
125
  color: string | null;
122
126
  section: string;
127
+ syllabus: string | null;
123
128
  };
124
129
  };
125
130
  meta: object;
@@ -147,15 +152,18 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
147
152
  name: string;
148
153
  subject: string;
149
154
  section: string;
155
+ color?: string | undefined;
150
156
  students?: string[] | undefined;
151
157
  teachers?: string[] | undefined;
152
158
  };
153
159
  output: {
154
160
  id: string;
161
+ schoolId: string | null;
155
162
  name: string;
156
163
  subject: string;
157
164
  color: string | null;
158
165
  section: string;
166
+ syllabus: string | null;
159
167
  };
160
168
  meta: object;
161
169
  }>;
@@ -191,7 +199,9 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
191
199
  email: string;
192
200
  password: string;
193
201
  verified: boolean;
202
+ role: import(".prisma/client").$Enums.UserRole;
194
203
  profileId: string | null;
204
+ schoolId: string | null;
195
205
  };
196
206
  };
197
207
  meta: object;
@@ -206,10 +216,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
206
216
  output: {
207
217
  updatedClass: {
208
218
  id: string;
219
+ schoolId: string | null;
209
220
  name: string;
210
221
  subject: string;
211
222
  color: string | null;
212
223
  section: string;
224
+ syllabus: string | null;
213
225
  };
214
226
  user: {
215
227
  type: "teacher" | "student";
@@ -228,10 +240,12 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
228
240
  output: {
229
241
  updatedClass: {
230
242
  id: string;
243
+ schoolId: string | null;
231
244
  name: string;
232
245
  subject: string;
233
246
  color: string | null;
234
247
  section: string;
248
+ syllabus: string | null;
235
249
  };
236
250
  removedUserId: string;
237
251
  };
@@ -287,8 +301,8 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
287
301
  };
288
302
  } & {
289
303
  id: string;
290
- studentId: string;
291
304
  assignmentId: string;
305
+ studentId: string;
292
306
  gradeReceived: number | null;
293
307
  createdAt: Date;
294
308
  modifiedAt: Date;
@@ -317,8 +331,8 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
317
331
  };
318
332
  } & {
319
333
  id: string;
320
- studentId: string;
321
334
  assignmentId: string;
335
+ studentId: string;
322
336
  gradeReceived: number | null;
323
337
  createdAt: Date;
324
338
  modifiedAt: Date;
@@ -445,5 +459,261 @@ export declare const classRouter: import("@trpc/server").TRPCBuiltRouter<{
445
459
  };
446
460
  meta: object;
447
461
  }>;
462
+ getSyllabus: import("@trpc/server").TRPCQueryProcedure<{
463
+ input: {
464
+ [x: string]: unknown;
465
+ classId: string;
466
+ };
467
+ output: {
468
+ syllabus: string | null | undefined;
469
+ gradingBoundaries: {
470
+ id: string;
471
+ classId: string;
472
+ structured: string;
473
+ }[];
474
+ markSchemes: {
475
+ id: string;
476
+ classId: string;
477
+ structured: string;
478
+ }[];
479
+ };
480
+ meta: object;
481
+ }>;
482
+ updateSyllabus: import("@trpc/server").TRPCMutationProcedure<{
483
+ input: {
484
+ [x: string]: unknown;
485
+ classId: string;
486
+ contents: string;
487
+ };
488
+ output: {
489
+ id: string;
490
+ schoolId: string | null;
491
+ name: string;
492
+ subject: string;
493
+ color: string | null;
494
+ section: string;
495
+ syllabus: string | null;
496
+ };
497
+ meta: object;
498
+ }>;
499
+ listLabDrafts: import("@trpc/server").TRPCQueryProcedure<{
500
+ input: {
501
+ [x: string]: unknown;
502
+ classId: string;
503
+ };
504
+ output: {
505
+ type: import(".prisma/client").$Enums.AssignmentType;
506
+ id: string;
507
+ title: string;
508
+ dueDate: Date;
509
+ maxGrade: number | null;
510
+ classId: string;
511
+ eventId: string | null;
512
+ markSchemeId: string | null;
513
+ gradingBoundaryId: string | null;
514
+ instructions: string;
515
+ weight: number;
516
+ graded: boolean;
517
+ sectionId: string | null;
518
+ template: boolean;
519
+ createdAt: Date | null;
520
+ modifiedAt: Date | null;
521
+ teacherId: string;
522
+ inProgress: boolean;
523
+ }[];
524
+ meta: object;
525
+ }>;
526
+ createLabDraft: import("@trpc/server").TRPCMutationProcedure<{
527
+ input: {
528
+ [x: string]: unknown;
529
+ classId: string;
530
+ type: "LAB" | "HOMEWORK" | "QUIZ" | "TEST" | "PROJECT" | "ESSAY" | "DISCUSSION" | "PRESENTATION" | "OTHER";
531
+ title: string;
532
+ instructions: string;
533
+ dueDate?: Date | undefined;
534
+ maxGrade?: number | undefined;
535
+ markSchemeId?: string | undefined;
536
+ gradingBoundaryId?: string | undefined;
537
+ weight?: number | undefined;
538
+ graded?: boolean | undefined;
539
+ sectionId?: string | undefined;
540
+ };
541
+ output: {
542
+ type: import(".prisma/client").$Enums.AssignmentType;
543
+ id: string;
544
+ title: string;
545
+ dueDate: Date;
546
+ maxGrade: number | null;
547
+ classId: string;
548
+ eventId: string | null;
549
+ markSchemeId: string | null;
550
+ gradingBoundaryId: string | null;
551
+ instructions: string;
552
+ weight: number;
553
+ graded: boolean;
554
+ sectionId: string | null;
555
+ template: boolean;
556
+ createdAt: Date | null;
557
+ modifiedAt: Date | null;
558
+ teacherId: string;
559
+ inProgress: boolean;
560
+ };
561
+ meta: object;
562
+ }>;
563
+ updateLabDraft: import("@trpc/server").TRPCMutationProcedure<{
564
+ input: {
565
+ [x: string]: unknown;
566
+ classId: string;
567
+ draftId: string;
568
+ title?: string | undefined;
569
+ dueDate?: Date | undefined;
570
+ maxGrade?: number | undefined;
571
+ markSchemeId?: string | undefined;
572
+ gradingBoundaryId?: string | undefined;
573
+ instructions?: string | undefined;
574
+ weight?: number | undefined;
575
+ graded?: boolean | undefined;
576
+ sectionId?: string | undefined;
577
+ };
578
+ output: {
579
+ type: import(".prisma/client").$Enums.AssignmentType;
580
+ id: string;
581
+ title: string;
582
+ dueDate: Date;
583
+ maxGrade: number | null;
584
+ classId: string;
585
+ eventId: string | null;
586
+ markSchemeId: string | null;
587
+ gradingBoundaryId: string | null;
588
+ instructions: string;
589
+ weight: number;
590
+ graded: boolean;
591
+ sectionId: string | null;
592
+ template: boolean;
593
+ createdAt: Date | null;
594
+ modifiedAt: Date | null;
595
+ teacherId: string;
596
+ inProgress: boolean;
597
+ };
598
+ meta: object;
599
+ }>;
600
+ deleteLabDraft: import("@trpc/server").TRPCMutationProcedure<{
601
+ input: {
602
+ [x: string]: unknown;
603
+ classId: string;
604
+ draftId: string;
605
+ };
606
+ output: {
607
+ type: import(".prisma/client").$Enums.AssignmentType;
608
+ id: string;
609
+ title: string;
610
+ dueDate: Date;
611
+ maxGrade: number | null;
612
+ classId: string;
613
+ eventId: string | null;
614
+ markSchemeId: string | null;
615
+ gradingBoundaryId: string | null;
616
+ instructions: string;
617
+ weight: number;
618
+ graded: boolean;
619
+ sectionId: string | null;
620
+ template: boolean;
621
+ createdAt: Date | null;
622
+ modifiedAt: Date | null;
623
+ teacherId: string;
624
+ inProgress: boolean;
625
+ };
626
+ meta: object;
627
+ }>;
628
+ publishLabDraft: import("@trpc/server").TRPCMutationProcedure<{
629
+ input: {
630
+ [x: string]: unknown;
631
+ classId: string;
632
+ draftId: string;
633
+ dueDate?: Date | undefined;
634
+ maxGrade?: number | undefined;
635
+ weight?: number | undefined;
636
+ graded?: boolean | undefined;
637
+ };
638
+ output: {
639
+ type: import(".prisma/client").$Enums.AssignmentType;
640
+ id: string;
641
+ title: string;
642
+ dueDate: Date;
643
+ maxGrade: number | null;
644
+ classId: string;
645
+ eventId: string | null;
646
+ markSchemeId: string | null;
647
+ gradingBoundaryId: string | null;
648
+ instructions: string;
649
+ weight: number;
650
+ graded: boolean;
651
+ sectionId: string | null;
652
+ template: boolean;
653
+ createdAt: Date | null;
654
+ modifiedAt: Date | null;
655
+ teacherId: string;
656
+ inProgress: boolean;
657
+ };
658
+ meta: object;
659
+ }>;
660
+ getFiles: import("@trpc/server").TRPCQueryProcedure<{
661
+ input: {
662
+ [x: string]: unknown;
663
+ classId: string;
664
+ };
665
+ output: {
666
+ id: string;
667
+ title: string;
668
+ teacher: {
669
+ id: string;
670
+ username: string;
671
+ };
672
+ teacherAttachments: {
673
+ path: string;
674
+ type: string;
675
+ user: {
676
+ id: string;
677
+ username: string;
678
+ } | null;
679
+ id: string;
680
+ name: string;
681
+ size: number | null;
682
+ uploadedAt: Date | null;
683
+ thumbnailId: string | null;
684
+ }[];
685
+ students: {
686
+ id: string;
687
+ username: string;
688
+ attachments: {
689
+ path: string;
690
+ type: string;
691
+ user: {
692
+ id: string;
693
+ username: string;
694
+ } | null;
695
+ id: string;
696
+ name: string;
697
+ size: number | null;
698
+ uploadedAt: Date | null;
699
+ thumbnailId: string | null;
700
+ }[];
701
+ annotations: {
702
+ path: string;
703
+ type: string;
704
+ user: {
705
+ id: string;
706
+ username: string;
707
+ } | null;
708
+ id: string;
709
+ name: string;
710
+ size: number | null;
711
+ uploadedAt: Date | null;
712
+ thumbnailId: string | null;
713
+ }[];
714
+ }[];
715
+ }[];
716
+ meta: object;
717
+ }>;
448
718
  }>>;
449
719
  //# sourceMappingURL=class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/routers/class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0uBtB,CAAC"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/routers/class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAghCtB,CAAC"}