@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.
- package/dist/middleware/security.d.ts.map +1 -1
- package/dist/middleware/security.js +3 -3
- package/dist/middleware/security.js.map +1 -1
- package/dist/models/access.d.ts +21 -66
- package/dist/models/access.d.ts.map +1 -1
- package/dist/models/access.js +10 -26
- package/dist/models/access.js.map +1 -1
- package/dist/models/agenda.d.ts +4 -2
- package/dist/models/agenda.d.ts.map +1 -1
- package/dist/models/announcement.d.ts +4 -3
- package/dist/models/announcement.d.ts.map +1 -1
- package/dist/models/announcement.js +2 -3
- package/dist/models/announcement.js.map +1 -1
- package/dist/models/assignment.d.ts +40 -33
- package/dist/models/assignment.d.ts.map +1 -1
- package/dist/models/auth.d.ts +2 -4
- package/dist/models/auth.d.ts.map +1 -1
- package/dist/models/auth.js +2 -3
- package/dist/models/auth.js.map +1 -1
- package/dist/models/class.d.ts +34 -6
- package/dist/models/class.d.ts.map +1 -1
- package/dist/models/class.js +15 -2
- package/dist/models/class.js.map +1 -1
- package/dist/models/cloudStorage.d.ts +153 -0
- package/dist/models/cloudStorage.d.ts.map +1 -0
- package/dist/models/cloudStorage.js +295 -0
- package/dist/models/cloudStorage.js.map +1 -0
- package/dist/models/comment.d.ts +0 -24
- package/dist/models/comment.d.ts.map +1 -1
- package/dist/models/comment.js +2 -6
- package/dist/models/comment.js.map +1 -1
- package/dist/models/conversation.d.ts +22 -22
- package/dist/models/department.d.ts +154 -0
- package/dist/models/department.d.ts.map +1 -0
- package/dist/models/department.js +135 -0
- package/dist/models/department.js.map +1 -0
- package/dist/models/event.d.ts +10 -4
- package/dist/models/event.d.ts.map +1 -1
- package/dist/models/event.js +2 -5
- package/dist/models/event.js.map +1 -1
- package/dist/models/file.d.ts +52 -36
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js +4 -42
- package/dist/models/file.js.map +1 -1
- package/dist/models/folder.d.ts +47 -0
- package/dist/models/folder.d.ts.map +1 -1
- package/dist/models/labChat.d.ts +11 -9
- package/dist/models/labChat.d.ts.map +1 -1
- package/dist/models/message.d.ts +46 -12
- package/dist/models/message.d.ts.map +1 -1
- package/dist/models/message.js +19 -10
- package/dist/models/message.js.map +1 -1
- package/dist/models/newtonChat.d.ts +2 -1
- package/dist/models/newtonChat.d.ts.map +1 -1
- package/dist/models/school.d.ts +45 -12
- package/dist/models/school.d.ts.map +1 -1
- package/dist/models/school.js +19 -2
- package/dist/models/school.js.map +1 -1
- package/dist/models/section.d.ts +2 -1
- package/dist/models/section.d.ts.map +1 -1
- package/dist/models/tag.d.ts +117 -0
- package/dist/models/tag.d.ts.map +1 -0
- package/dist/models/tag.js +113 -0
- package/dist/models/tag.js.map +1 -0
- package/dist/models/worksheet.d.ts +3 -0
- package/dist/models/worksheet.d.ts.map +1 -1
- package/dist/pipelines/aiLabChatContract.d.ts +8 -8
- package/dist/routers/_app.d.ts +6704 -5222
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/_app.js +8 -2
- package/dist/routers/_app.js.map +1 -1
- package/dist/routers/agenda.d.ts +4 -2
- package/dist/routers/agenda.d.ts.map +1 -1
- package/dist/routers/announcement.d.ts.map +1 -1
- package/dist/routers/announcement.js +3 -5
- package/dist/routers/announcement.js.map +1 -1
- package/dist/routers/assignment.d.ts +49 -40
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +2 -3
- package/dist/routers/assignment.js.map +1 -1
- package/dist/routers/class.d.ts +92 -19
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/class.js +5 -2
- package/dist/routers/class.js.map +1 -1
- package/dist/routers/conversation.d.ts +5 -5
- package/dist/routers/department.d.ts +293 -0
- package/dist/routers/department.d.ts.map +1 -0
- package/dist/routers/department.js +93 -0
- package/dist/routers/department.js.map +1 -0
- package/dist/routers/event.d.ts +4 -3
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/file.d.ts +10 -8
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/file.js +26 -17
- package/dist/routers/file.js.map +1 -1
- package/dist/routers/folder.d.ts +163 -186
- package/dist/routers/folder.d.ts.map +1 -1
- package/dist/routers/folder.js +102 -88
- package/dist/routers/folder.js.map +1 -1
- package/dist/routers/labChat.d.ts +13 -4
- package/dist/routers/labChat.d.ts.map +1 -1
- package/dist/routers/message.d.ts +20 -2
- package/dist/routers/message.d.ts.map +1 -1
- package/dist/routers/newtonChat.d.ts +10 -1
- package/dist/routers/newtonChat.d.ts.map +1 -1
- package/dist/routers/permissions.d.ts +120 -0
- package/dist/routers/permissions.d.ts.map +1 -0
- package/dist/routers/permissions.js +50 -0
- package/dist/routers/permissions.js.map +1 -0
- package/dist/routers/school.d.ts +160 -17
- package/dist/routers/school.d.ts.map +1 -1
- package/dist/routers/school.js +46 -3
- package/dist/routers/school.js.map +1 -1
- package/dist/routers/tag.d.ts +119 -0
- package/dist/routers/tag.d.ts.map +1 -0
- package/dist/routers/tag.js +52 -0
- package/dist/routers/tag.js.map +1 -0
- package/dist/routers/worksheet.d.ts +1 -0
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/seedDatabase.d.ts +0 -1
- package/dist/seedDatabase.d.ts.map +1 -1
- package/dist/services/agenda.d.ts +4 -2
- package/dist/services/agenda.d.ts.map +1 -1
- package/dist/services/assignment.d.ts +49 -40
- package/dist/services/assignment.d.ts.map +1 -1
- package/dist/services/class.d.ts +92 -19
- package/dist/services/class.d.ts.map +1 -1
- package/dist/services/class.js +92 -5
- package/dist/services/class.js.map +1 -1
- package/dist/services/conversation.d.ts +5 -5
- package/dist/services/department.d.ts +200 -0
- package/dist/services/department.d.ts.map +1 -0
- package/dist/services/department.js +368 -0
- package/dist/services/department.js.map +1 -0
- package/dist/services/event.d.ts +4 -3
- package/dist/services/event.d.ts.map +1 -1
- package/dist/services/file.d.ts +105 -3
- package/dist/services/file.d.ts.map +1 -1
- package/dist/services/file.js +167 -41
- package/dist/services/file.js.map +1 -1
- package/dist/services/folder.d.ts +220 -149
- package/dist/services/folder.d.ts.map +1 -1
- package/dist/services/folder.js +326 -196
- package/dist/services/folder.js.map +1 -1
- package/dist/services/labChat.d.ts +13 -4
- package/dist/services/labChat.d.ts.map +1 -1
- package/dist/services/labChat.js +4 -3
- package/dist/services/labChat.js.map +1 -1
- package/dist/services/message.d.ts +20 -2
- package/dist/services/message.d.ts.map +1 -1
- package/dist/services/message.js +7 -23
- package/dist/services/message.js.map +1 -1
- package/dist/services/newtonChat.d.ts +9 -0
- package/dist/services/newtonChat.d.ts.map +1 -1
- package/dist/services/newtonChat.js +4 -3
- package/dist/services/newtonChat.js.map +1 -1
- package/dist/services/permissions.d.ts +188 -0
- package/dist/services/permissions.d.ts.map +1 -0
- package/dist/services/permissions.js +661 -0
- package/dist/services/permissions.js.map +1 -0
- package/dist/services/school.d.ts +142 -15
- package/dist/services/school.d.ts.map +1 -1
- package/dist/services/school.js +308 -54
- package/dist/services/school.js.map +1 -1
- package/dist/services/tag.d.ts +71 -0
- package/dist/services/tag.d.ts.map +1 -0
- package/dist/services/tag.js +178 -0
- package/dist/services/tag.js.map +1 -0
- package/dist/services/worksheet.d.ts +1 -0
- package/dist/services/worksheet.d.ts.map +1 -1
- package/dist/utils/aiUser.d.ts.map +1 -1
- package/dist/utils/aiUser.js +2 -3
- package/dist/utils/aiUser.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260509220000_institution_overhaul/migration.sql +184 -0
- package/prisma/migrations/20260510170000_add_folder_permissions/migration.sql +93 -0
- package/prisma/schema.prisma +193 -35
- package/src/middleware/security.ts +1 -1
- package/src/models/access.ts +8 -24
- package/src/models/announcement.ts +0 -1
- package/src/models/auth.ts +0 -1
- package/src/models/class.ts +13 -0
- package/src/models/cloudStorage.ts +327 -0
- package/src/models/comment.ts +0 -4
- package/src/models/department.ts +159 -0
- package/src/models/event.ts +0 -3
- package/src/models/file.ts +2 -40
- package/src/models/message.ts +19 -5
- package/src/models/school.ts +26 -0
- package/src/models/tag.ts +140 -0
- package/src/routers/_app.ts +6 -0
- package/src/routers/announcement.ts +1 -3
- package/src/routers/assignment.ts +0 -1
- package/src/routers/class.ts +3 -0
- package/src/routers/department.ts +174 -0
- package/src/routers/file.ts +29 -26
- package/src/routers/folder.ts +127 -118
- package/src/routers/permissions.ts +71 -0
- package/src/routers/school.ts +83 -0
- package/src/routers/tag.ts +78 -0
- package/src/services/class.ts +109 -4
- package/src/services/department.ts +478 -0
- package/src/services/file.ts +172 -43
- package/src/services/folder.ts +399 -237
- package/src/services/labChat.ts +2 -1
- package/src/services/message.ts +5 -21
- package/src/services/newtonChat.ts +2 -1
- package/src/services/permissions.ts +778 -0
- package/src/services/school.ts +369 -57
- package/src/services/tag.ts +229 -0
- package/src/utils/aiUser.ts +0 -1
- package/tests/unit/services/permissions.test.ts +463 -0
|
@@ -1,40 +1,153 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
17
|
-
uploadedAt: Date | null;
|
|
18
|
-
}[];
|
|
19
|
-
childFolders: {
|
|
61
|
+
} & {
|
|
20
62
|
name: string;
|
|
21
63
|
id: string;
|
|
22
64
|
color: string | null;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
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
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
295
|
+
classes: {
|
|
212
296
|
name: string;
|
|
213
297
|
id: string;
|
|
298
|
+
schoolId: string | null;
|
|
299
|
+
subject: string;
|
|
214
300
|
color: string | null;
|
|
215
|
-
|
|
216
|
-
files: number;
|
|
217
|
-
childFolders: number;
|
|
218
|
-
};
|
|
301
|
+
section: string;
|
|
219
302
|
}[];
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
parentFolderId: string | null;
|
|
303
|
+
sharedWithMe: {
|
|
304
|
+
kind: "SHARED_WITH_ME";
|
|
305
|
+
folderCount: number;
|
|
306
|
+
fileCount: number;
|
|
307
|
+
};
|
|
226
308
|
}>;
|
|
227
|
-
export
|
|
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":"
|
|
1
|
+
{"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["services/folder.ts"],"names":[],"mappings":"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"}
|