@studious-lms/server 1.7.0 → 1.9.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/middleware/security.d.ts.map +1 -1
  2. package/dist/middleware/security.js +3 -3
  3. package/dist/middleware/security.js.map +1 -1
  4. package/dist/models/access.d.ts +21 -66
  5. package/dist/models/access.d.ts.map +1 -1
  6. package/dist/models/access.js +10 -26
  7. package/dist/models/access.js.map +1 -1
  8. package/dist/models/agenda.d.ts +4 -2
  9. package/dist/models/agenda.d.ts.map +1 -1
  10. package/dist/models/announcement.d.ts +4 -3
  11. package/dist/models/announcement.d.ts.map +1 -1
  12. package/dist/models/announcement.js +2 -3
  13. package/dist/models/announcement.js.map +1 -1
  14. package/dist/models/assignment.d.ts +40 -33
  15. package/dist/models/assignment.d.ts.map +1 -1
  16. package/dist/models/auth.d.ts +2 -4
  17. package/dist/models/auth.d.ts.map +1 -1
  18. package/dist/models/auth.js +2 -3
  19. package/dist/models/auth.js.map +1 -1
  20. package/dist/models/class.d.ts +34 -6
  21. package/dist/models/class.d.ts.map +1 -1
  22. package/dist/models/class.js +15 -2
  23. package/dist/models/class.js.map +1 -1
  24. package/dist/models/cloudStorage.d.ts +153 -0
  25. package/dist/models/cloudStorage.d.ts.map +1 -0
  26. package/dist/models/cloudStorage.js +295 -0
  27. package/dist/models/cloudStorage.js.map +1 -0
  28. package/dist/models/comment.d.ts +0 -24
  29. package/dist/models/comment.d.ts.map +1 -1
  30. package/dist/models/comment.js +2 -6
  31. package/dist/models/comment.js.map +1 -1
  32. package/dist/models/conversation.d.ts +22 -22
  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 +10 -4
  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 +52 -36
  42. package/dist/models/file.d.ts.map +1 -1
  43. package/dist/models/file.js +4 -42
  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 +11 -9
  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 +2 -1
  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 +6704 -5222
  69. package/dist/routers/_app.d.ts.map +1 -1
  70. package/dist/routers/_app.js +8 -2
  71. package/dist/routers/_app.js.map +1 -1
  72. package/dist/routers/agenda.d.ts +4 -2
  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 +49 -40
  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 +92 -19
  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 +5 -5
  86. package/dist/routers/department.d.ts +293 -0
  87. package/dist/routers/department.d.ts.map +1 -0
  88. package/dist/routers/department.js +93 -0
  89. package/dist/routers/department.js.map +1 -0
  90. package/dist/routers/event.d.ts +4 -3
  91. package/dist/routers/event.d.ts.map +1 -1
  92. package/dist/routers/file.d.ts +10 -8
  93. package/dist/routers/file.d.ts.map +1 -1
  94. package/dist/routers/file.js +26 -17
  95. package/dist/routers/file.js.map +1 -1
  96. package/dist/routers/folder.d.ts +163 -186
  97. package/dist/routers/folder.d.ts.map +1 -1
  98. package/dist/routers/folder.js +102 -88
  99. package/dist/routers/folder.js.map +1 -1
  100. package/dist/routers/labChat.d.ts +13 -4
  101. package/dist/routers/labChat.d.ts.map +1 -1
  102. package/dist/routers/message.d.ts +20 -2
  103. package/dist/routers/message.d.ts.map +1 -1
  104. package/dist/routers/newtonChat.d.ts +10 -1
  105. package/dist/routers/newtonChat.d.ts.map +1 -1
  106. package/dist/routers/permissions.d.ts +120 -0
  107. package/dist/routers/permissions.d.ts.map +1 -0
  108. package/dist/routers/permissions.js +50 -0
  109. package/dist/routers/permissions.js.map +1 -0
  110. package/dist/routers/school.d.ts +160 -17
  111. package/dist/routers/school.d.ts.map +1 -1
  112. package/dist/routers/school.js +46 -3
  113. package/dist/routers/school.js.map +1 -1
  114. package/dist/routers/tag.d.ts +119 -0
  115. package/dist/routers/tag.d.ts.map +1 -0
  116. package/dist/routers/tag.js +52 -0
  117. package/dist/routers/tag.js.map +1 -0
  118. package/dist/routers/worksheet.d.ts +1 -0
  119. package/dist/routers/worksheet.d.ts.map +1 -1
  120. package/dist/seedDatabase.d.ts +0 -1
  121. package/dist/seedDatabase.d.ts.map +1 -1
  122. package/dist/services/agenda.d.ts +4 -2
  123. package/dist/services/agenda.d.ts.map +1 -1
  124. package/dist/services/assignment.d.ts +49 -40
  125. package/dist/services/assignment.d.ts.map +1 -1
  126. package/dist/services/class.d.ts +92 -19
  127. package/dist/services/class.d.ts.map +1 -1
  128. package/dist/services/class.js +92 -5
  129. package/dist/services/class.js.map +1 -1
  130. package/dist/services/conversation.d.ts +5 -5
  131. package/dist/services/department.d.ts +200 -0
  132. package/dist/services/department.d.ts.map +1 -0
  133. package/dist/services/department.js +368 -0
  134. package/dist/services/department.js.map +1 -0
  135. package/dist/services/event.d.ts +4 -3
  136. package/dist/services/event.d.ts.map +1 -1
  137. package/dist/services/file.d.ts +105 -3
  138. package/dist/services/file.d.ts.map +1 -1
  139. package/dist/services/file.js +167 -41
  140. package/dist/services/file.js.map +1 -1
  141. package/dist/services/folder.d.ts +220 -149
  142. package/dist/services/folder.d.ts.map +1 -1
  143. package/dist/services/folder.js +326 -196
  144. package/dist/services/folder.js.map +1 -1
  145. package/dist/services/labChat.d.ts +13 -4
  146. package/dist/services/labChat.d.ts.map +1 -1
  147. package/dist/services/labChat.js +4 -3
  148. package/dist/services/labChat.js.map +1 -1
  149. package/dist/services/message.d.ts +20 -2
  150. package/dist/services/message.d.ts.map +1 -1
  151. package/dist/services/message.js +7 -23
  152. package/dist/services/message.js.map +1 -1
  153. package/dist/services/newtonChat.d.ts +9 -0
  154. package/dist/services/newtonChat.d.ts.map +1 -1
  155. package/dist/services/newtonChat.js +4 -3
  156. package/dist/services/newtonChat.js.map +1 -1
  157. package/dist/services/permissions.d.ts +188 -0
  158. package/dist/services/permissions.d.ts.map +1 -0
  159. package/dist/services/permissions.js +661 -0
  160. package/dist/services/permissions.js.map +1 -0
  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/migrations/20260510170000_add_folder_permissions/migration.sql +93 -0
  177. package/prisma/schema.prisma +193 -35
  178. package/src/middleware/security.ts +1 -1
  179. package/src/models/access.ts +8 -24
  180. package/src/models/announcement.ts +0 -1
  181. package/src/models/auth.ts +0 -1
  182. package/src/models/class.ts +13 -0
  183. package/src/models/cloudStorage.ts +327 -0
  184. package/src/models/comment.ts +0 -4
  185. package/src/models/department.ts +159 -0
  186. package/src/models/event.ts +0 -3
  187. package/src/models/file.ts +2 -40
  188. package/src/models/message.ts +19 -5
  189. package/src/models/school.ts +26 -0
  190. package/src/models/tag.ts +140 -0
  191. package/src/routers/_app.ts +6 -0
  192. package/src/routers/announcement.ts +1 -3
  193. package/src/routers/assignment.ts +0 -1
  194. package/src/routers/class.ts +3 -0
  195. package/src/routers/department.ts +174 -0
  196. package/src/routers/file.ts +29 -26
  197. package/src/routers/folder.ts +127 -118
  198. package/src/routers/permissions.ts +71 -0
  199. package/src/routers/school.ts +83 -0
  200. package/src/routers/tag.ts +78 -0
  201. package/src/services/class.ts +109 -4
  202. package/src/services/department.ts +478 -0
  203. package/src/services/file.ts +172 -43
  204. package/src/services/folder.ts +399 -237
  205. package/src/services/labChat.ts +2 -1
  206. package/src/services/message.ts +5 -21
  207. package/src/services/newtonChat.ts +2 -1
  208. package/src/services/permissions.ts +778 -0
  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/unit/services/permissions.test.ts +463 -0
@@ -1,40 +1,153 @@
1
- /** Create a folder in a class. Teacher-only. */
2
- export declare function createFolderRecord(userId: string, input: {
3
- classId: string;
4
- name: string;
5
- parentFolderId?: string | null;
6
- color?: string;
1
+ import { CloudScope } from "../models/cloudStorage.js";
2
+ import { type DirectFileData } from "../lib/fileUpload.js";
3
+ import { type AccessLevel } from "./permissions.js";
4
+ interface AccessResult {
5
+ scope: CloudScope;
6
+ canWrite: boolean;
7
+ /**
8
+ * True when the viewer's access comes through an explicit grant rather than
9
+ * scope membership. Used by `browseFolder` to surface a "Shared with me"
10
+ * heading instead of the underlying scope's title — the grantee shouldn't
11
+ * see the folder labelled with the owner's scope.
12
+ */
13
+ viaGrant: boolean;
14
+ }
15
+ /**
16
+ * Folder-level access check. Delegates to the central resolver which consults
17
+ * explicit grants in addition to the scope default. Returns the scope and a
18
+ * canWrite flag indicating whether the user has WRITE here (used by the UI to
19
+ * gate the "New folder" / "Upload" buttons during a READ-level browse).
20
+ *
21
+ * Pass `mutatesSelf: true` for actions that target the folder itself (rename,
22
+ * delete, move-this-folder). Drive-style: explicit grants don't authorize
23
+ * those — only scope-default WRITE does. Mutations of children should NOT
24
+ * pass this flag.
25
+ */
26
+ export declare function requireFolderAccess(userId: string, folderId: string, level: AccessLevel, opts?: {
27
+ mutatesSelf?: boolean;
28
+ }): Promise<AccessResult>;
29
+ /** Browse a folder. Pass `folderId` to drill into a specific folder, or a `scope` to land on its root. */
30
+ export declare function browseFolder(userId: string, input: {
31
+ folderId: string;
32
+ } | {
33
+ scope: CloudScope;
7
34
  }): Promise<{
8
- files: {
9
- type: string;
10
- name: string;
11
- id: string;
12
- user: {
35
+ folder: {
36
+ files: {
37
+ path: string;
38
+ type: string;
39
+ name: string;
40
+ id: string;
41
+ user: {
42
+ id: string;
43
+ username: string;
44
+ } | null;
45
+ size: number | null;
46
+ uploadedAt: Date | null;
47
+ }[];
48
+ childFolders: {
49
+ name: string;
50
+ id: string;
51
+ color: string | null;
52
+ _count: {
53
+ files: number;
54
+ childFolders: number;
55
+ };
56
+ }[];
57
+ parentFolder: {
58
+ name: string;
13
59
  id: string;
14
- username: string;
15
60
  } | null;
16
- size: number | null;
17
- uploadedAt: Date | null;
18
- }[];
19
- childFolders: {
61
+ } & {
20
62
  name: string;
21
63
  id: string;
22
64
  color: string | null;
23
- _count: {
24
- files: number;
25
- childFolders: number;
26
- };
65
+ classId: string | null;
66
+ schoolStorageId: string | null;
67
+ personalOwnerId: string | null;
68
+ scope: import(".prisma/client").$Enums.FolderScope;
69
+ parentFolderId: string | null;
70
+ };
71
+ breadcrumbs: {
72
+ id: string;
73
+ name: string;
27
74
  }[];
28
- } & {
29
- name: string;
30
- id: string;
31
- color: string | null;
32
- classId: string | null;
33
- parentFolderId: string | null;
75
+ canWrite: boolean;
76
+ scope: CloudScope;
77
+ /**
78
+ * When the viewer's access comes through an explicit grant (not scope
79
+ * membership), the UI should label the root as "Shared with me" rather
80
+ * than the underlying scope's title. The grantee may not even be a
81
+ * member of that scope — showing "My Files" or "Class Files" would be
82
+ * misleading. Null when the viewer is a regular scope member.
83
+ */
84
+ displayRoot: {
85
+ kind: "SHARED_WITH_ME";
86
+ name: string;
87
+ } | null;
88
+ }>;
89
+ /**
90
+ * Drive-style "Shared with me" — surfaces every top-most folder/file the user
91
+ * has an explicit grant on (filtering out anything already covered by their
92
+ * scope defaults). Shaped like a folder so the existing folder-browser UI can
93
+ * render it without special cases.
94
+ *
95
+ * The pseudo-folder has a synthetic id (`shared-with-me`) and the foreign-key
96
+ * columns set to null — the UI should never try to mutate it directly. The
97
+ * union shape matches `browseFolder`'s return type so the same client query
98
+ * can render either.
99
+ */
100
+ export declare function browseSharedWithMe(userId: string): Promise<{
101
+ folder: {
102
+ id: string;
103
+ name: string;
104
+ color: null;
105
+ classId: null;
106
+ schoolStorageId: null;
107
+ personalOwnerId: null;
108
+ scope: "GENERIC";
109
+ parentFolderId: null;
110
+ parentFolder: null;
111
+ childFolders: {
112
+ id: string;
113
+ name: string;
114
+ color: string | null;
115
+ _count: {
116
+ files: number;
117
+ childFolders: number;
118
+ };
119
+ }[];
120
+ files: {
121
+ id: string;
122
+ name: string;
123
+ type: string;
124
+ size: number | null;
125
+ path: string;
126
+ uploadedAt: Date | null;
127
+ user: {
128
+ id: string;
129
+ username: string;
130
+ } | null;
131
+ }[];
132
+ };
133
+ breadcrumbs: {
134
+ id: string;
135
+ name: string;
136
+ }[];
137
+ canWrite: boolean;
138
+ scope: {
139
+ kind: "PERSONAL";
140
+ userId: string;
141
+ };
142
+ /** Same `displayRoot` shape as `browseFolder` so the client union is uniform. */
143
+ displayRoot: {
144
+ kind: "SHARED_WITH_ME";
145
+ name: string;
146
+ };
34
147
  }>;
35
- /** Get folder with its contents (subfolders and files). */
36
- export declare function getFolder(folderId: string): Promise<{
148
+ export declare function getRootFolder(userId: string, scope: CloudScope): Promise<{
37
149
  files: {
150
+ path: string;
38
151
  type: string;
39
152
  name: string;
40
153
  id: string;
@@ -63,10 +176,14 @@ export declare function getFolder(folderId: string): Promise<{
63
176
  id: string;
64
177
  color: string | null;
65
178
  classId: string | null;
179
+ schoolStorageId: string | null;
180
+ personalOwnerId: string | null;
181
+ scope: import(".prisma/client").$Enums.FolderScope;
66
182
  parentFolderId: string | null;
67
183
  }>;
68
- export declare function getChildFolders(classId: string): Promise<({
184
+ export declare function getFolder(userId: string, folderId: string): Promise<{
69
185
  files: {
186
+ path: string;
70
187
  type: string;
71
188
  name: string;
72
189
  id: string;
@@ -86,154 +203,108 @@ export declare function getChildFolders(classId: string): Promise<({
86
203
  childFolders: number;
87
204
  };
88
205
  }[];
206
+ parentFolder: {
207
+ name: string;
208
+ id: string;
209
+ } | null;
89
210
  } & {
90
211
  name: string;
91
212
  id: string;
92
213
  color: string | null;
93
214
  classId: string | null;
215
+ schoolStorageId: string | null;
216
+ personalOwnerId: string | null;
217
+ scope: import(".prisma/client").$Enums.FolderScope;
94
218
  parentFolderId: string | null;
95
- })[]>;
96
- export declare function getFolderChildren(folderId: string, classId: string): Promise<({
97
- files: {
98
- type: string;
99
- name: string;
100
- id: string;
101
- user: {
102
- id: string;
103
- username: string;
104
- } | null;
105
- size: number | null;
106
- uploadedAt: Date | null;
107
- }[];
108
- childFolders: {
109
- name: string;
110
- id: string;
111
- color: string | null;
112
- _count: {
113
- files: number;
114
- childFolders: number;
115
- };
116
- }[];
117
- } & {
219
+ }>;
220
+ export declare function getFolderBreadcrumbs(userId: string, folderId: string): Promise<{
221
+ id: string;
222
+ name: string;
223
+ }[]>;
224
+ export declare function getFolderParents(userId: string, folderId: string): Promise<({
118
225
  name: string;
119
226
  id: string;
120
227
  color: string | null;
121
228
  classId: string | null;
229
+ schoolStorageId: string | null;
230
+ personalOwnerId: string | null;
231
+ scope: import(".prisma/client").$Enums.FolderScope;
122
232
  parentFolderId: string | null;
123
- })[]>;
124
- export declare function getRootFolder(classId: string): Promise<{
125
- files: {
126
- type: string;
127
- name: string;
128
- id: string;
129
- user: {
130
- id: string;
131
- username: string;
132
- } | null;
133
- size: number | null;
134
- uploadedAt: Date | null;
135
- }[];
136
- childFolders: {
137
- name: string;
138
- id: string;
139
- color: string | null;
140
- _count: {
141
- files: number;
142
- childFolders: number;
143
- };
144
- files: {
145
- id: string;
146
- }[];
147
- childFolders: {
148
- id: string;
149
- }[];
150
- }[];
151
- } & {
233
+ } | null)[]>;
234
+ export declare function createFolderRecord(userId: string, input: {
235
+ name: string;
236
+ parentFolderId?: string | null;
237
+ color?: string;
238
+ scope?: CloudScope;
239
+ }): Promise<{
152
240
  name: string;
153
241
  id: string;
154
242
  color: string | null;
155
243
  classId: string | null;
244
+ schoolStorageId: string | null;
245
+ personalOwnerId: string | null;
246
+ scope: import(".prisma/client").$Enums.FolderScope;
156
247
  parentFolderId: string | null;
157
248
  }>;
158
- export declare function uploadFilesToFolder(userId: string, classId: string, folderId: string, files: {
159
- name: string;
160
- type: string;
161
- size: number;
162
- }[]): Promise<{
163
- success: boolean;
164
- uploadedCount: number;
165
- }>;
166
- export declare function deleteFolderRecord(userId: string, classId: string, folderId: string): Promise<{
167
- success: boolean;
168
- deletedFiles: number;
169
- deletedFolders: number;
170
- }>;
171
- export declare function moveFolder(userId: string, folderId: string, targetParentFolderId: string, classId: string): Promise<{
172
- files: {
173
- type: string;
174
- name: string;
175
- id: string;
176
- user: {
177
- id: string;
178
- username: string;
179
- } | null;
180
- size: number | null;
181
- uploadedAt: Date | null;
182
- }[];
183
- childFolders: {
184
- name: string;
185
- id: string;
186
- color: string | null;
187
- _count: {
188
- files: number;
189
- childFolders: number;
190
- };
191
- }[];
192
- } & {
249
+ export declare function updateFolderRecord(userId: string, input: {
250
+ folderId: string;
251
+ name?: string;
252
+ color?: string;
253
+ }): Promise<{
193
254
  name: string;
194
255
  id: string;
195
256
  color: string | null;
196
257
  classId: string | null;
258
+ schoolStorageId: string | null;
259
+ personalOwnerId: string | null;
260
+ scope: import(".prisma/client").$Enums.FolderScope;
197
261
  parentFolderId: string | null;
198
262
  }>;
199
- export declare function updateFolderRecord(folderId: string, name: string, color: string | undefined, classId: string): Promise<{
200
- files: {
201
- type: string;
202
- name: string;
263
+ export declare function deleteFolder(userId: string, folderId: string): Promise<{
264
+ success: boolean;
265
+ }>;
266
+ export declare function moveFolder(userId: string, input: {
267
+ folderId: string;
268
+ targetParentFolderId: string;
269
+ }): Promise<{
270
+ success: boolean;
271
+ }>;
272
+ export declare function getFolderUploadUrls(userId: string, input: {
273
+ folderId: string;
274
+ files: DirectFileData[];
275
+ }): Promise<import("../lib/fileUpload.js").DirectUploadFile[]>;
276
+ export declare function confirmFolderUpload(_userId: string, input: {
277
+ fileId: string;
278
+ uploadSuccess: boolean;
279
+ errorMessage?: string;
280
+ }): Promise<{
281
+ success: boolean;
282
+ }>;
283
+ /** What scopes can this user pick from in cloud-storage UIs? */
284
+ export declare function listUserScopes(userId: string): Promise<{
285
+ personal: {
286
+ kind: "PERSONAL";
287
+ userId: string;
288
+ };
289
+ schools: {
203
290
  id: string;
204
- user: {
205
- id: string;
206
- username: string;
207
- } | null;
208
- size: number | null;
209
- uploadedAt: Date | null;
291
+ name: string;
292
+ logoId: string | null;
293
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
210
294
  }[];
211
- childFolders: {
295
+ classes: {
212
296
  name: string;
213
297
  id: string;
298
+ schoolId: string | null;
299
+ subject: string;
214
300
  color: string | null;
215
- _count: {
216
- files: number;
217
- childFolders: number;
218
- };
301
+ section: string;
219
302
  }[];
220
- } & {
221
- name: string;
222
- id: string;
223
- color: string | null;
224
- classId: string | null;
225
- parentFolderId: string | null;
303
+ sharedWithMe: {
304
+ kind: "SHARED_WITH_ME";
305
+ folderCount: number;
306
+ fileCount: number;
307
+ };
226
308
  }>;
227
- export declare function getFolderParents(folderId: string): Promise<({
228
- name: string;
229
- id: string;
230
- color: string | null;
231
- classId: string | null;
232
- parentFolderId: string | null;
233
- } | null)[]>;
234
- export declare function getFolderUploadUrls(userId: string, classId: string, folderId: string, files: {
235
- name: string;
236
- type: string;
237
- size: number;
238
- }[]): Promise<import("../lib/fileUpload.js").DirectUploadFile[]>;
309
+ export {};
239
310
  //# sourceMappingURL=folder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["services/folder.ts"],"names":[],"mappings":"AAoBA,gDAAgD;AAChD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BF;AAED,2DAA2D;AAC3D,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS/C;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGpD;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;MAExE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUlD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;;;GAuBtD;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM;;;;GA2CjB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDhB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBhB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;;;;;;aAYtD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,8DAwCtD"}
1
+ {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["services/folder.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,UAAU,EASX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,WAAW,EAIjB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,YAAY;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+CD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAcD,0GAA0G;AAC1G,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCjD;;;;;;OAMG;;;;;GAKN;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;eAoBpC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;YACxB,IAAI,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;SAC/C,EAAE;;;;;;;;;;;IAKL,iFAAiF;;;;;GAMpF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGpE;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAG/D;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;KAG1E;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;aAQtE;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;;;;;;;;;GAqBF;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;GAsB3D;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;GAelE;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE;;GAiD1D;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,8DAIrD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE;;GAWzE;AAED,gEAAgE;AAChE,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAkDlD"}