9drive 1.0.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 (104) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +389 -0
  3. package/backend/dist/app.js +113 -0
  4. package/backend/dist/config/env.js +75 -0
  5. package/backend/dist/config/prisma.js +30 -0
  6. package/backend/dist/middleware/api-key.middleware.js +38 -0
  7. package/backend/dist/middleware/auth.middleware.js +21 -0
  8. package/backend/dist/middleware/error.middleware.js +7 -0
  9. package/backend/dist/modules/api-keys/api-key.routes.js +90 -0
  10. package/backend/dist/modules/audit-logs/audit-log.routes.js +20 -0
  11. package/backend/dist/modules/auth/auth.routes.js +201 -0
  12. package/backend/dist/modules/cdn/cdn.routes.js +105 -0
  13. package/backend/dist/modules/connected-accounts/connected-account.routes.js +313 -0
  14. package/backend/dist/modules/files/file.routes.js +1013 -0
  15. package/backend/dist/modules/files/stream-file.js +10 -0
  16. package/backend/dist/modules/files/stream-google-file.js +79 -0
  17. package/backend/dist/modules/folders/folder.routes.js +546 -0
  18. package/backend/dist/modules/google/google.service.js +485 -0
  19. package/backend/dist/modules/invites/invite.routes.js +127 -0
  20. package/backend/dist/modules/provider-configs/provider-config.routes.js +53 -0
  21. package/backend/dist/modules/public/public.routes.js +44 -0
  22. package/backend/dist/modules/public-api/public-api.routes.js +8 -0
  23. package/backend/dist/modules/s3/s3.service.js +104 -0
  24. package/backend/dist/modules/storage/storage.routes.js +108 -0
  25. package/backend/dist/modules/system/system.routes.js +663 -0
  26. package/backend/dist/modules/uploads/upload.routes.js +569 -0
  27. package/backend/dist/scripts/debug-query.js +19 -0
  28. package/backend/dist/scripts/seed-google-config-if-present.js +49 -0
  29. package/backend/dist/scripts/seed-google-config.js +40 -0
  30. package/backend/dist/scripts/test-api-upload.js +37 -0
  31. package/backend/dist/scripts/test-external-upload.js +181 -0
  32. package/backend/dist/scripts/test-s3-connection.js +33 -0
  33. package/backend/dist/server.js +7 -0
  34. package/backend/dist/utils/audit.js +20 -0
  35. package/backend/dist/utils/crypto.js +33 -0
  36. package/backend/dist/utils/jwt.js +15 -0
  37. package/backend/dist/utils/password.js +14 -0
  38. package/backend/prisma/generated/sqlite-client/client.d.ts +1 -0
  39. package/backend/prisma/generated/sqlite-client/client.js +5 -0
  40. package/backend/prisma/generated/sqlite-client/default.d.ts +1 -0
  41. package/backend/prisma/generated/sqlite-client/default.js +5 -0
  42. package/backend/prisma/generated/sqlite-client/edge.d.ts +1 -0
  43. package/backend/prisma/generated/sqlite-client/edge.js +436 -0
  44. package/backend/prisma/generated/sqlite-client/index-browser.js +422 -0
  45. package/backend/prisma/generated/sqlite-client/index.d.ts +35178 -0
  46. package/backend/prisma/generated/sqlite-client/index.js +457 -0
  47. package/backend/prisma/generated/sqlite-client/package.json +183 -0
  48. package/backend/prisma/generated/sqlite-client/query_engine-windows.dll.node +0 -0
  49. package/backend/prisma/generated/sqlite-client/query_engine_bg.js +2 -0
  50. package/backend/prisma/generated/sqlite-client/query_engine_bg.wasm +0 -0
  51. package/backend/prisma/generated/sqlite-client/runtime/edge-esm.js +35 -0
  52. package/backend/prisma/generated/sqlite-client/runtime/edge.js +35 -0
  53. package/backend/prisma/generated/sqlite-client/runtime/index-browser.d.ts +370 -0
  54. package/backend/prisma/generated/sqlite-client/runtime/index-browser.js +17 -0
  55. package/backend/prisma/generated/sqlite-client/runtime/library.d.ts +3982 -0
  56. package/backend/prisma/generated/sqlite-client/runtime/library.js +147 -0
  57. package/backend/prisma/generated/sqlite-client/runtime/react-native.js +84 -0
  58. package/backend/prisma/generated/sqlite-client/runtime/wasm-compiler-edge.js +85 -0
  59. package/backend/prisma/generated/sqlite-client/runtime/wasm-engine-edge.js +38 -0
  60. package/backend/prisma/generated/sqlite-client/schema.prisma +354 -0
  61. package/backend/prisma/generated/sqlite-client/wasm-edge-light-loader.mjs +5 -0
  62. package/backend/prisma/generated/sqlite-client/wasm-worker-loader.mjs +5 -0
  63. package/backend/prisma/generated/sqlite-client/wasm.d.ts +1 -0
  64. package/backend/prisma/generated/sqlite-client/wasm.js +443 -0
  65. package/backend/prisma/migrations/20260604084325_init/migration.sql +191 -0
  66. package/backend/prisma/migrations/20260604090020_global_provider_config/migration.sql +8 -0
  67. package/backend/prisma/migrations/20260604091957_virtual_folders/migration.sql +32 -0
  68. package/backend/prisma/migrations/20260604095418_nested_folders/migration.sql +8 -0
  69. package/backend/prisma/migrations/20260604095705_file_shares/migration.sql +22 -0
  70. package/backend/prisma/migrations/20260604100802_file_preview_tokens/migration.sql +20 -0
  71. package/backend/prisma/migrations/20260604120000_add_file_share_token/migration.sql +3 -0
  72. package/backend/prisma/migrations/20260604130000_workspace_invites/migration.sql +17 -0
  73. package/backend/prisma/migrations/20260604133000_invite_targets/migration.sql +9 -0
  74. package/backend/prisma/migrations/20260605090000_query_indexes/migration.sql +12 -0
  75. package/backend/prisma/migrations/20260605100000_folder_icons/migration.sql +1 -0
  76. package/backend/prisma/migrations/20260605110000_google_auth_handoff/migration.sql +22 -0
  77. package/backend/prisma/migrations/20260611120000_s3_storage_support/migration.sql +31 -0
  78. package/backend/prisma/migrations/20260611130000_upload_routing_policy/migration.sql +14 -0
  79. package/backend/prisma/migrations/20260611140000_api_keys/migration.sql +21 -0
  80. package/backend/prisma/migrations/20260630030000_upload_session_resumable_fields/migration.sql +9 -0
  81. package/backend/prisma/migrations/migration_lock.toml +3 -0
  82. package/backend/prisma/schema.prisma +353 -0
  83. package/backend/prisma/schema.sqlite.prisma +354 -0
  84. package/backend/public/assets/index-B4ifIM_G.js +135 -0
  85. package/backend/public/assets/index-DwOPZrmt.css +2 -0
  86. package/backend/public/assets/ort-wasm-simd-threaded.jsep-D5Jk56-t.wasm +0 -0
  87. package/backend/public/assets/ort.bundle.min-CpXgll2e.js +2746 -0
  88. package/backend/public/assets/ort.bundle.min-OfoG_cy9.mjs +2817 -0
  89. package/backend/public/assets/ort.webgpu.bundle.min-C1vdBqT7.js +2746 -0
  90. package/backend/public/assets/ort.webgpu.bundle.min-CEayb2S6.mjs +2817 -0
  91. package/backend/public/assets/pdf.worker.min-Dswkl-cV.mjs +29 -0
  92. package/backend/public/favicon.ico +74 -0
  93. package/backend/public/favicon.svg +74 -0
  94. package/backend/public/icons.svg +24 -0
  95. package/backend/public/index.html +34 -0
  96. package/backend/public/manifest.webmanifest +1 -0
  97. package/backend/public/maskable-icon.svg +22 -0
  98. package/backend/public/pwa-192x192.svg +22 -0
  99. package/backend/public/pwa-512x512.svg +22 -0
  100. package/backend/public/registerSW.js +1 -0
  101. package/backend/public/sw.js +1 -0
  102. package/backend/public/workbox-9c191d2f.js +1 -0
  103. package/bin/9drive.js +320 -0
  104. package/package.json +60 -0
@@ -0,0 +1,443 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
+ /* eslint-disable */
4
+ // biome-ignore-all lint: generated file
5
+
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+
8
+ const {
9
+ PrismaClientKnownRequestError,
10
+ PrismaClientUnknownRequestError,
11
+ PrismaClientRustPanicError,
12
+ PrismaClientInitializationError,
13
+ PrismaClientValidationError,
14
+ getPrismaClient,
15
+ sqltag,
16
+ empty,
17
+ join,
18
+ raw,
19
+ skip,
20
+ Decimal,
21
+ Debug,
22
+ objectEnumValues,
23
+ makeStrictEnum,
24
+ Extensions,
25
+ warnOnce,
26
+ defineDmmfProperty,
27
+ Public,
28
+ getRuntime,
29
+ createParam,
30
+ } = require('./runtime/wasm-engine-edge.js')
31
+
32
+
33
+ const Prisma = {}
34
+
35
+ exports.Prisma = Prisma
36
+ exports.$Enums = {}
37
+
38
+ /**
39
+ * Prisma Client JS version: 6.19.3
40
+ * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
41
+ */
42
+ Prisma.prismaVersion = {
43
+ client: "6.19.3",
44
+ engine: "c2990dca591cba766e3b7ef5d9e8a84796e47ab7"
45
+ }
46
+
47
+ Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError;
48
+ Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError
49
+ Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError
50
+ Prisma.PrismaClientInitializationError = PrismaClientInitializationError
51
+ Prisma.PrismaClientValidationError = PrismaClientValidationError
52
+ Prisma.Decimal = Decimal
53
+
54
+ /**
55
+ * Re-export of sql-template-tag
56
+ */
57
+ Prisma.sql = sqltag
58
+ Prisma.empty = empty
59
+ Prisma.join = join
60
+ Prisma.raw = raw
61
+ Prisma.validator = Public.validator
62
+
63
+ /**
64
+ * Extensions
65
+ */
66
+ Prisma.getExtensionContext = Extensions.getExtensionContext
67
+ Prisma.defineExtension = Extensions.defineExtension
68
+
69
+ /**
70
+ * Shorthand utilities for JSON filtering
71
+ */
72
+ Prisma.DbNull = objectEnumValues.instances.DbNull
73
+ Prisma.JsonNull = objectEnumValues.instances.JsonNull
74
+ Prisma.AnyNull = objectEnumValues.instances.AnyNull
75
+
76
+ Prisma.NullTypes = {
77
+ DbNull: objectEnumValues.classes.DbNull,
78
+ JsonNull: objectEnumValues.classes.JsonNull,
79
+ AnyNull: objectEnumValues.classes.AnyNull
80
+ }
81
+
82
+
83
+
84
+
85
+
86
+ /**
87
+ * Enums
88
+ */
89
+ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
90
+ Serializable: 'Serializable'
91
+ });
92
+
93
+ exports.Prisma.UserScalarFieldEnum = {
94
+ id: 'id',
95
+ name: 'name',
96
+ email: 'email',
97
+ passwordHash: 'passwordHash',
98
+ status: 'status',
99
+ createdAt: 'createdAt',
100
+ updatedAt: 'updatedAt'
101
+ };
102
+
103
+ exports.Prisma.ApiKeyScalarFieldEnum = {
104
+ id: 'id',
105
+ userId: 'userId',
106
+ name: 'name',
107
+ keyPrefix: 'keyPrefix',
108
+ keyHash: 'keyHash',
109
+ scopes: 'scopes',
110
+ status: 'status',
111
+ lastUsedAt: 'lastUsedAt',
112
+ expiresAt: 'expiresAt',
113
+ revokedAt: 'revokedAt',
114
+ createdAt: 'createdAt',
115
+ updatedAt: 'updatedAt'
116
+ };
117
+
118
+ exports.Prisma.UploadRoutingPolicyScalarFieldEnum = {
119
+ id: 'id',
120
+ userId: 'userId',
121
+ mode: 'mode',
122
+ priorityAccountIds: 'priorityAccountIds',
123
+ roundRobinCursor: 'roundRobinCursor',
124
+ createdAt: 'createdAt',
125
+ updatedAt: 'updatedAt'
126
+ };
127
+
128
+ exports.Prisma.UserSessionScalarFieldEnum = {
129
+ id: 'id',
130
+ userId: 'userId',
131
+ refreshTokenHash: 'refreshTokenHash',
132
+ userAgent: 'userAgent',
133
+ ipAddress: 'ipAddress',
134
+ expiresAt: 'expiresAt',
135
+ revokedAt: 'revokedAt',
136
+ createdAt: 'createdAt',
137
+ updatedAt: 'updatedAt'
138
+ };
139
+
140
+ exports.Prisma.AuthHandoffScalarFieldEnum = {
141
+ id: 'id',
142
+ userId: 'userId',
143
+ tokenHash: 'tokenHash',
144
+ expiresAt: 'expiresAt',
145
+ usedAt: 'usedAt',
146
+ createdAt: 'createdAt'
147
+ };
148
+
149
+ exports.Prisma.ProviderConfigScalarFieldEnum = {
150
+ id: 'id',
151
+ userId: 'userId',
152
+ provider: 'provider',
153
+ clientIdEncrypted: 'clientIdEncrypted',
154
+ clientSecretEncrypted: 'clientSecretEncrypted',
155
+ redirectUri: 'redirectUri',
156
+ scopes: 'scopes',
157
+ status: 'status',
158
+ createdAt: 'createdAt',
159
+ updatedAt: 'updatedAt'
160
+ };
161
+
162
+ exports.Prisma.OauthStateScalarFieldEnum = {
163
+ id: 'id',
164
+ userId: 'userId',
165
+ providerConfigId: 'providerConfigId',
166
+ flow: 'flow',
167
+ stateHash: 'stateHash',
168
+ expiresAt: 'expiresAt',
169
+ usedAt: 'usedAt',
170
+ createdAt: 'createdAt'
171
+ };
172
+
173
+ exports.Prisma.ConnectedAccountScalarFieldEnum = {
174
+ id: 'id',
175
+ userId: 'userId',
176
+ providerConfigId: 'providerConfigId',
177
+ provider: 'provider',
178
+ providerAccountId: 'providerAccountId',
179
+ email: 'email',
180
+ displayName: 'displayName',
181
+ avatarUrl: 'avatarUrl',
182
+ accessTokenEncrypted: 'accessTokenEncrypted',
183
+ refreshTokenEncrypted: 'refreshTokenEncrypted',
184
+ tokenExpiresAt: 'tokenExpiresAt',
185
+ scopes: 'scopes',
186
+ status: 'status',
187
+ lastError: 'lastError',
188
+ createdAt: 'createdAt',
189
+ updatedAt: 'updatedAt'
190
+ };
191
+
192
+ exports.Prisma.S3StorageConfigScalarFieldEnum = {
193
+ id: 'id',
194
+ userId: 'userId',
195
+ connectedAccountId: 'connectedAccountId',
196
+ name: 'name',
197
+ bucket: 'bucket',
198
+ region: 'region',
199
+ endpoint: 'endpoint',
200
+ accessKeyIdEncrypted: 'accessKeyIdEncrypted',
201
+ secretAccessKeyEncrypted: 'secretAccessKeyEncrypted',
202
+ forcePathStyle: 'forcePathStyle',
203
+ prefix: 'prefix',
204
+ quotaBytes: 'quotaBytes',
205
+ status: 'status',
206
+ createdAt: 'createdAt',
207
+ updatedAt: 'updatedAt'
208
+ };
209
+
210
+ exports.Prisma.StorageAccountScalarFieldEnum = {
211
+ id: 'id',
212
+ connectedAccountId: 'connectedAccountId',
213
+ totalBytes: 'totalBytes',
214
+ usedBytes: 'usedBytes',
215
+ availableBytes: 'availableBytes',
216
+ trashBytes: 'trashBytes',
217
+ lastSyncedAt: 'lastSyncedAt',
218
+ createdAt: 'createdAt',
219
+ updatedAt: 'updatedAt'
220
+ };
221
+
222
+ exports.Prisma.FileScalarFieldEnum = {
223
+ id: 'id',
224
+ userId: 'userId',
225
+ connectedAccountId: 'connectedAccountId',
226
+ folderId: 'folderId',
227
+ provider: 'provider',
228
+ providerFileId: 'providerFileId',
229
+ name: 'name',
230
+ mimeType: 'mimeType',
231
+ sizeBytes: 'sizeBytes',
232
+ checksum: 'checksum',
233
+ status: 'status',
234
+ createdAt: 'createdAt',
235
+ updatedAt: 'updatedAt',
236
+ deletedAt: 'deletedAt'
237
+ };
238
+
239
+ exports.Prisma.FileShareScalarFieldEnum = {
240
+ id: 'id',
241
+ fileId: 'fileId',
242
+ userId: 'userId',
243
+ token: 'token',
244
+ tokenHash: 'tokenHash',
245
+ enabled: 'enabled',
246
+ expiresAt: 'expiresAt',
247
+ createdAt: 'createdAt',
248
+ updatedAt: 'updatedAt'
249
+ };
250
+
251
+ exports.Prisma.FilePreviewTokenScalarFieldEnum = {
252
+ id: 'id',
253
+ fileId: 'fileId',
254
+ userId: 'userId',
255
+ tokenHash: 'tokenHash',
256
+ expiresAt: 'expiresAt',
257
+ createdAt: 'createdAt'
258
+ };
259
+
260
+ exports.Prisma.FolderScalarFieldEnum = {
261
+ id: 'id',
262
+ userId: 'userId',
263
+ parentId: 'parentId',
264
+ connectedAccountId: 'connectedAccountId',
265
+ provider: 'provider',
266
+ providerFolderId: 'providerFolderId',
267
+ name: 'name',
268
+ color: 'color',
269
+ iconUrl: 'iconUrl',
270
+ createdAt: 'createdAt',
271
+ updatedAt: 'updatedAt',
272
+ deletedAt: 'deletedAt'
273
+ };
274
+
275
+ exports.Prisma.UploadSessionScalarFieldEnum = {
276
+ id: 'id',
277
+ userId: 'userId',
278
+ targetConnectedAccountId: 'targetConnectedAccountId',
279
+ folderId: 'folderId',
280
+ fileName: 'fileName',
281
+ mimeType: 'mimeType',
282
+ sizeBytes: 'sizeBytes',
283
+ status: 'status',
284
+ googleSessionUri: 'googleSessionUri',
285
+ errorMessage: 'errorMessage',
286
+ createdAt: 'createdAt',
287
+ completedAt: 'completedAt'
288
+ };
289
+
290
+ exports.Prisma.AuditLogScalarFieldEnum = {
291
+ id: 'id',
292
+ userId: 'userId',
293
+ action: 'action',
294
+ entityType: 'entityType',
295
+ entityId: 'entityId',
296
+ metadata: 'metadata',
297
+ createdAt: 'createdAt'
298
+ };
299
+
300
+ exports.Prisma.WorkspaceInviteScalarFieldEnum = {
301
+ id: 'id',
302
+ inviterId: 'inviterId',
303
+ inviteeEmail: 'inviteeEmail',
304
+ targetType: 'targetType',
305
+ targetId: 'targetId',
306
+ role: 'role',
307
+ status: 'status',
308
+ revokedAt: 'revokedAt',
309
+ acceptedAt: 'acceptedAt',
310
+ createdAt: 'createdAt',
311
+ updatedAt: 'updatedAt'
312
+ };
313
+
314
+ exports.Prisma.SortOrder = {
315
+ asc: 'asc',
316
+ desc: 'desc'
317
+ };
318
+
319
+ exports.Prisma.JsonNullValueInput = {
320
+ JsonNull: Prisma.JsonNull
321
+ };
322
+
323
+ exports.Prisma.NullableJsonNullValueInput = {
324
+ DbNull: Prisma.DbNull,
325
+ JsonNull: Prisma.JsonNull
326
+ };
327
+
328
+ exports.Prisma.JsonNullValueFilter = {
329
+ DbNull: Prisma.DbNull,
330
+ JsonNull: Prisma.JsonNull,
331
+ AnyNull: Prisma.AnyNull
332
+ };
333
+
334
+ exports.Prisma.QueryMode = {
335
+ default: 'default',
336
+ insensitive: 'insensitive'
337
+ };
338
+
339
+ exports.Prisma.NullsOrder = {
340
+ first: 'first',
341
+ last: 'last'
342
+ };
343
+
344
+
345
+ exports.Prisma.ModelName = {
346
+ User: 'User',
347
+ ApiKey: 'ApiKey',
348
+ UploadRoutingPolicy: 'UploadRoutingPolicy',
349
+ UserSession: 'UserSession',
350
+ AuthHandoff: 'AuthHandoff',
351
+ ProviderConfig: 'ProviderConfig',
352
+ OauthState: 'OauthState',
353
+ ConnectedAccount: 'ConnectedAccount',
354
+ S3StorageConfig: 'S3StorageConfig',
355
+ StorageAccount: 'StorageAccount',
356
+ File: 'File',
357
+ FileShare: 'FileShare',
358
+ FilePreviewToken: 'FilePreviewToken',
359
+ Folder: 'Folder',
360
+ UploadSession: 'UploadSession',
361
+ AuditLog: 'AuditLog',
362
+ WorkspaceInvite: 'WorkspaceInvite'
363
+ };
364
+ /**
365
+ * Create the Client
366
+ */
367
+ const config = {
368
+ "generator": {
369
+ "name": "client",
370
+ "provider": {
371
+ "fromEnvVar": null,
372
+ "value": "prisma-client-js"
373
+ },
374
+ "output": {
375
+ "value": "E:\\Project\\9Drive\\9drive\\backend\\prisma\\generated\\sqlite-client",
376
+ "fromEnvVar": null
377
+ },
378
+ "config": {
379
+ "engineType": "library"
380
+ },
381
+ "binaryTargets": [
382
+ {
383
+ "fromEnvVar": null,
384
+ "value": "windows",
385
+ "native": true
386
+ }
387
+ ],
388
+ "previewFeatures": [],
389
+ "sourceFilePath": "E:\\Project\\9Drive\\9drive\\backend\\prisma\\schema.sqlite.prisma",
390
+ "isCustomOutput": true
391
+ },
392
+ "relativeEnvPaths": {
393
+ "rootEnvPath": null,
394
+ "schemaEnvPath": "../../../.env"
395
+ },
396
+ "relativePath": "../..",
397
+ "clientVersion": "6.19.3",
398
+ "engineVersion": "c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
399
+ "datasourceNames": [
400
+ "db"
401
+ ],
402
+ "activeProvider": "sqlite",
403
+ "postinstall": false,
404
+ "inlineDatasources": {
405
+ "db": {
406
+ "url": {
407
+ "fromEnvVar": "DATABASE_URL",
408
+ "value": null
409
+ }
410
+ }
411
+ },
412
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/sqlite-client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(uuid())\n name String\n email String @unique\n passwordHash String @map(\"password_hash\")\n status String @default(\"active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n sessions UserSession[]\n authHandoffs AuthHandoff[]\n providerConfigs ProviderConfig[]\n oauthStates OauthState[]\n connectedAccounts ConnectedAccount[]\n s3StorageConfigs S3StorageConfig[]\n files File[]\n fileShares FileShare[]\n filePreviewTokens FilePreviewToken[]\n folders Folder[]\n uploadSessions UploadSession[]\n auditLogs AuditLog[]\n workspaceInvitesSent WorkspaceInvite[] @relation(\"WorkspaceInvitesSent\")\n uploadRoutingPolicy UploadRoutingPolicy?\n apiKeys ApiKey[]\n\n @@map(\"users\")\n}\n\nmodel ApiKey {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n name String\n keyPrefix String @map(\"key_prefix\")\n keyHash String @unique @map(\"key_hash\")\n scopes Json\n status String @default(\"active\")\n lastUsedAt DateTime? @map(\"last_used_at\")\n expiresAt DateTime? @map(\"expires_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@index([userId, status, createdAt])\n @@map(\"api_keys\")\n}\n\nmodel UploadRoutingPolicy {\n id String @id @default(uuid())\n userId String @unique @map(\"user_id\")\n mode String @default(\"most_available\")\n priorityAccountIds Json @map(\"priority_account_ids\")\n roundRobinCursor Int @default(0) @map(\"round_robin_cursor\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"upload_routing_policies\")\n}\n\nmodel UserSession {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n refreshTokenHash String @map(\"refresh_token_hash\")\n userAgent String? @map(\"user_agent\")\n ipAddress String? @map(\"ip_address\")\n expiresAt DateTime @map(\"expires_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@index([refreshTokenHash])\n @@map(\"user_sessions\")\n}\n\nmodel AuthHandoff {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"auth_handoffs\")\n}\n\nmodel ProviderConfig {\n id String @id @default(uuid())\n userId String? @map(\"user_id\")\n provider String\n clientIdEncrypted String @map(\"client_id_encrypted\")\n clientSecretEncrypted String @map(\"client_secret_encrypted\")\n redirectUri String @map(\"redirect_uri\")\n scopes Json\n status String @default(\"active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n oauthStates OauthState[]\n connectedAccounts ConnectedAccount[]\n\n @@index([userId])\n @@index([provider])\n @@map(\"provider_configs\")\n}\n\nmodel OauthState {\n id String @id @default(uuid())\n userId String? @map(\"user_id\")\n providerConfigId String @map(\"provider_config_id\")\n flow String @default(\"connect\")\n stateHash String @unique @map(\"state_hash\")\n expiresAt DateTime @map(\"expires_at\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n providerConfig ProviderConfig @relation(fields: [providerConfigId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"oauth_states\")\n}\n\nmodel ConnectedAccount {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n providerConfigId String? @map(\"provider_config_id\")\n provider String\n providerAccountId String @map(\"provider_account_id\")\n email String\n displayName String? @map(\"display_name\")\n avatarUrl String? @map(\"avatar_url\")\n accessTokenEncrypted String? @map(\"access_token_encrypted\")\n refreshTokenEncrypted String? @map(\"refresh_token_encrypted\")\n tokenExpiresAt DateTime? @map(\"token_expires_at\")\n scopes Json\n status String @default(\"connected\")\n lastError String? @map(\"last_error\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n providerConfig ProviderConfig? @relation(fields: [providerConfigId], references: [id], onDelete: Cascade)\n storageAccount StorageAccount?\n files File[]\n folders Folder[]\n uploadSessions UploadSession[]\n s3StorageConfig S3StorageConfig?\n\n @@unique([userId, provider, providerAccountId])\n @@index([userId])\n @@index([userId, status, createdAt])\n @@map(\"connected_accounts\")\n}\n\nmodel S3StorageConfig {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n connectedAccountId String @unique @map(\"connected_account_id\")\n name String\n bucket String\n region String\n endpoint String?\n accessKeyIdEncrypted String @map(\"access_key_id_encrypted\")\n secretAccessKeyEncrypted String @map(\"secret_access_key_encrypted\")\n forcePathStyle Boolean @default(false) @map(\"force_path_style\")\n prefix String @default(\"9drive\")\n quotaBytes BigInt? @map(\"quota_bytes\")\n status String @default(\"active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n connectedAccount ConnectedAccount @relation(fields: [connectedAccountId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@index([userId, status])\n @@map(\"s3_storage_configs\")\n}\n\nmodel StorageAccount {\n id String @id @default(uuid())\n connectedAccountId String @unique @map(\"connected_account_id\")\n totalBytes BigInt? @map(\"total_bytes\")\n usedBytes BigInt @default(0) @map(\"used_bytes\")\n availableBytes BigInt? @map(\"available_bytes\")\n trashBytes BigInt? @map(\"trash_bytes\")\n lastSyncedAt DateTime? @map(\"last_synced_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n connectedAccount ConnectedAccount @relation(fields: [connectedAccountId], references: [id], onDelete: Cascade)\n\n @@map(\"storage_accounts\")\n}\n\nmodel File {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n connectedAccountId String @map(\"connected_account_id\")\n folderId String? @map(\"folder_id\")\n provider String\n providerFileId String @map(\"provider_file_id\")\n name String\n mimeType String @map(\"mime_type\")\n sizeBytes BigInt @map(\"size_bytes\")\n checksum String?\n status String @default(\"active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n deletedAt DateTime? @map(\"deleted_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n connectedAccount ConnectedAccount @relation(fields: [connectedAccountId], references: [id], onDelete: Cascade)\n folder Folder? @relation(fields: [folderId], references: [id], onDelete: SetNull)\n shares FileShare[]\n previewTokens FilePreviewToken[]\n\n @@index([userId])\n @@index([userId, status, createdAt])\n @@index([userId, status, folderId, createdAt])\n @@index([connectedAccountId])\n @@index([folderId])\n @@index([providerFileId])\n @@map(\"files\")\n}\n\nmodel FileShare {\n id String @id @default(uuid())\n fileId String @map(\"file_id\")\n userId String @map(\"user_id\")\n token String? @unique\n tokenHash String @unique @map(\"token_hash\")\n enabled Boolean @default(true)\n expiresAt DateTime? @map(\"expires_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n file File @relation(fields: [fileId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([fileId])\n @@index([userId])\n @@index([userId, enabled, createdAt])\n @@index([fileId, userId, enabled, createdAt])\n @@map(\"file_shares\")\n}\n\nmodel FilePreviewToken {\n id String @id @default(uuid())\n fileId String @map(\"file_id\")\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n file File @relation(fields: [fileId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([fileId])\n @@index([userId])\n @@map(\"file_preview_tokens\")\n}\n\nmodel Folder {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n parentId String? @map(\"parent_id\")\n connectedAccountId String? @map(\"connected_account_id\")\n provider String @default(\"google_drive\")\n providerFolderId String? @map(\"provider_folder_id\")\n name String\n color String @default(\"text-blue-500\")\n iconUrl String? @map(\"icon_url\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n deletedAt DateTime? @map(\"deleted_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n parent Folder? @relation(\"FolderChildren\", fields: [parentId], references: [id], onDelete: SetNull)\n children Folder[] @relation(\"FolderChildren\")\n connectedAccount ConnectedAccount? @relation(fields: [connectedAccountId], references: [id], onDelete: SetNull)\n files File[]\n uploadSessions UploadSession[] @relation(\"UploadSessionFolder\")\n\n @@index([userId])\n @@index([userId, deletedAt, updatedAt])\n @@index([userId, deletedAt, parentId, updatedAt])\n @@index([parentId])\n @@index([connectedAccountId])\n @@map(\"folders\")\n}\n\nmodel UploadSession {\n id String @id @default(uuid())\n userId String @map(\"user_id\")\n targetConnectedAccountId String? @map(\"target_connected_account_id\")\n folderId String? @map(\"folder_id\")\n fileName String @map(\"file_name\")\n mimeType String @map(\"mime_type\")\n sizeBytes BigInt @map(\"size_bytes\")\n status String\n googleSessionUri String? @map(\"google_session_uri\")\n errorMessage String? @map(\"error_message\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n completedAt DateTime? @map(\"completed_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n targetConnectedAccount ConnectedAccount? @relation(fields: [targetConnectedAccountId], references: [id], onDelete: SetNull)\n folder Folder? @relation(\"UploadSessionFolder\", fields: [folderId], references: [id], onDelete: SetNull)\n\n @@index([userId])\n @@index([folderId])\n @@map(\"upload_sessions\")\n}\n\nmodel AuditLog {\n id String @id @default(uuid())\n userId String? @map(\"user_id\")\n action String\n entityType String @map(\"entity_type\")\n entityId String? @map(\"entity_id\")\n metadata Json?\n createdAt DateTime @default(now()) @map(\"created_at\")\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([userId])\n @@map(\"audit_logs\")\n}\n\nmodel WorkspaceInvite {\n id String @id @default(uuid())\n inviterId String @map(\"inviter_id\")\n inviteeEmail String @map(\"invitee_email\")\n targetType String @default(\"file\") @map(\"target_type\")\n targetId String @default(\"\") @map(\"target_id\")\n role String @default(\"viewer\")\n status String @default(\"pending\")\n revokedAt DateTime? @map(\"revoked_at\")\n acceptedAt DateTime? @map(\"accepted_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n inviter User @relation(\"WorkspaceInvitesSent\", fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@unique([inviterId, inviteeEmail, targetType, targetId], map: \"workspace_invites_target_unique\")\n @@index([inviteeEmail])\n @@index([targetType, targetId])\n @@map(\"workspace_invites\")\n}\n",
413
+ "inlineSchemaHash": "225273d3edae505cc610a12910a7fcff3e2b87359bd335545bf0c6b5b9f1f867",
414
+ "copyEngine": true
415
+ }
416
+ config.dirname = '/'
417
+
418
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"UserSession\",\"relationName\":\"UserToUserSession\"},{\"name\":\"authHandoffs\",\"kind\":\"object\",\"type\":\"AuthHandoff\",\"relationName\":\"AuthHandoffToUser\"},{\"name\":\"providerConfigs\",\"kind\":\"object\",\"type\":\"ProviderConfig\",\"relationName\":\"ProviderConfigToUser\"},{\"name\":\"oauthStates\",\"kind\":\"object\",\"type\":\"OauthState\",\"relationName\":\"OauthStateToUser\"},{\"name\":\"connectedAccounts\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToUser\"},{\"name\":\"s3StorageConfigs\",\"kind\":\"object\",\"type\":\"S3StorageConfig\",\"relationName\":\"S3StorageConfigToUser\"},{\"name\":\"files\",\"kind\":\"object\",\"type\":\"File\",\"relationName\":\"FileToUser\"},{\"name\":\"fileShares\",\"kind\":\"object\",\"type\":\"FileShare\",\"relationName\":\"FileShareToUser\"},{\"name\":\"filePreviewTokens\",\"kind\":\"object\",\"type\":\"FilePreviewToken\",\"relationName\":\"FilePreviewTokenToUser\"},{\"name\":\"folders\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"FolderToUser\"},{\"name\":\"uploadSessions\",\"kind\":\"object\",\"type\":\"UploadSession\",\"relationName\":\"UploadSessionToUser\"},{\"name\":\"auditLogs\",\"kind\":\"object\",\"type\":\"AuditLog\",\"relationName\":\"AuditLogToUser\"},{\"name\":\"workspaceInvitesSent\",\"kind\":\"object\",\"type\":\"WorkspaceInvite\",\"relationName\":\"WorkspaceInvitesSent\"},{\"name\":\"uploadRoutingPolicy\",\"kind\":\"object\",\"type\":\"UploadRoutingPolicy\",\"relationName\":\"UploadRoutingPolicyToUser\"},{\"name\":\"apiKeys\",\"kind\":\"object\",\"type\":\"ApiKey\",\"relationName\":\"ApiKeyToUser\"}],\"dbName\":\"users\"},\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyPrefix\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"key_prefix\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"key_hash\"},{\"name\":\"scopes\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastUsedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_used_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ApiKeyToUser\"}],\"dbName\":\"api_keys\"},\"UploadRoutingPolicy\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priorityAccountIds\",\"kind\":\"scalar\",\"type\":\"Json\",\"dbName\":\"priority_account_ids\"},{\"name\":\"roundRobinCursor\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"round_robin_cursor\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UploadRoutingPolicyToUser\"}],\"dbName\":\"upload_routing_policies\"},\"UserSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"refreshTokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"refresh_token_hash\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSession\"}],\"dbName\":\"user_sessions\"},\"AuthHandoff\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AuthHandoffToUser\"}],\"dbName\":\"auth_handoffs\"},\"ProviderConfig\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"clientIdEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"client_id_encrypted\"},{\"name\":\"clientSecretEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"client_secret_encrypted\"},{\"name\":\"redirectUri\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"redirect_uri\"},{\"name\":\"scopes\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ProviderConfigToUser\"},{\"name\":\"oauthStates\",\"kind\":\"object\",\"type\":\"OauthState\",\"relationName\":\"OauthStateToProviderConfig\"},{\"name\":\"connectedAccounts\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToProviderConfig\"}],\"dbName\":\"provider_configs\"},\"OauthState\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"providerConfigId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_config_id\"},{\"name\":\"flow\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stateHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OauthStateToUser\"},{\"name\":\"providerConfig\",\"kind\":\"object\",\"type\":\"ProviderConfig\",\"relationName\":\"OauthStateToProviderConfig\"}],\"dbName\":\"oauth_states\"},\"ConnectedAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"providerConfigId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_config_id\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_account_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"display_name\"},{\"name\":\"avatarUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"avatar_url\"},{\"name\":\"accessTokenEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"access_token_encrypted\"},{\"name\":\"refreshTokenEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"refresh_token_encrypted\"},{\"name\":\"tokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"token_expires_at\"},{\"name\":\"scopes\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastError\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"last_error\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ConnectedAccountToUser\"},{\"name\":\"providerConfig\",\"kind\":\"object\",\"type\":\"ProviderConfig\",\"relationName\":\"ConnectedAccountToProviderConfig\"},{\"name\":\"storageAccount\",\"kind\":\"object\",\"type\":\"StorageAccount\",\"relationName\":\"ConnectedAccountToStorageAccount\"},{\"name\":\"files\",\"kind\":\"object\",\"type\":\"File\",\"relationName\":\"ConnectedAccountToFile\"},{\"name\":\"folders\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"ConnectedAccountToFolder\"},{\"name\":\"uploadSessions\",\"kind\":\"object\",\"type\":\"UploadSession\",\"relationName\":\"ConnectedAccountToUploadSession\"},{\"name\":\"s3StorageConfig\",\"kind\":\"object\",\"type\":\"S3StorageConfig\",\"relationName\":\"ConnectedAccountToS3StorageConfig\"}],\"dbName\":\"connected_accounts\"},\"S3StorageConfig\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"connectedAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_account_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bucket\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"region\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"endpoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessKeyIdEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"access_key_id_encrypted\"},{\"name\":\"secretAccessKeyEncrypted\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"secret_access_key_encrypted\"},{\"name\":\"forcePathStyle\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"force_path_style\"},{\"name\":\"prefix\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quotaBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"quota_bytes\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"S3StorageConfigToUser\"},{\"name\":\"connectedAccount\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToS3StorageConfig\"}],\"dbName\":\"s3_storage_configs\"},\"StorageAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"connectedAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_account_id\"},{\"name\":\"totalBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"total_bytes\"},{\"name\":\"usedBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"used_bytes\"},{\"name\":\"availableBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"available_bytes\"},{\"name\":\"trashBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"trash_bytes\"},{\"name\":\"lastSyncedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_synced_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"connectedAccount\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToStorageAccount\"}],\"dbName\":\"storage_accounts\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"connectedAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_account_id\"},{\"name\":\"folderId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"folder_id\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerFileId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_file_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mime_type\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"size_bytes\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"FileToUser\"},{\"name\":\"connectedAccount\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToFile\"},{\"name\":\"folder\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"FileToFolder\"},{\"name\":\"shares\",\"kind\":\"object\",\"type\":\"FileShare\",\"relationName\":\"FileToFileShare\"},{\"name\":\"previewTokens\",\"kind\":\"object\",\"type\":\"FilePreviewToken\",\"relationName\":\"FileToFilePreviewToken\"}],\"dbName\":\"files\"},\"FileShare\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"file_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"file\",\"kind\":\"object\",\"type\":\"File\",\"relationName\":\"FileToFileShare\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"FileShareToUser\"}],\"dbName\":\"file_shares\"},\"FilePreviewToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"file_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"file\",\"kind\":\"object\",\"type\":\"File\",\"relationName\":\"FileToFilePreviewToken\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"FilePreviewTokenToUser\"}],\"dbName\":\"file_preview_tokens\"},\"Folder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_id\"},{\"name\":\"connectedAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_account_id\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerFolderId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_folder_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"icon_url\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"FolderToUser\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"FolderChildren\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"FolderChildren\"},{\"name\":\"connectedAccount\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToFolder\"},{\"name\":\"files\",\"kind\":\"object\",\"type\":\"File\",\"relationName\":\"FileToFolder\"},{\"name\":\"uploadSessions\",\"kind\":\"object\",\"type\":\"UploadSession\",\"relationName\":\"UploadSessionFolder\"}],\"dbName\":\"folders\"},\"UploadSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"targetConnectedAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_connected_account_id\"},{\"name\":\"folderId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"folder_id\"},{\"name\":\"fileName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"file_name\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mime_type\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"BigInt\",\"dbName\":\"size_bytes\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googleSessionUri\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"google_session_uri\"},{\"name\":\"errorMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_message\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UploadSessionToUser\"},{\"name\":\"targetConnectedAccount\",\"kind\":\"object\",\"type\":\"ConnectedAccount\",\"relationName\":\"ConnectedAccountToUploadSession\"},{\"name\":\"folder\",\"kind\":\"object\",\"type\":\"Folder\",\"relationName\":\"UploadSessionFolder\"}],\"dbName\":\"upload_sessions\"},\"AuditLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"entity_type\"},{\"name\":\"entityId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"entity_id\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AuditLogToUser\"}],\"dbName\":\"audit_logs\"},\"WorkspaceInvite\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inviterId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"inviter_id\"},{\"name\":\"inviteeEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"invitee_email\"},{\"name\":\"targetType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_type\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_id\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"accepted_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"inviter\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"WorkspaceInvitesSent\"}],\"dbName\":\"workspace_invites\"}},\"enums\":{},\"types\":{}}")
419
+ defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
420
+ config.engineWasm = {
421
+ getRuntime: async () => require('./query_engine_bg.js'),
422
+ getQueryEngineWasmModule: async () => {
423
+ const loader = (await import('#wasm-engine-loader')).default
424
+ const engine = (await loader).default
425
+ return engine
426
+ }
427
+ }
428
+ config.compilerWasm = undefined
429
+
430
+ config.injectableEdgeEnv = () => ({
431
+ parsed: {
432
+ DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined
433
+ }
434
+ })
435
+
436
+ if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) {
437
+ Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined)
438
+ }
439
+
440
+ const PrismaClient = getPrismaClient(config)
441
+ exports.PrismaClient = PrismaClient
442
+ Object.assign(exports, Prisma)
443
+