@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
@@ -1 +1 @@
1
- {"version":3,"file":"labChat.js","sources":["models/labChat.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Lab chat model – AI lab conversations, members, posts. Teacher/student access.\n */\nimport { prisma } from \"../lib/prisma.js\";\n\nconst labChatInclude = {\n conversation: {\n include: {\n members: {\n include: {\n user: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n },\n },\n },\n },\n createdBy: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n class: {\n select: {\n id: true,\n name: true,\n subject: true,\n section: true,\n },\n },\n};\n\n/** @returns Class with students and teachers for lab creation. */\nexport function findClassWithTeachersForLab(classId: string, teacherId: string) {\n return prisma.class.findFirst({\n where: {\n id: classId,\n teachers: { some: { id: teacherId } },\n },\n include: {\n students: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n teachers: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n },\n });\n}\n\n/** @returns Lab chat if user is a conversation member. */\nexport function findLabChatByMember(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n conversation: {\n members: { some: { userId } },\n },\n },\n include: labChatInclude,\n });\n}\n\n/** @returns Lab chat if user is class teacher. */\nexport function findLabChatByTeacher(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n class: {\n teachers: { some: { id: userId } },\n },\n },\n include: {\n conversation: { select: { id: true } },\n },\n });\n}\n\n/** @returns Lab chat by ID. */\nexport function findLabChatById(labChatId: string) {\n return prisma.labChat.findFirst({\n where: { id: labChatId },\n include: labChatInclude,\n });\n}\n\n/** @returns Class if user is student or teacher. */\nexport function findClassMembership(classId: string, userId: string) {\n return prisma.class.findFirst({\n where: {\n id: classId,\n OR: [\n { students: { some: { id: userId } } },\n { teachers: { some: { id: userId } } },\n ],\n },\n });\n}\n\n/** @returns Lab chats for a class. */\nexport function findLabChatsByClass(classId: string) {\n return prisma.labChat.findMany({\n where: { classId },\n include: {\n createdBy: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n conversation: {\n include: {\n messages: {\n orderBy: { createdAt: \"desc\" as const },\n take: 1,\n include: {\n sender: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n },\n },\n _count: { select: { messages: true } },\n },\n },\n },\n orderBy: { createdAt: \"desc\" as const },\n });\n}\n\n/** @returns Lab chat if user can post (member or teacher). */\nexport function findLabChatForPost(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n conversation: {\n members: { some: { userId } },\n },\n },\n include: {\n conversation: { select: { id: true } },\n },\n });\n}\n\n/** @returns Lab chat if user can delete (teacher). */\nexport function findLabChatForDelete(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n createdById: userId,\n },\n });\n}\n\n/** @returns Conversation members for mentioned user IDs. */\nexport function findMentionedMemberships(\n conversationId: string,\n userIds: string[]\n) {\n return prisma.conversationMember.findMany({\n where: {\n conversationId,\n userId: { in: userIds },\n },\n });\n}\n"],"names":[],"mappings":"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","debug_id":"682f7005-c4c4-57cf-a5b6-e52ba1abe288"}
1
+ {"version":3,"file":"labChat.js","sources":["models/labChat.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Lab chat model – AI lab conversations, members, posts. Teacher/student access.\n */\nimport { prisma } from \"../lib/prisma.js\";\nimport {\n classMemberOrSchoolAdminWhere,\n classTeacherOrSchoolAdminWhere,\n} from \"./access.js\";\n\nconst labChatInclude = {\n conversation: {\n include: {\n members: {\n include: {\n user: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n },\n },\n },\n },\n createdBy: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n class: {\n select: {\n id: true,\n name: true,\n subject: true,\n section: true,\n },\n },\n};\n\n/** @returns Class with students and teachers for lab creation. */\nexport function findClassWithTeachersForLab(classId: string, teacherId: string) {\n return prisma.class.findFirst({\n where: {\n id: classId,\n ...classTeacherOrSchoolAdminWhere(teacherId),\n },\n include: {\n students: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n teachers: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n },\n });\n}\n\n/** @returns Lab chat if user is a conversation member. */\nexport function findLabChatByMember(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n conversation: {\n members: { some: { userId } },\n },\n },\n include: labChatInclude,\n });\n}\n\n/** @returns Lab chat if user is class teacher or school admin. */\nexport function findLabChatByTeacher(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n class: {\n ...classTeacherOrSchoolAdminWhere(userId),\n },\n },\n include: {\n conversation: { select: { id: true } },\n },\n });\n}\n\n/** @returns Lab chat by ID. */\nexport function findLabChatById(labChatId: string) {\n return prisma.labChat.findFirst({\n where: { id: labChatId },\n include: labChatInclude,\n });\n}\n\n/** @returns Class if user is student, teacher, or school admin. */\nexport function findClassMembership(classId: string, userId: string) {\n return prisma.class.findFirst({\n where: {\n id: classId,\n ...classMemberOrSchoolAdminWhere(userId),\n },\n });\n}\n\n/** @returns Lab chats for a class. */\nexport function findLabChatsByClass(classId: string) {\n return prisma.labChat.findMany({\n where: { classId },\n include: {\n createdBy: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n conversation: {\n include: {\n messages: {\n orderBy: { createdAt: \"desc\" as const },\n take: 1,\n include: {\n sender: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n },\n },\n _count: { select: { messages: true } },\n },\n },\n },\n orderBy: { createdAt: \"desc\" as const },\n });\n}\n\n/** @returns Lab chat if user can post (member or teacher). */\nexport function findLabChatForPost(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n conversation: {\n members: { some: { userId } },\n },\n },\n include: {\n conversation: { select: { id: true } },\n },\n });\n}\n\n/** @returns Lab chat if user can delete (teacher). */\nexport function findLabChatForDelete(labChatId: string, userId: string) {\n return prisma.labChat.findFirst({\n where: {\n id: labChatId,\n createdById: userId,\n },\n });\n}\n\n/** @returns Conversation members for mentioned user IDs. */\nexport function findMentionedMemberships(\n conversationId: string,\n userIds: string[]\n) {\n return prisma.conversationMember.findMany({\n where: {\n conversationId,\n userId: { in: userIds },\n },\n });\n}\n"],"names":[],"mappings":"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","debug_id":"f519e035-445f-5c41-80c4-de7dd81d94e2"}
@@ -77,8 +77,8 @@ export declare function createEarlyAccessRequest(data: {
77
77
  institutionSize: string;
78
78
  }): import(".prisma/client").Prisma.Prisma__EarlyAccessRequestClient<{
79
79
  id: string;
80
- email: string;
81
80
  createdAt: Date;
81
+ email: string;
82
82
  institutionSize: string;
83
83
  }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
84
84
  datasources: {
@@ -1,9 +1,9 @@
1
1
  /** @returns User's membership in a conversation. */
2
2
  export declare function findConversationMembership(conversationId: string, userId: string): import(".prisma/client").Prisma.Prisma__ConversationMemberClient<{
3
3
  id: string;
4
+ role: import(".prisma/client").$Enums.ConversationRole;
4
5
  userId: string;
5
6
  conversationId: string;
6
- role: import(".prisma/client").$Enums.ConversationRole;
7
7
  joinedAt: Date;
8
8
  hiddenAt: Date | null;
9
9
  lastViewedAt: Date | null;
@@ -30,9 +30,9 @@ export declare function findMessages(conversationId: string, options: {
30
30
  };
31
31
  } & {
32
32
  id: string;
33
+ createdAt: Date;
33
34
  userId: string;
34
35
  messageId: string;
35
- createdAt: Date;
36
36
  })[];
37
37
  attachments: {
38
38
  type: string;
@@ -51,17 +51,17 @@ export declare function findMessages(conversationId: string, options: {
51
51
  status: import(".prisma/client").$Enums.GenerationStatus | null;
52
52
  meta: import("@prisma/client/runtime/library.js").JsonValue | null;
53
53
  id: string;
54
- conversationId: string;
55
54
  createdAt: Date;
55
+ conversationId: string;
56
56
  content: string;
57
57
  senderId: string;
58
58
  })[]>;
59
59
  /** @returns Memberships for mentioned users. */
60
60
  export declare function findMentionedMemberships(conversationId: string, userIds: string[]): import(".prisma/client").Prisma.PrismaPromise<{
61
61
  id: string;
62
+ role: import(".prisma/client").$Enums.ConversationRole;
62
63
  userId: string;
63
64
  conversationId: string;
64
- role: import(".prisma/client").$Enums.ConversationRole;
65
65
  joinedAt: Date;
66
66
  hiddenAt: Date | null;
67
67
  lastViewedAt: Date | null;
@@ -81,8 +81,8 @@ export declare function findMessageById(messageId: string): import(".prisma/clie
81
81
  status: import(".prisma/client").$Enums.GenerationStatus | null;
82
82
  meta: import("@prisma/client/runtime/library.js").JsonValue | null;
83
83
  id: string;
84
- conversationId: string;
85
84
  createdAt: Date;
85
+ conversationId: string;
86
86
  content: string;
87
87
  senderId: string;
88
88
  }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
@@ -102,8 +102,8 @@ export declare function findMessageByIdMinimal(messageId: string): import(".pris
102
102
  status: import(".prisma/client").$Enums.GenerationStatus | null;
103
103
  meta: import("@prisma/client/runtime/library.js").JsonValue | null;
104
104
  id: string;
105
- conversationId: string;
106
105
  createdAt: Date;
106
+ conversationId: string;
107
107
  content: string;
108
108
  senderId: string;
109
109
  }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
@@ -17,8 +17,8 @@ export declare function findClassWithStudent(classId: string, studentId: string)
17
17
  /** @returns Submission for assignment and student. */
18
18
  export declare function findSubmissionByAssignmentAndStudent(assignmentId: string, studentId: string): import(".prisma/client").Prisma.Prisma__SubmissionClient<{
19
19
  id: string;
20
- assignmentId: string;
21
20
  createdAt: Date;
21
+ assignmentId: string;
22
22
  modifiedAt: Date;
23
23
  studentId: string;
24
24
  extendedResponse: string | null;
@@ -51,8 +51,8 @@ export declare function findNewtonChatByIdAndMember(newtonChatId: string, userId
51
51
  };
52
52
  } & {
53
53
  id: string;
54
- assignmentId: string;
55
54
  createdAt: Date;
55
+ assignmentId: string;
56
56
  modifiedAt: Date;
57
57
  studentId: string;
58
58
  extendedResponse: string | null;
@@ -71,11 +71,11 @@ export declare function findNewtonChatByIdAndMember(newtonChatId: string, userId
71
71
  };
72
72
  } & {
73
73
  id: string;
74
+ createdAt: Date;
75
+ updatedAt: Date;
74
76
  submissionId: string;
75
77
  conversationId: string;
76
- createdAt: Date;
77
78
  title: string;
78
- updatedAt: Date;
79
79
  }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
80
80
  datasources: {
81
81
  db: {
@@ -86,9 +86,9 @@ export declare function findNewtonChatByIdAndMember(newtonChatId: string, userId
86
86
  /** @returns Conversation members for given user IDs. */
87
87
  export declare function findConversationMembersByUserIds(conversationId: string, userIds: string[]): import(".prisma/client").Prisma.PrismaPromise<{
88
88
  id: string;
89
+ role: import(".prisma/client").$Enums.ConversationRole;
89
90
  userId: string;
90
91
  conversationId: string;
91
- role: import(".prisma/client").$Enums.ConversationRole;
92
92
  joinedAt: Date;
93
93
  hiddenAt: Date | null;
94
94
  lastViewedAt: Date | null;
@@ -0,0 +1,361 @@
1
+ /**
2
+ * School model - school membership, invites, and admin lookups.
3
+ */
4
+ import { SchoolMembershipRole } from "@prisma/client";
5
+ export declare function findSchoolMembership(schoolId: string, userId: string): import(".prisma/client").Prisma.Prisma__SchoolMembershipClient<{
6
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
7
+ id: string;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
11
+ schoolId: string;
12
+ userId: string;
13
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
14
+ datasources: {
15
+ db: {
16
+ url: string;
17
+ };
18
+ };
19
+ }>;
20
+ export declare function findActiveSchoolMembership(schoolId: string, userId: string): import(".prisma/client").Prisma.Prisma__SchoolMembershipClient<{
21
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
22
+ id: string;
23
+ createdAt: Date;
24
+ updatedAt: Date;
25
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
26
+ schoolId: string;
27
+ userId: string;
28
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
29
+ datasources: {
30
+ db: {
31
+ url: string;
32
+ };
33
+ };
34
+ }>;
35
+ export declare function findActiveSchoolAdminMembership(schoolId: string, userId: string): import(".prisma/client").Prisma.Prisma__SchoolMembershipClient<{
36
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
37
+ id: string;
38
+ createdAt: Date;
39
+ updatedAt: Date;
40
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
41
+ schoolId: string;
42
+ userId: string;
43
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
44
+ datasources: {
45
+ db: {
46
+ url: string;
47
+ };
48
+ };
49
+ }>;
50
+ export declare function listUserSchoolMemberships(userId: string): import(".prisma/client").Prisma.PrismaPromise<({
51
+ school: {
52
+ name: string;
53
+ id: string;
54
+ logoId: string | null;
55
+ subdomain: string | null;
56
+ createdAt: Date;
57
+ updatedAt: Date;
58
+ };
59
+ } & {
60
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
61
+ id: string;
62
+ createdAt: Date;
63
+ updatedAt: Date;
64
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
65
+ schoolId: string;
66
+ userId: string;
67
+ })[]>;
68
+ export declare function createSchoolWithAdmin(data: {
69
+ name: string;
70
+ subdomain?: string;
71
+ logoId?: string;
72
+ userId: string;
73
+ }): import(".prisma/client").Prisma.Prisma__SchoolClient<{
74
+ memberships: {
75
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
76
+ id: string;
77
+ createdAt: Date;
78
+ updatedAt: Date;
79
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
80
+ schoolId: string;
81
+ userId: string;
82
+ }[];
83
+ } & {
84
+ name: string;
85
+ id: string;
86
+ logoId: string | null;
87
+ subdomain: string | null;
88
+ createdAt: Date;
89
+ updatedAt: Date;
90
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
91
+ datasources: {
92
+ db: {
93
+ url: string;
94
+ };
95
+ };
96
+ }>;
97
+ export declare function getSchoolById(schoolId: string): import(".prisma/client").Prisma.Prisma__SchoolClient<{
98
+ name: string;
99
+ id: string;
100
+ logoId: string | null;
101
+ subdomain: string | null;
102
+ createdAt: Date;
103
+ updatedAt: Date;
104
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
105
+ datasources: {
106
+ db: {
107
+ url: string;
108
+ };
109
+ };
110
+ }>;
111
+ export declare function getSchoolOverview(schoolId: string): import(".prisma/client").Prisma.Prisma__SchoolClient<{
112
+ name: string;
113
+ id: string;
114
+ subdomain: string | null;
115
+ _count: {
116
+ memberships: number;
117
+ invites: number;
118
+ classes: number;
119
+ };
120
+ memberships: {
121
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
122
+ }[];
123
+ invites: {
124
+ id: string;
125
+ createdAt: Date;
126
+ email: string;
127
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
128
+ expiresAt: Date;
129
+ }[];
130
+ classes: {
131
+ name: string;
132
+ id: string;
133
+ subject: string;
134
+ color: string | null;
135
+ section: string;
136
+ _count: {
137
+ teachers: number;
138
+ students: number;
139
+ };
140
+ }[];
141
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
142
+ datasources: {
143
+ db: {
144
+ url: string;
145
+ };
146
+ };
147
+ }>;
148
+ export declare function listSchoolClasses(schoolId: string): import(".prisma/client").Prisma.PrismaPromise<({
149
+ _count: {
150
+ assignments: number;
151
+ teachers: number;
152
+ students: number;
153
+ };
154
+ teachers: {
155
+ id: string;
156
+ username: string;
157
+ profile: {
158
+ displayName: string | null;
159
+ profilePicture: string | null;
160
+ profilePictureThumbnail: string | null;
161
+ } | null;
162
+ }[];
163
+ students: {
164
+ id: string;
165
+ }[];
166
+ } & {
167
+ name: string;
168
+ id: string;
169
+ schoolId: string | null;
170
+ subject: string;
171
+ color: string | null;
172
+ section: string;
173
+ syllabus: string | null;
174
+ })[]>;
175
+ export declare function listSchoolMembers(schoolId: string): import(".prisma/client").Prisma.PrismaPromise<{
176
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
177
+ id: string;
178
+ createdAt: Date;
179
+ updatedAt: Date;
180
+ user: {
181
+ id: string;
182
+ username: string;
183
+ email: string;
184
+ profile: {
185
+ displayName: string | null;
186
+ profilePicture: string | null;
187
+ profilePictureThumbnail: string | null;
188
+ } | null;
189
+ };
190
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
191
+ }[]>;
192
+ export declare function countActiveAdmins(schoolId: string): import(".prisma/client").Prisma.PrismaPromise<number>;
193
+ export declare function upsertSchoolMembership(data: {
194
+ schoolId: string;
195
+ userId: string;
196
+ role: SchoolMembershipRole;
197
+ }): import(".prisma/client").Prisma.Prisma__SchoolMembershipClient<{
198
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
199
+ id: string;
200
+ createdAt: Date;
201
+ updatedAt: Date;
202
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
203
+ schoolId: string;
204
+ userId: string;
205
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
206
+ datasources: {
207
+ db: {
208
+ url: string;
209
+ };
210
+ };
211
+ }>;
212
+ export declare function updateSchoolMembershipRole(schoolId: string, userId: string, role: SchoolMembershipRole): import(".prisma/client").Prisma.Prisma__SchoolMembershipClient<{
213
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
214
+ id: string;
215
+ createdAt: Date;
216
+ updatedAt: Date;
217
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
218
+ schoolId: string;
219
+ userId: string;
220
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
221
+ datasources: {
222
+ db: {
223
+ url: string;
224
+ };
225
+ };
226
+ }>;
227
+ export declare function removeSchoolMembershipPreservingContent(schoolId: string, userId: string): Promise<{
228
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
229
+ id: string;
230
+ createdAt: Date;
231
+ updatedAt: Date;
232
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
233
+ schoolId: string;
234
+ userId: string;
235
+ }>;
236
+ export declare function findUserByEmailForSchool(email: string): import(".prisma/client").Prisma.Prisma__UserClient<{
237
+ id: string;
238
+ username: string;
239
+ email: string;
240
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
241
+ datasources: {
242
+ db: {
243
+ url: string;
244
+ };
245
+ };
246
+ }>;
247
+ export declare function findUserByIdForSchool(userId: string): import(".prisma/client").Prisma.Prisma__UserClient<{
248
+ id: string;
249
+ username: string;
250
+ email: string;
251
+ } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
252
+ datasources: {
253
+ db: {
254
+ url: string;
255
+ };
256
+ };
257
+ }>;
258
+ export declare function createSchoolInvite(data: {
259
+ schoolId: string;
260
+ invitedById: string;
261
+ email: string;
262
+ role: SchoolMembershipRole;
263
+ token: string;
264
+ expiresAt: Date;
265
+ }): import(".prisma/client").Prisma.Prisma__SchoolInviteClient<{
266
+ school: {
267
+ name: string;
268
+ id: string;
269
+ };
270
+ } & {
271
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
272
+ id: string;
273
+ createdAt: Date;
274
+ updatedAt: Date;
275
+ email: string;
276
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
277
+ schoolId: string;
278
+ token: string;
279
+ expiresAt: Date;
280
+ acceptedAt: Date | null;
281
+ revokedAt: Date | null;
282
+ invitedById: string;
283
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
284
+ datasources: {
285
+ db: {
286
+ url: string;
287
+ };
288
+ };
289
+ }>;
290
+ export declare function listSchoolInvites(schoolId: string): import(".prisma/client").Prisma.PrismaPromise<{
291
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
292
+ id: string;
293
+ createdAt: Date;
294
+ email: string;
295
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
296
+ expiresAt: Date;
297
+ acceptedAt: Date | null;
298
+ revokedAt: Date | null;
299
+ invitedBy: {
300
+ id: string;
301
+ username: string;
302
+ profile: {
303
+ displayName: string | null;
304
+ } | null;
305
+ };
306
+ }[]>;
307
+ export declare function revokeSchoolInvite(inviteId: string, schoolId: string): import(".prisma/client").Prisma.Prisma__SchoolInviteClient<{
308
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
309
+ id: string;
310
+ createdAt: Date;
311
+ updatedAt: Date;
312
+ email: string;
313
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
314
+ schoolId: string;
315
+ token: string;
316
+ expiresAt: Date;
317
+ acceptedAt: Date | null;
318
+ revokedAt: Date | null;
319
+ invitedById: string;
320
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
321
+ datasources: {
322
+ db: {
323
+ url: string;
324
+ };
325
+ };
326
+ }>;
327
+ export declare function findPendingInviteByToken(token: string): import(".prisma/client").Prisma.Prisma__SchoolInviteClient<({
328
+ school: {
329
+ name: string;
330
+ id: string;
331
+ };
332
+ } & {
333
+ status: import(".prisma/client").$Enums.SchoolInviteStatus;
334
+ id: string;
335
+ createdAt: Date;
336
+ updatedAt: Date;
337
+ email: string;
338
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
339
+ schoolId: string;
340
+ token: string;
341
+ expiresAt: Date;
342
+ acceptedAt: Date | null;
343
+ revokedAt: Date | null;
344
+ invitedById: string;
345
+ }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
346
+ datasources: {
347
+ db: {
348
+ url: string;
349
+ };
350
+ };
351
+ }>;
352
+ export declare function acceptSchoolInvite(inviteId: string, userId: string): Promise<{
353
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
354
+ id: string;
355
+ createdAt: Date;
356
+ updatedAt: Date;
357
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
358
+ schoolId: string;
359
+ userId: string;
360
+ }>;
361
+ //# sourceMappingURL=school.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"school.d.ts","sourceRoot":"/","sources":["models/school.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAyBtD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;GAIpE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;GAI1E;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;GAI/E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;MAiBvD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;GAoBA;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;GAY7C;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;MAsBjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;KAMjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,yDAIjD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,oBAAoB,CAAC;CAC5B;;;;;;;;;;;;;;GAmBA;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,oBAAoB;;;;;;;;;;;;;;GAM3B;AAED,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;GAsBvF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;GAKrD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;GAKnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;;;;;;;;;;;;;;;;;;;;;;;;GAOA;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;KAsBjD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;GAQpE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAKrD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;GAuClE"}