@voidbase-cloud/voidbase 0.1.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 (134) hide show
  1. package/.env.example +9 -0
  2. package/CHANGELOG.md +19 -0
  3. package/COMPAT.md +43 -0
  4. package/LICENSE +21 -0
  5. package/NOTICE +8 -0
  6. package/README.md +124 -0
  7. package/bin/voidbase.ts +158 -0
  8. package/crons/every-minute.ts +13 -0
  9. package/db/migrations/20260905175935_large_swarm.sql +87 -0
  10. package/db/migrations/20260905185720_wild_sunspot.sql +16 -0
  11. package/db/migrations/20260905190723_solid_toro.sql +1 -0
  12. package/db/migrations/20260905213340_remarkable_union_jack.sql +11 -0
  13. package/db/migrations/meta/20260905175935_snapshot.json +599 -0
  14. package/db/migrations/meta/20260905185720_snapshot.json +703 -0
  15. package/db/migrations/meta/20260905190723_snapshot.json +710 -0
  16. package/db/migrations/meta/20260905213340_snapshot.json +781 -0
  17. package/db/migrations/meta/_journal.json +34 -0
  18. package/db/schema.ts +130 -0
  19. package/docs/deploy.md +153 -0
  20. package/docs/differences.md +88 -0
  21. package/docs/hooks.md +84 -0
  22. package/docs/migrating.md +29 -0
  23. package/docs/perf.md +53 -0
  24. package/docs/platform.md +208 -0
  25. package/docs/releasing.md +38 -0
  26. package/env.ts +23 -0
  27. package/hooks-plugin.ts +237 -0
  28. package/package.json +134 -0
  29. package/queues/jobs.ts +13 -0
  30. package/routes/api/[...path].ts +19 -0
  31. package/scripts/bench-realtime.ts +46 -0
  32. package/scripts/bench.ts +39 -0
  33. package/scripts/ci-suites.sh +27 -0
  34. package/scripts/dev.sh +29 -0
  35. package/scripts/export.ts +70 -0
  36. package/scripts/seed-app-user.sh +14 -0
  37. package/scripts/seed-d1.ts +17 -0
  38. package/scripts/seed-reference.sh +29 -0
  39. package/scripts/starter.sh +22 -0
  40. package/scripts/sync-app.ts +22 -0
  41. package/scripts/sync-panel.ts +66 -0
  42. package/src/cloud/rest.ts +297 -0
  43. package/src/node/assets.ts +22 -0
  44. package/src/node/bundle.ts +88 -0
  45. package/src/node/cloud-init.ts +51 -0
  46. package/src/node/d1.ts +44 -0
  47. package/src/node/deploy-cf.ts +179 -0
  48. package/src/node/index.ts +5 -0
  49. package/src/node/panel.ts +21 -0
  50. package/src/node/serve.ts +125 -0
  51. package/src/node/storage.ts +51 -0
  52. package/src/platform/node/env.ts +4 -0
  53. package/src/platform/node/hooks.ts +19 -0
  54. package/src/platform/node/log.ts +7 -0
  55. package/src/platform/node/migrations.ts +5 -0
  56. package/src/platform/node/photon.ts +1 -0
  57. package/src/platform/node/sockets.ts +22 -0
  58. package/src/platform/node/sse.ts +23 -0
  59. package/src/platform/workers/env.ts +3 -0
  60. package/src/platform/workers/hooks.ts +2 -0
  61. package/src/platform/workers/log.ts +1 -0
  62. package/src/platform/workers/migrations.ts +1 -0
  63. package/src/platform/workers/photon.ts +1 -0
  64. package/src/platform/workers/sockets.ts +3 -0
  65. package/src/platform/workers/sse.ts +1 -0
  66. package/src/server/api.ts +27 -0
  67. package/src/server/app.ts +582 -0
  68. package/src/server/auth-extra.ts +113 -0
  69. package/src/server/auth-flows.ts +186 -0
  70. package/src/server/auth-response.ts +111 -0
  71. package/src/server/auth.ts +187 -0
  72. package/src/server/backups.ts +234 -0
  73. package/src/server/batch.ts +123 -0
  74. package/src/server/bootstrap.ts +71 -0
  75. package/src/server/collections/auth-option-shape.json +71 -0
  76. package/src/server/collections/ddl.ts +127 -0
  77. package/src/server/collections/fields.ts +120 -0
  78. package/src/server/collections/model.ts +185 -0
  79. package/src/server/collections/oauth2-providers.json +1 -0
  80. package/src/server/collections/scaffolds.json +210 -0
  81. package/src/server/collections/service.ts +392 -0
  82. package/src/server/collections/system.json +605 -0
  83. package/src/server/collections/system.ts +19 -0
  84. package/src/server/collections/validate.ts +239 -0
  85. package/src/server/crc32.ts +13 -0
  86. package/src/server/crons.ts +100 -0
  87. package/src/server/crypto.ts +26 -0
  88. package/src/server/db.ts +37 -0
  89. package/src/server/errors.ts +53 -0
  90. package/src/server/files-api.ts +52 -0
  91. package/src/server/filter/compile.ts +420 -0
  92. package/src/server/filter/lexer.ts +107 -0
  93. package/src/server/filter/parser.ts +49 -0
  94. package/src/server/hardening.ts +136 -0
  95. package/src/server/hooks/index.ts +147 -0
  96. package/src/server/hooks/migrations.ts +58 -0
  97. package/src/server/hooks/node-async-hooks.d.ts +7 -0
  98. package/src/server/hooks/record.ts +152 -0
  99. package/src/server/hooks/runtime.ts +344 -0
  100. package/src/server/hooks/virtual-migrations.d.ts +4 -0
  101. package/src/server/hooks/virtual.d.ts +7 -0
  102. package/src/server/hub.ts +91 -0
  103. package/src/server/ids.ts +22 -0
  104. package/src/server/jobs.ts +84 -0
  105. package/src/server/jwt.ts +61 -0
  106. package/src/server/logs.ts +144 -0
  107. package/src/server/mail/index.ts +99 -0
  108. package/src/server/mail/message.ts +43 -0
  109. package/src/server/mail/smtp.ts +82 -0
  110. package/src/server/mail/templates.ts +168 -0
  111. package/src/server/oauth2/index.ts +198 -0
  112. package/src/server/oauth2/providers.ts +153 -0
  113. package/src/server/password.ts +17 -0
  114. package/src/server/realtime/hub-client.ts +50 -0
  115. package/src/server/realtime/index.ts +239 -0
  116. package/src/server/records/expand.ts +129 -0
  117. package/src/server/records/files.ts +69 -0
  118. package/src/server/records/json.ts +23 -0
  119. package/src/server/records/picker.ts +80 -0
  120. package/src/server/records/service.ts +598 -0
  121. package/src/server/records/thumbs.ts +148 -0
  122. package/src/server/records/values.ts +295 -0
  123. package/src/server/settings-api.ts +104 -0
  124. package/src/server/settings.ts +215 -0
  125. package/src/server/sql.ts +61 -0
  126. package/src/server/static.ts +17 -0
  127. package/src/server/storage/s3.ts +118 -0
  128. package/src/server/types.ts +25 -0
  129. package/src/server/webauthn.ts +168 -0
  130. package/tsconfig.json +36 -0
  131. package/tsconfig.node.json +27 -0
  132. package/types/pb_data.d.ts +24438 -0
  133. package/vite.config.ts +10 -0
  134. package/void.json +12 -0
@@ -0,0 +1,703 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "821928c4-d9a0-4773-b655-b196b5625965",
5
+ "prevId": "f2f6245e-62b9-44fe-8be1-91168ad71a29",
6
+ "tables": {
7
+ "_authOrigins": {
8
+ "name": "_authOrigins",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false,
16
+ "default": "('r'||lower(hex(randomblob(7))))"
17
+ },
18
+ "collectionRef": {
19
+ "name": "collectionRef",
20
+ "type": "text",
21
+ "primaryKey": false,
22
+ "notNull": true,
23
+ "autoincrement": false,
24
+ "default": "''"
25
+ },
26
+ "recordRef": {
27
+ "name": "recordRef",
28
+ "type": "text",
29
+ "primaryKey": false,
30
+ "notNull": true,
31
+ "autoincrement": false,
32
+ "default": "''"
33
+ },
34
+ "created": {
35
+ "name": "created",
36
+ "type": "text",
37
+ "primaryKey": false,
38
+ "notNull": true,
39
+ "autoincrement": false,
40
+ "default": "''"
41
+ },
42
+ "updated": {
43
+ "name": "updated",
44
+ "type": "text",
45
+ "primaryKey": false,
46
+ "notNull": true,
47
+ "autoincrement": false,
48
+ "default": "''"
49
+ },
50
+ "fingerprint": {
51
+ "name": "fingerprint",
52
+ "type": "text",
53
+ "primaryKey": false,
54
+ "notNull": true,
55
+ "autoincrement": false,
56
+ "default": "''"
57
+ }
58
+ },
59
+ "indexes": {
60
+ "idx_authOrigins_unique_pairs": {
61
+ "name": "idx_authOrigins_unique_pairs",
62
+ "columns": [
63
+ "collectionRef",
64
+ "recordRef",
65
+ "fingerprint"
66
+ ],
67
+ "isUnique": true
68
+ }
69
+ },
70
+ "foreignKeys": {},
71
+ "compositePrimaryKeys": {},
72
+ "uniqueConstraints": {},
73
+ "checkConstraints": {}
74
+ },
75
+ "_changes": {
76
+ "name": "_changes",
77
+ "columns": {
78
+ "id": {
79
+ "name": "id",
80
+ "type": "integer",
81
+ "primaryKey": true,
82
+ "notNull": true,
83
+ "autoincrement": true
84
+ },
85
+ "collection": {
86
+ "name": "collection",
87
+ "type": "text",
88
+ "primaryKey": false,
89
+ "notNull": true,
90
+ "autoincrement": false
91
+ },
92
+ "recordId": {
93
+ "name": "recordId",
94
+ "type": "text",
95
+ "primaryKey": false,
96
+ "notNull": true,
97
+ "autoincrement": false
98
+ },
99
+ "action": {
100
+ "name": "action",
101
+ "type": "text",
102
+ "primaryKey": false,
103
+ "notNull": true,
104
+ "autoincrement": false
105
+ },
106
+ "created": {
107
+ "name": "created",
108
+ "type": "text",
109
+ "primaryKey": false,
110
+ "notNull": true,
111
+ "autoincrement": false,
112
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
113
+ }
114
+ },
115
+ "indexes": {
116
+ "idx__changes_collection": {
117
+ "name": "idx__changes_collection",
118
+ "columns": [
119
+ "collection",
120
+ "id"
121
+ ],
122
+ "isUnique": false
123
+ }
124
+ },
125
+ "foreignKeys": {},
126
+ "compositePrimaryKeys": {},
127
+ "uniqueConstraints": {},
128
+ "checkConstraints": {}
129
+ },
130
+ "_collections": {
131
+ "name": "_collections",
132
+ "columns": {
133
+ "id": {
134
+ "name": "id",
135
+ "type": "text",
136
+ "primaryKey": true,
137
+ "notNull": true,
138
+ "autoincrement": false,
139
+ "default": "('r'||lower(hex(randomblob(7))))"
140
+ },
141
+ "system": {
142
+ "name": "system",
143
+ "type": "integer",
144
+ "primaryKey": false,
145
+ "notNull": true,
146
+ "autoincrement": false,
147
+ "default": false
148
+ },
149
+ "type": {
150
+ "name": "type",
151
+ "type": "text",
152
+ "primaryKey": false,
153
+ "notNull": true,
154
+ "autoincrement": false,
155
+ "default": "'base'"
156
+ },
157
+ "name": {
158
+ "name": "name",
159
+ "type": "text",
160
+ "primaryKey": false,
161
+ "notNull": true,
162
+ "autoincrement": false
163
+ },
164
+ "fields": {
165
+ "name": "fields",
166
+ "type": "text",
167
+ "primaryKey": false,
168
+ "notNull": true,
169
+ "autoincrement": false,
170
+ "default": "'[]'"
171
+ },
172
+ "indexes": {
173
+ "name": "indexes",
174
+ "type": "text",
175
+ "primaryKey": false,
176
+ "notNull": true,
177
+ "autoincrement": false,
178
+ "default": "'[]'"
179
+ },
180
+ "listRule": {
181
+ "name": "listRule",
182
+ "type": "text",
183
+ "primaryKey": false,
184
+ "notNull": false,
185
+ "autoincrement": false
186
+ },
187
+ "viewRule": {
188
+ "name": "viewRule",
189
+ "type": "text",
190
+ "primaryKey": false,
191
+ "notNull": false,
192
+ "autoincrement": false
193
+ },
194
+ "createRule": {
195
+ "name": "createRule",
196
+ "type": "text",
197
+ "primaryKey": false,
198
+ "notNull": false,
199
+ "autoincrement": false
200
+ },
201
+ "updateRule": {
202
+ "name": "updateRule",
203
+ "type": "text",
204
+ "primaryKey": false,
205
+ "notNull": false,
206
+ "autoincrement": false
207
+ },
208
+ "deleteRule": {
209
+ "name": "deleteRule",
210
+ "type": "text",
211
+ "primaryKey": false,
212
+ "notNull": false,
213
+ "autoincrement": false
214
+ },
215
+ "options": {
216
+ "name": "options",
217
+ "type": "text",
218
+ "primaryKey": false,
219
+ "notNull": true,
220
+ "autoincrement": false,
221
+ "default": "'{}'"
222
+ },
223
+ "created": {
224
+ "name": "created",
225
+ "type": "text",
226
+ "primaryKey": false,
227
+ "notNull": true,
228
+ "autoincrement": false,
229
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
230
+ },
231
+ "updated": {
232
+ "name": "updated",
233
+ "type": "text",
234
+ "primaryKey": false,
235
+ "notNull": true,
236
+ "autoincrement": false,
237
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
238
+ }
239
+ },
240
+ "indexes": {
241
+ "_collections_name_unique": {
242
+ "name": "_collections_name_unique",
243
+ "columns": [
244
+ "name"
245
+ ],
246
+ "isUnique": true
247
+ },
248
+ "idx__collections_type": {
249
+ "name": "idx__collections_type",
250
+ "columns": [
251
+ "type"
252
+ ],
253
+ "isUnique": false
254
+ }
255
+ },
256
+ "foreignKeys": {},
257
+ "compositePrimaryKeys": {},
258
+ "uniqueConstraints": {},
259
+ "checkConstraints": {}
260
+ },
261
+ "_externalAuths": {
262
+ "name": "_externalAuths",
263
+ "columns": {
264
+ "id": {
265
+ "name": "id",
266
+ "type": "text",
267
+ "primaryKey": true,
268
+ "notNull": true,
269
+ "autoincrement": false,
270
+ "default": "('r'||lower(hex(randomblob(7))))"
271
+ },
272
+ "collectionRef": {
273
+ "name": "collectionRef",
274
+ "type": "text",
275
+ "primaryKey": false,
276
+ "notNull": true,
277
+ "autoincrement": false,
278
+ "default": "''"
279
+ },
280
+ "recordRef": {
281
+ "name": "recordRef",
282
+ "type": "text",
283
+ "primaryKey": false,
284
+ "notNull": true,
285
+ "autoincrement": false,
286
+ "default": "''"
287
+ },
288
+ "created": {
289
+ "name": "created",
290
+ "type": "text",
291
+ "primaryKey": false,
292
+ "notNull": true,
293
+ "autoincrement": false,
294
+ "default": "''"
295
+ },
296
+ "updated": {
297
+ "name": "updated",
298
+ "type": "text",
299
+ "primaryKey": false,
300
+ "notNull": true,
301
+ "autoincrement": false,
302
+ "default": "''"
303
+ },
304
+ "provider": {
305
+ "name": "provider",
306
+ "type": "text",
307
+ "primaryKey": false,
308
+ "notNull": true,
309
+ "autoincrement": false,
310
+ "default": "''"
311
+ },
312
+ "providerId": {
313
+ "name": "providerId",
314
+ "type": "text",
315
+ "primaryKey": false,
316
+ "notNull": true,
317
+ "autoincrement": false,
318
+ "default": "''"
319
+ }
320
+ },
321
+ "indexes": {
322
+ "idx_externalAuths_record_provider": {
323
+ "name": "idx_externalAuths_record_provider",
324
+ "columns": [
325
+ "collectionRef",
326
+ "recordRef",
327
+ "provider"
328
+ ],
329
+ "isUnique": true
330
+ },
331
+ "idx_externalAuths_collection_provider": {
332
+ "name": "idx_externalAuths_collection_provider",
333
+ "columns": [
334
+ "collectionRef",
335
+ "provider",
336
+ "providerId"
337
+ ],
338
+ "isUnique": true
339
+ }
340
+ },
341
+ "foreignKeys": {},
342
+ "compositePrimaryKeys": {},
343
+ "uniqueConstraints": {},
344
+ "checkConstraints": {}
345
+ },
346
+ "_mfas": {
347
+ "name": "_mfas",
348
+ "columns": {
349
+ "id": {
350
+ "name": "id",
351
+ "type": "text",
352
+ "primaryKey": true,
353
+ "notNull": true,
354
+ "autoincrement": false,
355
+ "default": "('r'||lower(hex(randomblob(7))))"
356
+ },
357
+ "collectionRef": {
358
+ "name": "collectionRef",
359
+ "type": "text",
360
+ "primaryKey": false,
361
+ "notNull": true,
362
+ "autoincrement": false,
363
+ "default": "''"
364
+ },
365
+ "recordRef": {
366
+ "name": "recordRef",
367
+ "type": "text",
368
+ "primaryKey": false,
369
+ "notNull": true,
370
+ "autoincrement": false,
371
+ "default": "''"
372
+ },
373
+ "created": {
374
+ "name": "created",
375
+ "type": "text",
376
+ "primaryKey": false,
377
+ "notNull": true,
378
+ "autoincrement": false,
379
+ "default": "''"
380
+ },
381
+ "updated": {
382
+ "name": "updated",
383
+ "type": "text",
384
+ "primaryKey": false,
385
+ "notNull": true,
386
+ "autoincrement": false,
387
+ "default": "''"
388
+ },
389
+ "method": {
390
+ "name": "method",
391
+ "type": "text",
392
+ "primaryKey": false,
393
+ "notNull": true,
394
+ "autoincrement": false,
395
+ "default": "''"
396
+ }
397
+ },
398
+ "indexes": {
399
+ "idx_mfas_collectionRef_recordRef": {
400
+ "name": "idx_mfas_collectionRef_recordRef",
401
+ "columns": [
402
+ "collectionRef",
403
+ "recordRef"
404
+ ],
405
+ "isUnique": false
406
+ }
407
+ },
408
+ "foreignKeys": {},
409
+ "compositePrimaryKeys": {},
410
+ "uniqueConstraints": {},
411
+ "checkConstraints": {}
412
+ },
413
+ "_pbMigrations": {
414
+ "name": "_pbMigrations",
415
+ "columns": {
416
+ "file": {
417
+ "name": "file",
418
+ "type": "text",
419
+ "primaryKey": true,
420
+ "notNull": true,
421
+ "autoincrement": false
422
+ },
423
+ "applied": {
424
+ "name": "applied",
425
+ "type": "integer",
426
+ "primaryKey": false,
427
+ "notNull": true,
428
+ "autoincrement": false
429
+ }
430
+ },
431
+ "indexes": {},
432
+ "foreignKeys": {},
433
+ "compositePrimaryKeys": {},
434
+ "uniqueConstraints": {},
435
+ "checkConstraints": {}
436
+ },
437
+ "_otps": {
438
+ "name": "_otps",
439
+ "columns": {
440
+ "id": {
441
+ "name": "id",
442
+ "type": "text",
443
+ "primaryKey": true,
444
+ "notNull": true,
445
+ "autoincrement": false,
446
+ "default": "('r'||lower(hex(randomblob(7))))"
447
+ },
448
+ "collectionRef": {
449
+ "name": "collectionRef",
450
+ "type": "text",
451
+ "primaryKey": false,
452
+ "notNull": true,
453
+ "autoincrement": false,
454
+ "default": "''"
455
+ },
456
+ "recordRef": {
457
+ "name": "recordRef",
458
+ "type": "text",
459
+ "primaryKey": false,
460
+ "notNull": true,
461
+ "autoincrement": false,
462
+ "default": "''"
463
+ },
464
+ "created": {
465
+ "name": "created",
466
+ "type": "text",
467
+ "primaryKey": false,
468
+ "notNull": true,
469
+ "autoincrement": false,
470
+ "default": "''"
471
+ },
472
+ "updated": {
473
+ "name": "updated",
474
+ "type": "text",
475
+ "primaryKey": false,
476
+ "notNull": true,
477
+ "autoincrement": false,
478
+ "default": "''"
479
+ },
480
+ "password": {
481
+ "name": "password",
482
+ "type": "text",
483
+ "primaryKey": false,
484
+ "notNull": true,
485
+ "autoincrement": false,
486
+ "default": "''"
487
+ },
488
+ "sentTo": {
489
+ "name": "sentTo",
490
+ "type": "text",
491
+ "primaryKey": false,
492
+ "notNull": true,
493
+ "autoincrement": false,
494
+ "default": "''"
495
+ }
496
+ },
497
+ "indexes": {
498
+ "idx_otps_collectionRef_recordRef": {
499
+ "name": "idx_otps_collectionRef_recordRef",
500
+ "columns": [
501
+ "collectionRef",
502
+ "recordRef"
503
+ ],
504
+ "isUnique": false
505
+ }
506
+ },
507
+ "foreignKeys": {},
508
+ "compositePrimaryKeys": {},
509
+ "uniqueConstraints": {},
510
+ "checkConstraints": {}
511
+ },
512
+ "_params": {
513
+ "name": "_params",
514
+ "columns": {
515
+ "id": {
516
+ "name": "id",
517
+ "type": "text",
518
+ "primaryKey": true,
519
+ "notNull": true,
520
+ "autoincrement": false,
521
+ "default": "('r'||lower(hex(randomblob(7))))"
522
+ },
523
+ "value": {
524
+ "name": "value",
525
+ "type": "text",
526
+ "primaryKey": false,
527
+ "notNull": false,
528
+ "autoincrement": false
529
+ },
530
+ "created": {
531
+ "name": "created",
532
+ "type": "text",
533
+ "primaryKey": false,
534
+ "notNull": true,
535
+ "autoincrement": false,
536
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
537
+ },
538
+ "updated": {
539
+ "name": "updated",
540
+ "type": "text",
541
+ "primaryKey": false,
542
+ "notNull": true,
543
+ "autoincrement": false,
544
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
545
+ }
546
+ },
547
+ "indexes": {},
548
+ "foreignKeys": {},
549
+ "compositePrimaryKeys": {},
550
+ "uniqueConstraints": {},
551
+ "checkConstraints": {}
552
+ },
553
+ "_realtime_clients": {
554
+ "name": "_realtime_clients",
555
+ "columns": {
556
+ "id": {
557
+ "name": "id",
558
+ "type": "text",
559
+ "primaryKey": true,
560
+ "notNull": true,
561
+ "autoincrement": false
562
+ },
563
+ "subscriptions": {
564
+ "name": "subscriptions",
565
+ "type": "text",
566
+ "primaryKey": false,
567
+ "notNull": true,
568
+ "autoincrement": false,
569
+ "default": "'[]'"
570
+ },
571
+ "token": {
572
+ "name": "token",
573
+ "type": "text",
574
+ "primaryKey": false,
575
+ "notNull": true,
576
+ "autoincrement": false,
577
+ "default": "''"
578
+ },
579
+ "created": {
580
+ "name": "created",
581
+ "type": "text",
582
+ "primaryKey": false,
583
+ "notNull": true,
584
+ "autoincrement": false,
585
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
586
+ },
587
+ "updated": {
588
+ "name": "updated",
589
+ "type": "text",
590
+ "primaryKey": false,
591
+ "notNull": true,
592
+ "autoincrement": false,
593
+ "default": "(strftime('%Y-%m-%d %H:%M:%fZ'))"
594
+ }
595
+ },
596
+ "indexes": {},
597
+ "foreignKeys": {},
598
+ "compositePrimaryKeys": {},
599
+ "uniqueConstraints": {},
600
+ "checkConstraints": {}
601
+ },
602
+ "_superusers": {
603
+ "name": "_superusers",
604
+ "columns": {
605
+ "id": {
606
+ "name": "id",
607
+ "type": "text",
608
+ "primaryKey": true,
609
+ "notNull": true,
610
+ "autoincrement": false,
611
+ "default": "('r'||lower(hex(randomblob(7))))"
612
+ },
613
+ "password": {
614
+ "name": "password",
615
+ "type": "text",
616
+ "primaryKey": false,
617
+ "notNull": true,
618
+ "autoincrement": false,
619
+ "default": "''"
620
+ },
621
+ "tokenKey": {
622
+ "name": "tokenKey",
623
+ "type": "text",
624
+ "primaryKey": false,
625
+ "notNull": true,
626
+ "autoincrement": false,
627
+ "default": "''"
628
+ },
629
+ "email": {
630
+ "name": "email",
631
+ "type": "text",
632
+ "primaryKey": false,
633
+ "notNull": true,
634
+ "autoincrement": false,
635
+ "default": "''"
636
+ },
637
+ "emailVisibility": {
638
+ "name": "emailVisibility",
639
+ "type": "integer",
640
+ "primaryKey": false,
641
+ "notNull": true,
642
+ "autoincrement": false,
643
+ "default": false
644
+ },
645
+ "verified": {
646
+ "name": "verified",
647
+ "type": "integer",
648
+ "primaryKey": false,
649
+ "notNull": true,
650
+ "autoincrement": false,
651
+ "default": false
652
+ },
653
+ "created": {
654
+ "name": "created",
655
+ "type": "text",
656
+ "primaryKey": false,
657
+ "notNull": true,
658
+ "autoincrement": false,
659
+ "default": "''"
660
+ },
661
+ "updated": {
662
+ "name": "updated",
663
+ "type": "text",
664
+ "primaryKey": false,
665
+ "notNull": true,
666
+ "autoincrement": false,
667
+ "default": "''"
668
+ }
669
+ },
670
+ "indexes": {
671
+ "idx_tokenKey_pbc_3142635823": {
672
+ "name": "idx_tokenKey_pbc_3142635823",
673
+ "columns": [
674
+ "tokenKey"
675
+ ],
676
+ "isUnique": true
677
+ },
678
+ "idx_email_pbc_3142635823": {
679
+ "name": "idx_email_pbc_3142635823",
680
+ "columns": [
681
+ "email"
682
+ ],
683
+ "isUnique": true,
684
+ "where": "\"_superusers\".\"email\" != ''"
685
+ }
686
+ },
687
+ "foreignKeys": {},
688
+ "compositePrimaryKeys": {},
689
+ "uniqueConstraints": {},
690
+ "checkConstraints": {}
691
+ }
692
+ },
693
+ "views": {},
694
+ "enums": {},
695
+ "_meta": {
696
+ "schemas": {},
697
+ "tables": {},
698
+ "columns": {}
699
+ },
700
+ "internal": {
701
+ "indexes": {}
702
+ }
703
+ }