@studious-lms/server 1.6.0 → 1.8.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.
Files changed (212) hide show
  1. package/dist/models/access.d.ts +21 -66
  2. package/dist/models/access.d.ts.map +1 -1
  3. package/dist/models/access.js +10 -26
  4. package/dist/models/access.js.map +1 -1
  5. package/dist/models/agenda.d.ts +2 -0
  6. package/dist/models/agenda.d.ts.map +1 -1
  7. package/dist/models/announcement.d.ts +2 -1
  8. package/dist/models/announcement.d.ts.map +1 -1
  9. package/dist/models/announcement.js +2 -3
  10. package/dist/models/announcement.js.map +1 -1
  11. package/dist/models/assignment.d.ts +7 -0
  12. package/dist/models/assignment.d.ts.map +1 -1
  13. package/dist/models/auth.d.ts +2 -4
  14. package/dist/models/auth.d.ts.map +1 -1
  15. package/dist/models/auth.js +2 -3
  16. package/dist/models/auth.js.map +1 -1
  17. package/dist/models/class.d.ts +32 -4
  18. package/dist/models/class.d.ts.map +1 -1
  19. package/dist/models/class.js +15 -2
  20. package/dist/models/class.js.map +1 -1
  21. package/dist/models/cloudStorage.d.ts +140 -0
  22. package/dist/models/cloudStorage.d.ts.map +1 -0
  23. package/dist/models/cloudStorage.js +175 -0
  24. package/dist/models/cloudStorage.js.map +1 -0
  25. package/dist/models/comment.d.ts +0 -24
  26. package/dist/models/comment.d.ts.map +1 -1
  27. package/dist/models/comment.js +2 -6
  28. package/dist/models/comment.js.map +1 -1
  29. package/dist/models/conversation.d.ts +38 -22
  30. package/dist/models/conversation.d.ts.map +1 -1
  31. package/dist/models/conversation.js +50 -2
  32. package/dist/models/conversation.js.map +1 -1
  33. package/dist/models/department.d.ts +154 -0
  34. package/dist/models/department.d.ts.map +1 -0
  35. package/dist/models/department.js +135 -0
  36. package/dist/models/department.js.map +1 -0
  37. package/dist/models/event.d.ts +7 -1
  38. package/dist/models/event.d.ts.map +1 -1
  39. package/dist/models/event.js +2 -5
  40. package/dist/models/event.js.map +1 -1
  41. package/dist/models/file.d.ts +25 -10
  42. package/dist/models/file.d.ts.map +1 -1
  43. package/dist/models/file.js +2 -5
  44. package/dist/models/file.js.map +1 -1
  45. package/dist/models/folder.d.ts +47 -0
  46. package/dist/models/folder.d.ts.map +1 -1
  47. package/dist/models/labChat.d.ts +5 -3
  48. package/dist/models/labChat.d.ts.map +1 -1
  49. package/dist/models/message.d.ts +46 -12
  50. package/dist/models/message.d.ts.map +1 -1
  51. package/dist/models/message.js +19 -10
  52. package/dist/models/message.js.map +1 -1
  53. package/dist/models/newtonChat.d.ts +2 -1
  54. package/dist/models/newtonChat.d.ts.map +1 -1
  55. package/dist/models/school.d.ts +45 -12
  56. package/dist/models/school.d.ts.map +1 -1
  57. package/dist/models/school.js +19 -2
  58. package/dist/models/school.js.map +1 -1
  59. package/dist/models/section.d.ts +1 -0
  60. package/dist/models/section.d.ts.map +1 -1
  61. package/dist/models/tag.d.ts +117 -0
  62. package/dist/models/tag.d.ts.map +1 -0
  63. package/dist/models/tag.js +113 -0
  64. package/dist/models/tag.js.map +1 -0
  65. package/dist/models/worksheet.d.ts +3 -0
  66. package/dist/models/worksheet.d.ts.map +1 -1
  67. package/dist/pipelines/aiLabChatContract.d.ts +8 -8
  68. package/dist/routers/_app.d.ts +3556 -2298
  69. package/dist/routers/_app.d.ts.map +1 -1
  70. package/dist/routers/_app.js +6 -2
  71. package/dist/routers/_app.js.map +1 -1
  72. package/dist/routers/agenda.d.ts +2 -0
  73. package/dist/routers/agenda.d.ts.map +1 -1
  74. package/dist/routers/announcement.d.ts.map +1 -1
  75. package/dist/routers/announcement.js +3 -5
  76. package/dist/routers/announcement.js.map +1 -1
  77. package/dist/routers/assignment.d.ts +18 -9
  78. package/dist/routers/assignment.d.ts.map +1 -1
  79. package/dist/routers/assignment.js +2 -3
  80. package/dist/routers/assignment.js.map +1 -1
  81. package/dist/routers/class.d.ts +87 -14
  82. package/dist/routers/class.d.ts.map +1 -1
  83. package/dist/routers/class.js +5 -2
  84. package/dist/routers/class.js.map +1 -1
  85. package/dist/routers/conversation.d.ts +20 -5
  86. package/dist/routers/conversation.d.ts.map +1 -1
  87. package/dist/routers/conversation.js +6 -3
  88. package/dist/routers/conversation.js.map +1 -1
  89. package/dist/routers/department.d.ts +293 -0
  90. package/dist/routers/department.d.ts.map +1 -0
  91. package/dist/routers/department.js +93 -0
  92. package/dist/routers/department.js.map +1 -0
  93. package/dist/routers/event.d.ts +2 -1
  94. package/dist/routers/event.d.ts.map +1 -1
  95. package/dist/routers/file.d.ts +8 -6
  96. package/dist/routers/file.d.ts.map +1 -1
  97. package/dist/routers/file.js +26 -17
  98. package/dist/routers/file.js.map +1 -1
  99. package/dist/routers/folder.d.ts +139 -186
  100. package/dist/routers/folder.d.ts.map +1 -1
  101. package/dist/routers/folder.js +82 -90
  102. package/dist/routers/folder.js.map +1 -1
  103. package/dist/routers/labChat.d.ts +11 -2
  104. package/dist/routers/labChat.d.ts.map +1 -1
  105. package/dist/routers/message.d.ts +20 -2
  106. package/dist/routers/message.d.ts.map +1 -1
  107. package/dist/routers/newtonChat.d.ts +9 -0
  108. package/dist/routers/newtonChat.d.ts.map +1 -1
  109. package/dist/routers/school.d.ts +160 -17
  110. package/dist/routers/school.d.ts.map +1 -1
  111. package/dist/routers/school.js +46 -3
  112. package/dist/routers/school.js.map +1 -1
  113. package/dist/routers/tag.d.ts +119 -0
  114. package/dist/routers/tag.d.ts.map +1 -0
  115. package/dist/routers/tag.js +52 -0
  116. package/dist/routers/tag.js.map +1 -0
  117. package/dist/routers/worksheet.d.ts +1 -0
  118. package/dist/routers/worksheet.d.ts.map +1 -1
  119. package/dist/seedDatabase.d.ts +0 -1
  120. package/dist/seedDatabase.d.ts.map +1 -1
  121. package/dist/services/agenda.d.ts +2 -0
  122. package/dist/services/agenda.d.ts.map +1 -1
  123. package/dist/services/assignment.d.ts +18 -9
  124. package/dist/services/assignment.d.ts.map +1 -1
  125. package/dist/services/assignment.js +4 -4
  126. package/dist/services/assignment.js.map +1 -1
  127. package/dist/services/class.d.ts +87 -14
  128. package/dist/services/class.d.ts.map +1 -1
  129. package/dist/services/class.js +91 -4
  130. package/dist/services/class.js.map +1 -1
  131. package/dist/services/conversation.d.ts +21 -5
  132. package/dist/services/conversation.d.ts.map +1 -1
  133. package/dist/services/conversation.js +22 -3
  134. package/dist/services/conversation.js.map +1 -1
  135. package/dist/services/department.d.ts +200 -0
  136. package/dist/services/department.d.ts.map +1 -0
  137. package/dist/services/department.js +368 -0
  138. package/dist/services/department.js.map +1 -0
  139. package/dist/services/event.d.ts +2 -1
  140. package/dist/services/event.d.ts.map +1 -1
  141. package/dist/services/file.d.ts +85 -0
  142. package/dist/services/file.d.ts.map +1 -1
  143. package/dist/services/file.js +92 -2
  144. package/dist/services/file.js.map +1 -1
  145. package/dist/services/folder.d.ts +125 -149
  146. package/dist/services/folder.d.ts.map +1 -1
  147. package/dist/services/folder.js +258 -199
  148. package/dist/services/folder.js.map +1 -1
  149. package/dist/services/labChat.d.ts +11 -2
  150. package/dist/services/labChat.d.ts.map +1 -1
  151. package/dist/services/labChat.js +8 -7
  152. package/dist/services/labChat.js.map +1 -1
  153. package/dist/services/message.d.ts +20 -2
  154. package/dist/services/message.d.ts.map +1 -1
  155. package/dist/services/message.js +7 -23
  156. package/dist/services/message.js.map +1 -1
  157. package/dist/services/newtonChat.d.ts +9 -0
  158. package/dist/services/newtonChat.d.ts.map +1 -1
  159. package/dist/services/newtonChat.js +7 -6
  160. package/dist/services/newtonChat.js.map +1 -1
  161. package/dist/services/school.d.ts +142 -15
  162. package/dist/services/school.d.ts.map +1 -1
  163. package/dist/services/school.js +308 -54
  164. package/dist/services/school.js.map +1 -1
  165. package/dist/services/tag.d.ts +71 -0
  166. package/dist/services/tag.d.ts.map +1 -0
  167. package/dist/services/tag.js +178 -0
  168. package/dist/services/tag.js.map +1 -0
  169. package/dist/services/worksheet.d.ts +1 -0
  170. package/dist/services/worksheet.d.ts.map +1 -1
  171. package/dist/utils/aiUser.d.ts.map +1 -1
  172. package/dist/utils/aiUser.js +2 -3
  173. package/dist/utils/aiUser.js.map +1 -1
  174. package/package.json +1 -1
  175. package/prisma/migrations/20260509220000_institution_overhaul/migration.sql +184 -0
  176. package/prisma/schema.prisma +119 -35
  177. package/src/models/access.ts +8 -24
  178. package/src/models/announcement.ts +0 -1
  179. package/src/models/auth.ts +0 -1
  180. package/src/models/class.ts +13 -0
  181. package/src/models/cloudStorage.ts +194 -0
  182. package/src/models/comment.ts +0 -4
  183. package/src/models/conversation.ts +54 -0
  184. package/src/models/department.ts +159 -0
  185. package/src/models/event.ts +0 -3
  186. package/src/models/file.ts +0 -3
  187. package/src/models/message.ts +19 -5
  188. package/src/models/school.ts +26 -0
  189. package/src/models/tag.ts +140 -0
  190. package/src/routers/_app.ts +4 -0
  191. package/src/routers/announcement.ts +1 -3
  192. package/src/routers/assignment.ts +0 -1
  193. package/src/routers/class.ts +3 -0
  194. package/src/routers/conversation.ts +7 -0
  195. package/src/routers/department.ts +174 -0
  196. package/src/routers/file.ts +29 -26
  197. package/src/routers/folder.ts +100 -121
  198. package/src/routers/school.ts +83 -0
  199. package/src/routers/tag.ts +78 -0
  200. package/src/services/assignment.ts +2 -3
  201. package/src/services/class.ts +108 -3
  202. package/src/services/conversation.ts +30 -0
  203. package/src/services/department.ts +478 -0
  204. package/src/services/file.ts +100 -0
  205. package/src/services/folder.ts +313 -240
  206. package/src/services/labChat.ts +7 -6
  207. package/src/services/message.ts +5 -21
  208. package/src/services/newtonChat.ts +5 -5
  209. package/src/services/school.ts +369 -57
  210. package/src/services/tag.ts +229 -0
  211. package/src/utils/aiUser.ts +0 -1
  212. package/tests/integration/routers/conversation.test.ts +121 -2
@@ -24,6 +24,7 @@ export declare function findClassWithTeachersForLab(classId: string, teacherId:
24
24
  color: string | null;
25
25
  section: string;
26
26
  syllabus: string | null;
27
+ departmentId: string | null;
27
28
  }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
28
29
  datasources: {
29
30
  db: {
@@ -51,8 +52,8 @@ export declare function findLabChatByMember(labChatId: string, userId: string):
51
52
  };
52
53
  } & {
53
54
  id: string;
54
- role: import(".prisma/client").$Enums.ConversationRole;
55
55
  userId: string;
56
+ role: import(".prisma/client").$Enums.ConversationRole;
56
57
  conversationId: string;
57
58
  joinedAt: Date;
58
59
  hiddenAt: Date | null;
@@ -132,8 +133,8 @@ export declare function findLabChatById(labChatId: string): import(".prisma/clie
132
133
  };
133
134
  } & {
134
135
  id: string;
135
- role: import(".prisma/client").$Enums.ConversationRole;
136
136
  userId: string;
137
+ role: import(".prisma/client").$Enums.ConversationRole;
137
138
  conversationId: string;
138
139
  joinedAt: Date;
139
140
  hiddenAt: Date | null;
@@ -181,6 +182,7 @@ export declare function findClassMembership(classId: string, userId: string): im
181
182
  color: string | null;
182
183
  section: string;
183
184
  syllabus: string | null;
185
+ departmentId: string | null;
184
186
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
185
187
  datasources: {
186
188
  db: {
@@ -278,8 +280,8 @@ export declare function findLabChatForDelete(labChatId: string, userId: string):
278
280
  /** @returns Conversation members for mentioned user IDs. */
279
281
  export declare function findMentionedMemberships(conversationId: string, userIds: string[]): import(".prisma/client").Prisma.PrismaPromise<{
280
282
  id: string;
281
- role: import(".prisma/client").$Enums.ConversationRole;
282
283
  userId: string;
284
+ role: import(".prisma/client").$Enums.ConversationRole;
283
285
  conversationId: string;
284
286
  joinedAt: Date;
285
287
  hiddenAt: Date | null;
@@ -1 +1 @@
1
- {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["models/labChat.ts"],"names":[],"mappings":"AAoDA,kEAAkE;AAClE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiC7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUpE;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;GAYrE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKhD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;GAOlE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwClD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;GAYnE;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;GAOrE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}
1
+ {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["models/labChat.ts"],"names":[],"mappings":"AAoDA,kEAAkE;AAClE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiC7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUpE;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;GAYrE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKhD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;GAOlE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwClD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;GAYnE;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;GAOrE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}
@@ -1,8 +1,33 @@
1
+ /**
2
+ * Message model – messages, attachments, mentions, unread counts.
3
+ */
4
+ import type { Prisma } from "@prisma/client";
5
+ /**
6
+ * Canonical shape for File rows surfaced as message attachments.
7
+ * Use this everywhere a message (list, send, update, suggestion broadcast)
8
+ * exposes attached files so the wire shape stays in sync.
9
+ */
10
+ export declare const messageFileSelect: {
11
+ readonly id: true;
12
+ readonly name: true;
13
+ readonly type: true;
14
+ readonly size: true;
15
+ readonly path: true;
16
+ readonly uploadedAt: true;
17
+ readonly uploadStatus: true;
18
+ readonly thumbnailId: true;
19
+ readonly thumbnail: {
20
+ readonly select: {
21
+ readonly id: true;
22
+ readonly path: true;
23
+ };
24
+ };
25
+ };
1
26
  /** @returns User's membership in a conversation. */
2
- export declare function findConversationMembership(conversationId: string, userId: string): import(".prisma/client").Prisma.Prisma__ConversationMemberClient<{
27
+ export declare function findConversationMembership(conversationId: string, userId: string): Prisma.Prisma__ConversationMemberClient<{
3
28
  id: string;
4
- role: import(".prisma/client").$Enums.ConversationRole;
5
29
  userId: string;
30
+ role: import(".prisma/client").$Enums.ConversationRole;
6
31
  conversationId: string;
7
32
  joinedAt: Date;
8
33
  hiddenAt: Date | null;
@@ -19,7 +44,7 @@ export declare function findConversationMembership(conversationId: string, userI
19
44
  export declare function findMessages(conversationId: string, options: {
20
45
  cursor?: Date;
21
46
  limit: number;
22
- }): import(".prisma/client").Prisma.PrismaPromise<({
47
+ }): Prisma.PrismaPromise<({
23
48
  mentions: ({
24
49
  user: {
25
50
  id: string;
@@ -35,9 +60,18 @@ export declare function findMessages(conversationId: string, options: {
35
60
  messageId: string;
36
61
  })[];
37
62
  attachments: {
63
+ path: string;
38
64
  type: string;
39
65
  name: string;
40
66
  id: string;
67
+ size: number | null;
68
+ uploadedAt: Date | null;
69
+ uploadStatus: import(".prisma/client").$Enums.UploadStatus;
70
+ thumbnailId: string | null;
71
+ thumbnail: {
72
+ path: string;
73
+ id: string;
74
+ } | null;
41
75
  }[];
42
76
  sender: {
43
77
  id: string;
@@ -49,7 +83,7 @@ export declare function findMessages(conversationId: string, options: {
49
83
  };
50
84
  } & {
51
85
  status: import(".prisma/client").$Enums.JobStatus | null;
52
- meta: import("@prisma/client/runtime/library.js").JsonValue | null;
86
+ meta: Prisma.JsonValue | null;
53
87
  id: string;
54
88
  createdAt: Date;
55
89
  conversationId: string;
@@ -58,10 +92,10 @@ export declare function findMessages(conversationId: string, options: {
58
92
  runJobId: string | null;
59
93
  })[]>;
60
94
  /** @returns Memberships for mentioned users. */
61
- export declare function findMentionedMemberships(conversationId: string, userIds: string[]): import(".prisma/client").Prisma.PrismaPromise<{
95
+ export declare function findMentionedMemberships(conversationId: string, userIds: string[]): Prisma.PrismaPromise<{
62
96
  id: string;
63
- role: import(".prisma/client").$Enums.ConversationRole;
64
97
  userId: string;
98
+ role: import(".prisma/client").$Enums.ConversationRole;
65
99
  conversationId: string;
66
100
  joinedAt: Date;
67
101
  hiddenAt: Date | null;
@@ -69,7 +103,7 @@ export declare function findMentionedMemberships(conversationId: string, userIds
69
103
  lastViewedMentionAt: Date | null;
70
104
  }[]>;
71
105
  /** @returns Message by ID with sender. */
72
- export declare function findMessageById(messageId: string): import(".prisma/client").Prisma.Prisma__MessageClient<({
106
+ export declare function findMessageById(messageId: string): Prisma.Prisma__MessageClient<({
73
107
  sender: {
74
108
  id: string;
75
109
  username: string;
@@ -80,7 +114,7 @@ export declare function findMessageById(messageId: string): import(".prisma/clie
80
114
  };
81
115
  } & {
82
116
  status: import(".prisma/client").$Enums.JobStatus | null;
83
- meta: import("@prisma/client/runtime/library.js").JsonValue | null;
117
+ meta: Prisma.JsonValue | null;
84
118
  id: string;
85
119
  createdAt: Date;
86
120
  conversationId: string;
@@ -95,14 +129,14 @@ export declare function findMessageById(messageId: string): import(".prisma/clie
95
129
  };
96
130
  }>;
97
131
  /** @returns Message by ID with minimal sender. */
98
- export declare function findMessageByIdMinimal(messageId: string): import(".prisma/client").Prisma.Prisma__MessageClient<({
132
+ export declare function findMessageByIdMinimal(messageId: string): Prisma.Prisma__MessageClient<({
99
133
  sender: {
100
134
  id: string;
101
135
  username: string;
102
136
  };
103
137
  } & {
104
138
  status: import(".prisma/client").$Enums.JobStatus | null;
105
- meta: import("@prisma/client/runtime/library.js").JsonValue | null;
139
+ meta: Prisma.JsonValue | null;
106
140
  id: string;
107
141
  createdAt: Date;
108
142
  conversationId: string;
@@ -117,7 +151,7 @@ export declare function findMessageByIdMinimal(messageId: string): import(".pris
117
151
  };
118
152
  }>;
119
153
  /** Count messages in conversation after date, excluding sender's own. */
120
- export declare function countUnreadMessages(conversationId: string, userId: string, after?: Date): import(".prisma/client").Prisma.PrismaPromise<number>;
154
+ export declare function countUnreadMessages(conversationId: string, userId: string, after?: Date): Prisma.PrismaPromise<number>;
121
155
  /** Count mentions of user in conversation after date. */
122
- export declare function countUnreadMentions(conversationId: string, userId: string, after?: Date): import(".prisma/client").Prisma.PrismaPromise<number>;
156
+ export declare function countUnreadMentions(conversationId: string, userId: string, after?: Date): Prisma.PrismaPromise<number>;
123
157
  //# sourceMappingURL=message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"/","sources":["models/message.ts"],"names":[],"mappings":"AAqDA,oDAAoD;AACpD,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;GAOhF;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAaF;AAED,gDAAgD;AAChD,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAShD;AAED,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;GASvD;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,IAAI,yDASb;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,IAAI,yDAYb"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"/","sources":["models/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAUQ,CAAC;AA8CvC,oDAAoD;AACpD,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;GAOhF;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAaF;AAED,gDAAgD;AAChD,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAShD;AAED,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;GASvD;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,IAAI,gCASb;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,IAAI,gCAYb"}
@@ -1,16 +1,25 @@
1
- /**
2
- * Message model – messages, attachments, mentions, unread counts.
3
- */
4
1
 
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]="ee83e4b5-6fa2-5533-b1fe-2d23d36519d1")}catch(e){}}();
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]="1e1e6caf-dc79-5d78-a309-1301edb60f78")}catch(e){}}();
6
3
  import { prisma } from "../lib/prisma.js";
4
+ /**
5
+ * Canonical shape for File rows surfaced as message attachments.
6
+ * Use this everywhere a message (list, send, update, suggestion broadcast)
7
+ * exposes attached files so the wire shape stays in sync.
8
+ */
9
+ export const messageFileSelect = {
10
+ id: true,
11
+ name: true,
12
+ type: true,
13
+ size: true,
14
+ path: true,
15
+ uploadedAt: true,
16
+ uploadStatus: true,
17
+ thumbnailId: true,
18
+ thumbnail: { select: { id: true, path: true } },
19
+ };
7
20
  const messageInclude = {
8
21
  attachments: {
9
- select: {
10
- id: true,
11
- name: true,
12
- type: true,
13
- },
22
+ select: messageFileSelect,
14
23
  },
15
24
  sender: {
16
25
  select: {
@@ -128,4 +137,4 @@ export function countUnreadMentions(conversationId, userId, after) {
128
137
  });
129
138
  }
130
139
  //# sourceMappingURL=message.js.map
131
- //# debugId=ee83e4b5-6fa2-5533-b1fe-2d23d36519d1
140
+ //# debugId=1e1e6caf-dc79-5d78-a309-1301edb60f78
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sources":["models/message.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Message model – messages, attachments, mentions, unread counts.\n */\nimport { prisma } from \"../lib/prisma.js\";\n\nconst messageInclude = {\n attachments: {\n select: {\n id: true,\n name: true,\n type: true,\n },\n },\n sender: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n mentions: {\n include: {\n user: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n },\n },\n};\n\nconst senderSelect = {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n};\n\n/** @returns User's membership in a conversation. */\nexport function findConversationMembership(conversationId: string, userId: string) {\n return prisma.conversationMember.findFirst({\n where: {\n conversationId,\n userId,\n },\n });\n}\n\n/** @returns Messages in conversation with cursor pagination. */\nexport function findMessages(\n conversationId: string,\n options: {\n cursor?: Date;\n limit: number;\n }\n) {\n return prisma.message.findMany({\n where: {\n conversationId,\n ...(options.cursor && {\n createdAt: { lt: options.cursor },\n }),\n },\n include: messageInclude,\n orderBy: { createdAt: \"desc\" as const },\n take: options.limit + 1,\n });\n}\n\n/** @returns Memberships for mentioned users. */\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\n/** @returns Message by ID with sender. */\nexport function findMessageById(messageId: string) {\n return prisma.message.findUnique({\n where: { id: messageId },\n include: {\n sender: {\n select: senderSelect,\n },\n },\n });\n}\n\n/** @returns Message by ID with minimal sender. */\nexport function findMessageByIdMinimal(messageId: string) {\n return prisma.message.findUnique({\n where: { id: messageId },\n include: {\n sender: {\n select: { id: true, username: true },\n },\n },\n });\n}\n\n/** Count messages in conversation after date, excluding sender's own. */\nexport function countUnreadMessages(\n conversationId: string,\n userId: string,\n after?: Date\n) {\n return prisma.message.count({\n where: {\n conversationId,\n senderId: { not: userId },\n ...(after && { createdAt: { gt: after } }),\n },\n });\n}\n\n/** Count mentions of user in conversation after date. */\nexport function countUnreadMentions(\n conversationId: string,\n userId: string,\n after?: Date\n) {\n return prisma.mention.count({\n where: {\n userId,\n message: {\n conversationId,\n senderId: { not: userId },\n ...(after && { createdAt: { gt: after } }),\n },\n },\n });\n}\n"],"names":[],"mappings":"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","debug_id":"ee83e4b5-6fa2-5533-b1fe-2d23d36519d1"}
1
+ {"version":3,"file":"message.js","sources":["models/message.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Message model – messages, attachments, mentions, unread counts.\n */\nimport type { Prisma } from \"@prisma/client\";\nimport { prisma } from \"../lib/prisma.js\";\n\n/**\n * Canonical shape for File rows surfaced as message attachments.\n * Use this everywhere a message (list, send, update, suggestion broadcast)\n * exposes attached files so the wire shape stays in sync.\n */\nexport const messageFileSelect = {\n id: true,\n name: true,\n type: true,\n size: true,\n path: true,\n uploadedAt: true,\n uploadStatus: true,\n thumbnailId: true,\n thumbnail: { select: { id: true, path: true } },\n} as const satisfies Prisma.FileSelect;\n\nconst messageInclude = {\n attachments: {\n select: messageFileSelect,\n },\n sender: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n },\n },\n mentions: {\n include: {\n user: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n },\n },\n },\n },\n },\n },\n};\n\nconst senderSelect = {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n },\n },\n};\n\n/** @returns User's membership in a conversation. */\nexport function findConversationMembership(conversationId: string, userId: string) {\n return prisma.conversationMember.findFirst({\n where: {\n conversationId,\n userId,\n },\n });\n}\n\n/** @returns Messages in conversation with cursor pagination. */\nexport function findMessages(\n conversationId: string,\n options: {\n cursor?: Date;\n limit: number;\n }\n) {\n return prisma.message.findMany({\n where: {\n conversationId,\n ...(options.cursor && {\n createdAt: { lt: options.cursor },\n }),\n },\n include: messageInclude,\n orderBy: { createdAt: \"desc\" as const },\n take: options.limit + 1,\n });\n}\n\n/** @returns Memberships for mentioned users. */\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\n/** @returns Message by ID with sender. */\nexport function findMessageById(messageId: string) {\n return prisma.message.findUnique({\n where: { id: messageId },\n include: {\n sender: {\n select: senderSelect,\n },\n },\n });\n}\n\n/** @returns Message by ID with minimal sender. */\nexport function findMessageByIdMinimal(messageId: string) {\n return prisma.message.findUnique({\n where: { id: messageId },\n include: {\n sender: {\n select: { id: true, username: true },\n },\n },\n });\n}\n\n/** Count messages in conversation after date, excluding sender's own. */\nexport function countUnreadMessages(\n conversationId: string,\n userId: string,\n after?: Date\n) {\n return prisma.message.count({\n where: {\n conversationId,\n senderId: { not: userId },\n ...(after && { createdAt: { gt: after } }),\n },\n });\n}\n\n/** Count mentions of user in conversation after date. */\nexport function countUnreadMentions(\n conversationId: string,\n userId: string,\n after?: Date\n) {\n return prisma.mention.count({\n where: {\n userId,\n message: {\n conversationId,\n senderId: { not: userId },\n ...(after && { createdAt: { gt: after } }),\n },\n },\n });\n}\n"],"names":[],"mappings":"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","debug_id":"1e1e6caf-dc79-5d78-a309-1301edb60f78"}
@@ -7,6 +7,7 @@ export declare function findClassWithStudent(classId: string, studentId: string)
7
7
  color: string | null;
8
8
  section: string;
9
9
  syllabus: string | null;
10
+ departmentId: string | null;
10
11
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
11
12
  datasources: {
12
13
  db: {
@@ -86,8 +87,8 @@ export declare function findNewtonChatByIdAndMember(newtonChatId: string, userId
86
87
  /** @returns Conversation members for given user IDs. */
87
88
  export declare function findConversationMembersByUserIds(conversationId: string, userIds: string[]): import(".prisma/client").Prisma.PrismaPromise<{
88
89
  id: string;
89
- role: import(".prisma/client").$Enums.ConversationRole;
90
90
  userId: string;
91
+ role: import(".prisma/client").$Enums.ConversationRole;
91
92
  conversationId: string;
92
93
  joinedAt: Date;
93
94
  hiddenAt: Date | null;
@@ -1 +1 @@
1
- {"version":3,"file":"newtonChat.d.ts","sourceRoot":"/","sources":["models/newtonChat.ts"],"names":[],"mappings":"AAKA,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;GAOtE;AAED,sDAAsD;AACtD,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;GAQlB;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyBf;AAED,wDAAwD;AACxD,wBAAgB,gCAAgC,CAC9C,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}
1
+ {"version":3,"file":"newtonChat.d.ts","sourceRoot":"/","sources":["models/newtonChat.ts"],"names":[],"mappings":"AAKA,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;GAOtE;AAED,sDAAsD;AACtD,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;GAQlB;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyBf;AAED,wDAAwD;AACxD,wBAAgB,gCAAgC,CAC9C,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}
@@ -7,9 +7,9 @@ export declare function findSchoolMembership(schoolId: string, userId: string):
7
7
  id: string;
8
8
  createdAt: Date;
9
9
  updatedAt: Date;
10
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
11
10
  schoolId: string;
12
11
  userId: string;
12
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
13
13
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
14
14
  datasources: {
15
15
  db: {
@@ -22,9 +22,9 @@ export declare function findActiveSchoolMembership(schoolId: string, userId: str
22
22
  id: string;
23
23
  createdAt: Date;
24
24
  updatedAt: Date;
25
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
26
25
  schoolId: string;
27
26
  userId: string;
27
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
28
28
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
29
29
  datasources: {
30
30
  db: {
@@ -37,9 +37,9 @@ export declare function findActiveSchoolAdminMembership(schoolId: string, userId
37
37
  id: string;
38
38
  createdAt: Date;
39
39
  updatedAt: Date;
40
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
41
40
  schoolId: string;
42
41
  userId: string;
42
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
43
43
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
44
44
  datasources: {
45
45
  db: {
@@ -51,19 +51,25 @@ export declare function listUserSchoolMemberships(userId: string): import(".pris
51
51
  school: {
52
52
  name: string;
53
53
  id: string;
54
+ description: string | null;
54
55
  logoId: string | null;
55
56
  subdomain: string | null;
56
57
  createdAt: Date;
57
58
  updatedAt: Date;
59
+ logo: {
60
+ path: string;
61
+ type: string;
62
+ id: string;
63
+ } | null;
58
64
  };
59
65
  } & {
60
66
  status: import(".prisma/client").$Enums.SchoolMembershipStatus;
61
67
  id: string;
62
68
  createdAt: Date;
63
69
  updatedAt: Date;
64
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
65
70
  schoolId: string;
66
71
  userId: string;
72
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
67
73
  })[]>;
68
74
  export declare function createSchoolWithAdmin(data: {
69
75
  name: string;
@@ -76,13 +82,14 @@ export declare function createSchoolWithAdmin(data: {
76
82
  id: string;
77
83
  createdAt: Date;
78
84
  updatedAt: Date;
79
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
80
85
  schoolId: string;
81
86
  userId: string;
87
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
82
88
  }[];
83
89
  } & {
84
90
  name: string;
85
91
  id: string;
92
+ description: string | null;
86
93
  logoId: string | null;
87
94
  subdomain: string | null;
88
95
  createdAt: Date;
@@ -97,10 +104,17 @@ export declare function createSchoolWithAdmin(data: {
97
104
  export declare function getSchoolById(schoolId: string): import(".prisma/client").Prisma.Prisma__SchoolClient<{
98
105
  name: string;
99
106
  id: string;
107
+ description: string | null;
100
108
  logoId: string | null;
101
109
  subdomain: string | null;
102
110
  createdAt: Date;
103
111
  updatedAt: Date;
112
+ logo: {
113
+ path: string;
114
+ type: string;
115
+ name: string;
116
+ id: string;
117
+ } | null;
104
118
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
105
119
  datasources: {
106
120
  db: {
@@ -108,6 +122,24 @@ export declare function getSchoolById(schoolId: string): import(".prisma/client"
108
122
  };
109
123
  };
110
124
  }>;
125
+ export declare function updateSchoolRecord(schoolId: string, data: {
126
+ name?: string;
127
+ description?: string | null;
128
+ subdomain?: string | null;
129
+ logoId?: string | null;
130
+ }): import(".prisma/client").Prisma.Prisma__SchoolClient<{
131
+ name: string;
132
+ id: string;
133
+ description: string | null;
134
+ logoId: string | null;
135
+ subdomain: string | null;
136
+ }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
137
+ datasources: {
138
+ db: {
139
+ url: string;
140
+ };
141
+ };
142
+ }>;
111
143
  export declare function getSchoolOverview(schoolId: string): import(".prisma/client").Prisma.Prisma__SchoolClient<{
112
144
  name: string;
113
145
  id: string;
@@ -171,6 +203,7 @@ export declare function listSchoolClasses(schoolId: string): import(".prisma/cli
171
203
  color: string | null;
172
204
  section: string;
173
205
  syllabus: string | null;
206
+ departmentId: string | null;
174
207
  })[]>;
175
208
  export declare function listSchoolMembers(schoolId: string): import(".prisma/client").Prisma.PrismaPromise<{
176
209
  status: import(".prisma/client").$Enums.SchoolMembershipStatus;
@@ -199,9 +232,9 @@ export declare function upsertSchoolMembership(data: {
199
232
  id: string;
200
233
  createdAt: Date;
201
234
  updatedAt: Date;
202
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
203
235
  schoolId: string;
204
236
  userId: string;
237
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
205
238
  }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
206
239
  datasources: {
207
240
  db: {
@@ -214,9 +247,9 @@ export declare function updateSchoolMembershipRole(schoolId: string, userId: str
214
247
  id: string;
215
248
  createdAt: Date;
216
249
  updatedAt: Date;
217
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
218
250
  schoolId: string;
219
251
  userId: string;
252
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
220
253
  }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
221
254
  datasources: {
222
255
  db: {
@@ -229,9 +262,9 @@ export declare function removeSchoolMembershipPreservingContent(schoolId: string
229
262
  id: string;
230
263
  createdAt: Date;
231
264
  updatedAt: Date;
232
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
233
265
  schoolId: string;
234
266
  userId: string;
267
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
235
268
  }>;
236
269
  export declare function createSchoolInvite(data: {
237
270
  schoolId: string;
@@ -251,8 +284,8 @@ export declare function createSchoolInvite(data: {
251
284
  createdAt: Date;
252
285
  updatedAt: Date;
253
286
  email: string;
254
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
255
287
  schoolId: string;
288
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
256
289
  token: string;
257
290
  expiresAt: Date;
258
291
  acceptedAt: Date | null;
@@ -288,8 +321,8 @@ export declare function revokeSchoolInvite(inviteId: string, schoolId: string):
288
321
  createdAt: Date;
289
322
  updatedAt: Date;
290
323
  email: string;
291
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
292
324
  schoolId: string;
325
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
293
326
  token: string;
294
327
  expiresAt: Date;
295
328
  acceptedAt: Date | null;
@@ -313,8 +346,8 @@ export declare function findPendingInviteByToken(token: string): import(".prisma
313
346
  createdAt: Date;
314
347
  updatedAt: Date;
315
348
  email: string;
316
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
317
349
  schoolId: string;
350
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
318
351
  token: string;
319
352
  expiresAt: Date;
320
353
  acceptedAt: Date | null;
@@ -332,8 +365,8 @@ export declare function acceptSchoolInvite(inviteId: string, userId: string): Pr
332
365
  id: string;
333
366
  createdAt: Date;
334
367
  updatedAt: Date;
335
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
336
368
  schoolId: string;
337
369
  userId: string;
370
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
338
371
  }>;
339
372
  //# sourceMappingURL=school.d.ts.map
@@ -1 +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,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"}
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;;;;;;;;;;;;;;;;;;;;;;;MAmBvD;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;;;;;;;;;;;;;;;;;;;;GAc7C;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;;;;;;;;;;;;GAaF;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,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"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="856fe8aa-b02b-53db-83f8-972317deebbb")}catch(e){}}();
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]="bd2b1d00-966b-5892-8ade-ebc1e7ff80a1")}catch(e){}}();
3
3
  import { prisma } from "../lib/prisma.js";
4
4
  const memberSelect = {
5
5
  id: true,
@@ -45,8 +45,10 @@ export function listUserSchoolMemberships(userId) {
45
45
  select: {
46
46
  id: true,
47
47
  name: true,
48
+ description: true,
48
49
  subdomain: true,
49
50
  logoId: true,
51
+ logo: { select: { id: true, path: true, type: true } },
50
52
  createdAt: true,
51
53
  updatedAt: true,
52
54
  },
@@ -82,13 +84,28 @@ export function getSchoolById(schoolId) {
82
84
  select: {
83
85
  id: true,
84
86
  name: true,
87
+ description: true,
85
88
  subdomain: true,
86
89
  logoId: true,
90
+ logo: { select: { id: true, name: true, type: true, path: true } },
87
91
  createdAt: true,
88
92
  updatedAt: true,
89
93
  },
90
94
  });
91
95
  }
96
+ export function updateSchoolRecord(schoolId, data) {
97
+ return prisma.school.update({
98
+ where: { id: schoolId },
99
+ data,
100
+ select: {
101
+ id: true,
102
+ name: true,
103
+ description: true,
104
+ subdomain: true,
105
+ logoId: true,
106
+ },
107
+ });
108
+ }
92
109
  export function getSchoolOverview(schoolId) {
93
110
  return prisma.school.findUnique({
94
111
  where: { id: schoolId },
@@ -299,4 +316,4 @@ export function acceptSchoolInvite(inviteId, userId) {
299
316
  });
300
317
  }
301
318
  //# sourceMappingURL=school.js.map
302
- //# debugId=856fe8aa-b02b-53db-83f8-972317deebbb
319
+ //# debugId=bd2b1d00-966b-5892-8ade-ebc1e7ff80a1
@@ -1 +1 @@
1
- {"version":3,"file":"school.js","sources":["models/school.ts"],"sourceRoot":"/","sourcesContent":["/**\n * School model - school membership, invites, and admin lookups.\n */\nimport { SchoolMembershipRole } from \"@prisma/client\";\nimport { prisma } from \"../lib/prisma.js\";\n\nconst memberSelect = {\n id: true,\n role: true,\n status: true,\n createdAt: true,\n updatedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n email: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n profilePictureThumbnail: true,\n },\n },\n },\n },\n} as const;\n\nexport function findSchoolMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findUnique({\n where: { schoolId_userId: { schoolId, userId } },\n });\n}\n\nexport function findActiveSchoolMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findFirst({\n where: { schoolId, userId, status: \"ACTIVE\" },\n });\n}\n\nexport function findActiveSchoolAdminMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findFirst({\n where: { schoolId, userId, role: \"ADMIN\", status: \"ACTIVE\" },\n });\n}\n\nexport function listUserSchoolMemberships(userId: string) {\n return prisma.schoolMembership.findMany({\n where: { userId, status: \"ACTIVE\" },\n include: {\n school: {\n select: {\n id: true,\n name: true,\n subdomain: true,\n logoId: true,\n createdAt: true,\n updatedAt: true,\n },\n },\n },\n orderBy: { createdAt: \"asc\" },\n });\n}\n\nexport function createSchoolWithAdmin(data: {\n name: string;\n subdomain?: string;\n logoId?: string;\n userId: string;\n}) {\n return prisma.school.create({\n data: {\n name: data.name,\n subdomain: data.subdomain,\n logoId: data.logoId,\n memberships: {\n create: {\n userId: data.userId,\n role: \"ADMIN\",\n status: \"ACTIVE\",\n },\n },\n },\n include: {\n memberships: {\n where: { userId: data.userId },\n },\n },\n });\n}\n\nexport function getSchoolById(schoolId: string) {\n return prisma.school.findUnique({\n where: { id: schoolId },\n select: {\n id: true,\n name: true,\n subdomain: true,\n logoId: true,\n createdAt: true,\n updatedAt: true,\n },\n });\n}\n\nexport function getSchoolOverview(schoolId: string) {\n return prisma.school.findUnique({\n where: { id: schoolId },\n select: {\n id: true,\n name: true,\n subdomain: true,\n _count: {\n select: {\n classes: true,\n memberships: { where: { status: \"ACTIVE\" } },\n invites: { where: { status: \"PENDING\" } },\n },\n },\n memberships: {\n where: { status: \"ACTIVE\" },\n select: { role: true },\n },\n classes: {\n orderBy: { name: \"asc\" },\n take: 5,\n select: {\n id: true,\n name: true,\n subject: true,\n section: true,\n color: true,\n _count: { select: { teachers: true, students: true } },\n },\n },\n invites: {\n where: { status: \"PENDING\" },\n orderBy: { createdAt: \"desc\" },\n take: 5,\n select: {\n id: true,\n email: true,\n role: true,\n expiresAt: true,\n createdAt: true,\n },\n },\n },\n });\n}\n\nexport function listSchoolClasses(schoolId: string) {\n return prisma.class.findMany({\n where: { schoolId },\n orderBy: [{ name: \"asc\" }, { section: \"asc\" }],\n include: {\n teachers: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n profilePictureThumbnail: true,\n },\n },\n },\n },\n students: { select: { id: true } },\n _count: { select: { teachers: true, students: true, assignments: true } },\n },\n });\n}\n\nexport function listSchoolMembers(schoolId: string) {\n return prisma.schoolMembership.findMany({\n where: { schoolId },\n select: memberSelect,\n orderBy: [{ role: \"asc\" }, { createdAt: \"asc\" }],\n });\n}\n\nexport function countActiveAdmins(schoolId: string) {\n return prisma.schoolMembership.count({\n where: { schoolId, role: \"ADMIN\", status: \"ACTIVE\" },\n });\n}\n\nexport function upsertSchoolMembership(data: {\n schoolId: string;\n userId: string;\n role: SchoolMembershipRole;\n}) {\n return prisma.schoolMembership.upsert({\n where: {\n schoolId_userId: {\n schoolId: data.schoolId,\n userId: data.userId,\n },\n },\n update: {\n role: data.role,\n status: \"ACTIVE\",\n },\n create: {\n schoolId: data.schoolId,\n userId: data.userId,\n role: data.role,\n status: \"ACTIVE\",\n },\n });\n}\n\nexport function updateSchoolMembershipRole(\n schoolId: string,\n userId: string,\n role: SchoolMembershipRole\n) {\n return prisma.schoolMembership.update({\n where: { schoolId_userId: { schoolId, userId } },\n data: { role },\n });\n}\n\nexport function removeSchoolMembershipPreservingContent(schoolId: string, userId: string) {\n return prisma.$transaction(async (tx) => {\n const classes = await tx.class.findMany({\n where: { schoolId },\n select: { id: true },\n });\n const classIds = classes.map((cls) => ({ id: cls.id }));\n\n for (const classWhere of classIds) {\n await tx.class.update({\n where: classWhere,\n data: {\n teachers: { disconnect: { id: userId } },\n students: { disconnect: { id: userId } },\n },\n });\n }\n\n return tx.schoolMembership.delete({\n where: { schoolId_userId: { schoolId, userId } },\n });\n });\n}\n\nexport function createSchoolInvite(data: {\n schoolId: string;\n invitedById: string;\n email: string;\n role: SchoolMembershipRole;\n token: string;\n expiresAt: Date;\n}) {\n return prisma.schoolInvite.create({\n data,\n include: {\n school: { select: { id: true, name: true } },\n },\n });\n}\n\nexport function listSchoolInvites(schoolId: string) {\n return prisma.schoolInvite.findMany({\n where: { schoolId },\n orderBy: { createdAt: \"desc\" },\n select: {\n id: true,\n email: true,\n role: true,\n status: true,\n expiresAt: true,\n acceptedAt: true,\n revokedAt: true,\n createdAt: true,\n invitedBy: {\n select: {\n id: true,\n username: true,\n profile: { select: { displayName: true } },\n },\n },\n },\n });\n}\n\nexport function revokeSchoolInvite(inviteId: string, schoolId: string) {\n return prisma.schoolInvite.update({\n where: { id: inviteId, schoolId },\n data: {\n status: \"REVOKED\",\n revokedAt: new Date(),\n },\n });\n}\n\nexport function findPendingInviteByToken(token: string) {\n return prisma.schoolInvite.findUnique({\n where: { token },\n include: { school: { select: { id: true, name: true } } },\n });\n}\n\nexport function acceptSchoolInvite(inviteId: string, userId: string) {\n return prisma.$transaction(async (tx) => {\n const invite = await tx.schoolInvite.findUnique({\n where: { id: inviteId },\n });\n\n if (!invite) {\n throw new Error(\"Invite not found\");\n }\n\n const membership = await tx.schoolMembership.upsert({\n where: {\n schoolId_userId: {\n schoolId: invite.schoolId,\n userId,\n },\n },\n update: {\n role: invite.role,\n status: \"ACTIVE\",\n },\n create: {\n schoolId: invite.schoolId,\n userId,\n role: invite.role,\n status: \"ACTIVE\",\n },\n });\n\n await tx.schoolInvite.update({\n where: { id: inviteId },\n data: {\n status: \"ACCEPTED\",\n acceptedAt: new Date(),\n },\n });\n\n return membership;\n });\n}\n"],"names":[],"mappings":"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","debug_id":"856fe8aa-b02b-53db-83f8-972317deebbb"}
1
+ {"version":3,"file":"school.js","sources":["models/school.ts"],"sourceRoot":"/","sourcesContent":["/**\n * School model - school membership, invites, and admin lookups.\n */\nimport { SchoolMembershipRole } from \"@prisma/client\";\nimport { prisma } from \"../lib/prisma.js\";\n\nconst memberSelect = {\n id: true,\n role: true,\n status: true,\n createdAt: true,\n updatedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n email: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n profilePictureThumbnail: true,\n },\n },\n },\n },\n} as const;\n\nexport function findSchoolMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findUnique({\n where: { schoolId_userId: { schoolId, userId } },\n });\n}\n\nexport function findActiveSchoolMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findFirst({\n where: { schoolId, userId, status: \"ACTIVE\" },\n });\n}\n\nexport function findActiveSchoolAdminMembership(schoolId: string, userId: string) {\n return prisma.schoolMembership.findFirst({\n where: { schoolId, userId, role: \"ADMIN\", status: \"ACTIVE\" },\n });\n}\n\nexport function listUserSchoolMemberships(userId: string) {\n return prisma.schoolMembership.findMany({\n where: { userId, status: \"ACTIVE\" },\n include: {\n school: {\n select: {\n id: true,\n name: true,\n description: true,\n subdomain: true,\n logoId: true,\n logo: { select: { id: true, path: true, type: true } },\n createdAt: true,\n updatedAt: true,\n },\n },\n },\n orderBy: { createdAt: \"asc\" },\n });\n}\n\nexport function createSchoolWithAdmin(data: {\n name: string;\n subdomain?: string;\n logoId?: string;\n userId: string;\n}) {\n return prisma.school.create({\n data: {\n name: data.name,\n subdomain: data.subdomain,\n logoId: data.logoId,\n memberships: {\n create: {\n userId: data.userId,\n role: \"ADMIN\",\n status: \"ACTIVE\",\n },\n },\n },\n include: {\n memberships: {\n where: { userId: data.userId },\n },\n },\n });\n}\n\nexport function getSchoolById(schoolId: string) {\n return prisma.school.findUnique({\n where: { id: schoolId },\n select: {\n id: true,\n name: true,\n description: true,\n subdomain: true,\n logoId: true,\n logo: { select: { id: true, name: true, type: true, path: true } },\n createdAt: true,\n updatedAt: true,\n },\n });\n}\n\nexport function updateSchoolRecord(\n schoolId: string,\n data: {\n name?: string;\n description?: string | null;\n subdomain?: string | null;\n logoId?: string | null;\n }\n) {\n return prisma.school.update({\n where: { id: schoolId },\n data,\n select: {\n id: true,\n name: true,\n description: true,\n subdomain: true,\n logoId: true,\n },\n });\n}\n\nexport function getSchoolOverview(schoolId: string) {\n return prisma.school.findUnique({\n where: { id: schoolId },\n select: {\n id: true,\n name: true,\n subdomain: true,\n _count: {\n select: {\n classes: true,\n memberships: { where: { status: \"ACTIVE\" } },\n invites: { where: { status: \"PENDING\" } },\n },\n },\n memberships: {\n where: { status: \"ACTIVE\" },\n select: { role: true },\n },\n classes: {\n orderBy: { name: \"asc\" },\n take: 5,\n select: {\n id: true,\n name: true,\n subject: true,\n section: true,\n color: true,\n _count: { select: { teachers: true, students: true } },\n },\n },\n invites: {\n where: { status: \"PENDING\" },\n orderBy: { createdAt: \"desc\" },\n take: 5,\n select: {\n id: true,\n email: true,\n role: true,\n expiresAt: true,\n createdAt: true,\n },\n },\n },\n });\n}\n\nexport function listSchoolClasses(schoolId: string) {\n return prisma.class.findMany({\n where: { schoolId },\n orderBy: [{ name: \"asc\" }, { section: \"asc\" }],\n include: {\n teachers: {\n select: {\n id: true,\n username: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n profilePictureThumbnail: true,\n },\n },\n },\n },\n students: { select: { id: true } },\n _count: { select: { teachers: true, students: true, assignments: true } },\n },\n });\n}\n\nexport function listSchoolMembers(schoolId: string) {\n return prisma.schoolMembership.findMany({\n where: { schoolId },\n select: memberSelect,\n orderBy: [{ role: \"asc\" }, { createdAt: \"asc\" }],\n });\n}\n\nexport function countActiveAdmins(schoolId: string) {\n return prisma.schoolMembership.count({\n where: { schoolId, role: \"ADMIN\", status: \"ACTIVE\" },\n });\n}\n\nexport function upsertSchoolMembership(data: {\n schoolId: string;\n userId: string;\n role: SchoolMembershipRole;\n}) {\n return prisma.schoolMembership.upsert({\n where: {\n schoolId_userId: {\n schoolId: data.schoolId,\n userId: data.userId,\n },\n },\n update: {\n role: data.role,\n status: \"ACTIVE\",\n },\n create: {\n schoolId: data.schoolId,\n userId: data.userId,\n role: data.role,\n status: \"ACTIVE\",\n },\n });\n}\n\nexport function updateSchoolMembershipRole(\n schoolId: string,\n userId: string,\n role: SchoolMembershipRole\n) {\n return prisma.schoolMembership.update({\n where: { schoolId_userId: { schoolId, userId } },\n data: { role },\n });\n}\n\nexport function removeSchoolMembershipPreservingContent(schoolId: string, userId: string) {\n return prisma.$transaction(async (tx) => {\n const classes = await tx.class.findMany({\n where: { schoolId },\n select: { id: true },\n });\n const classIds = classes.map((cls) => ({ id: cls.id }));\n\n for (const classWhere of classIds) {\n await tx.class.update({\n where: classWhere,\n data: {\n teachers: { disconnect: { id: userId } },\n students: { disconnect: { id: userId } },\n },\n });\n }\n\n return tx.schoolMembership.delete({\n where: { schoolId_userId: { schoolId, userId } },\n });\n });\n}\n\nexport function createSchoolInvite(data: {\n schoolId: string;\n invitedById: string;\n email: string;\n role: SchoolMembershipRole;\n token: string;\n expiresAt: Date;\n}) {\n return prisma.schoolInvite.create({\n data,\n include: {\n school: { select: { id: true, name: true } },\n },\n });\n}\n\nexport function listSchoolInvites(schoolId: string) {\n return prisma.schoolInvite.findMany({\n where: { schoolId },\n orderBy: { createdAt: \"desc\" },\n select: {\n id: true,\n email: true,\n role: true,\n status: true,\n expiresAt: true,\n acceptedAt: true,\n revokedAt: true,\n createdAt: true,\n invitedBy: {\n select: {\n id: true,\n username: true,\n profile: { select: { displayName: true } },\n },\n },\n },\n });\n}\n\nexport function revokeSchoolInvite(inviteId: string, schoolId: string) {\n return prisma.schoolInvite.update({\n where: { id: inviteId, schoolId },\n data: {\n status: \"REVOKED\",\n revokedAt: new Date(),\n },\n });\n}\n\nexport function findPendingInviteByToken(token: string) {\n return prisma.schoolInvite.findUnique({\n where: { token },\n include: { school: { select: { id: true, name: true } } },\n });\n}\n\nexport function acceptSchoolInvite(inviteId: string, userId: string) {\n return prisma.$transaction(async (tx) => {\n const invite = await tx.schoolInvite.findUnique({\n where: { id: inviteId },\n });\n\n if (!invite) {\n throw new Error(\"Invite not found\");\n }\n\n const membership = await tx.schoolMembership.upsert({\n where: {\n schoolId_userId: {\n schoolId: invite.schoolId,\n userId,\n },\n },\n update: {\n role: invite.role,\n status: \"ACTIVE\",\n },\n create: {\n schoolId: invite.schoolId,\n userId,\n role: invite.role,\n status: \"ACTIVE\",\n },\n });\n\n await tx.schoolInvite.update({\n where: { id: inviteId },\n data: {\n status: \"ACCEPTED\",\n acceptedAt: new Date(),\n },\n });\n\n return membership;\n });\n}\n"],"names":[],"mappings":";;AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,YAAY,GAAG;IACnB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI;oBACjB,cAAc,EAAE,IAAI;oBACpB,uBAAuB,EAAE,IAAI;iBAC9B;aACF;SACF;KACF;CACO,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IACnE,OAAO,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACxC,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;KACjD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,MAAc;IACzE,OAAO,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACvC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,QAAgB,EAAE,MAAc;IAC9E,OAAO,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACvC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC7D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACtC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,IAAI;oBACjB,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,IAAI;oBACZ,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;oBACtD,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;iBAChB;aACF;SACF;QACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAKrC;IACC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE;gBACX,MAAM,EAAE;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,OAAO,EAAE;YACP,WAAW,EAAE;gBACX,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC/B;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;QACvB,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAClE,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,IAKC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;QACvB,IAAI;QACJ,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;QACvB,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;YACf,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;oBAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;iBAC1C;aACF;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aACvB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBACxB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;iBACvD;aACF;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;gBAC5B,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC9B,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;iBAChB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC9C,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE;4BACN,WAAW,EAAE,IAAI;4BACjB,cAAc,EAAE,IAAI;4BACpB,uBAAuB,EAAE,IAAI;yBAC9B;qBACF;iBACF;aACF;YACD,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;SAC1E;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACtC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACjD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACnC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;KACrD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAItC;IACC,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACpC,KAAK,EAAE;YACL,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ;SACjB;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,MAAc,EACd,IAA0B;IAE1B,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACpC,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QAChD,IAAI,EAAE,EAAE,IAAI,EAAE;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,QAAgB,EAAE,MAAc;IACtF,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtC,KAAK,EAAE,EAAE,QAAQ,EAAE;YACnB,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAExD,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;oBACxC,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;iBACzC;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;SACjD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAOlC;IACC,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAChC,IAAI;QACJ,OAAO,EAAE;YACP,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;SAC7C;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QAClC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;QAC9B,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,SAAS,EAAE;gBACT,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;iBAC3C;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IACnE,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACjC,IAAI,EAAE;YACJ,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QACpC,KAAK,EAAE,EAAE,KAAK,EAAE;QAChB,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,MAAc;IACjE,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAClD,KAAK,EAAE;gBACL,eAAe,EAAE;oBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM;iBACP;aACF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,QAAQ;aACjB;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,QAAQ;aACjB;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3B,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;YACvB,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC","debug_id":"bd2b1d00-966b-5892-8ade-ebc1e7ff80a1"}
@@ -21,6 +21,7 @@ export declare function findClassWithTeacher(classId: string, teacherId: string)
21
21
  color: string | null;
22
22
  section: string;
23
23
  syllabus: string | null;
24
+ departmentId: string | null;
24
25
  } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
25
26
  datasources: {
26
27
  db: {
@@ -1 +1 @@
1
- {"version":3,"file":"section.d.ts","sourceRoot":"/","sources":["models/section.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;GAIzC;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;GAOtE;AAED,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;GAUA;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM;;;KAKpD;AAED,yDAAyD;AACzD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM;;;KAKvD;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;GAK3D;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAK9D;AAED,qCAAqC;AACrC,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAMvC;AAED,wBAAwB;AACxB,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;GAI3C;AAED,0CAA0C;AAC1C,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;GAKzE"}
1
+ {"version":3,"file":"section.d.ts","sourceRoot":"/","sources":["models/section.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;GAIzC;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;GAOtE;AAED,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;GAUA;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM;;;KAKpD;AAED,yDAAyD;AACzD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM;;;KAKvD;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;GAK3D;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAK9D;AAED,qCAAqC;AACrC,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAMvC;AAED,wBAAwB;AACxB,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;GAI3C;AAED,0CAA0C;AAC1C,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;GAKzE"}