omegga 1.6.0 → 1.7.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 (105) hide show
  1. package/.claude/settings.local.json +9 -2
  2. package/CHANGELOG.md +22 -1
  3. package/dist/cli/terminal.js +5 -1
  4. package/dist/cli/terminal.js.map +1 -1
  5. package/dist/db/connection.js +31 -0
  6. package/dist/db/connection.js.map +1 -0
  7. package/dist/db/migrate.js +20 -0
  8. package/dist/db/migrate.js.map +1 -0
  9. package/dist/db/migrations/0000_long_killer_shrike.sql +111 -0
  10. package/dist/db/migrations/meta/0000_snapshot.json +737 -0
  11. package/dist/db/migrations/meta/_journal.json +13 -0
  12. package/dist/db/nedbImport.js +344 -0
  13. package/dist/db/nedbImport.js.map +1 -0
  14. package/dist/db/plugin-migrations/0000_faulty_tyger_tiger.sql +11 -0
  15. package/dist/db/plugin-migrations/meta/0000_snapshot.json +81 -0
  16. package/dist/db/plugin-migrations/meta/_journal.json +13 -0
  17. package/dist/db/pluginSchema.js +19 -0
  18. package/dist/db/pluginSchema.js.map +1 -0
  19. package/dist/db/schema.js +174 -0
  20. package/dist/db/schema.js.map +1 -0
  21. package/dist/omegga/matchers/version.js +30 -13
  22. package/dist/omegga/matchers/version.js.map +1 -1
  23. package/dist/omegga/plugin.js +47 -49
  24. package/dist/omegga/plugin.js.map +1 -1
  25. package/dist/omegga/server.js.map +1 -1
  26. package/dist/softconfig.js +9 -21
  27. package/dist/softconfig.js.map +1 -1
  28. package/dist/updater/steam.js +1 -1
  29. package/dist/updater/steam.js.map +1 -1
  30. package/dist/util/brdb.js +84 -2
  31. package/dist/util/brdb.js.map +1 -1
  32. package/dist/webserver/backend/database.js +533 -533
  33. package/dist/webserver/backend/database.js.map +1 -1
  34. package/dist/webserver/backend/index.js +19 -8
  35. package/dist/webserver/backend/index.js.map +1 -1
  36. package/dist/webserver/backend/metrics.js +7 -5
  37. package/dist/webserver/backend/metrics.js.map +1 -1
  38. package/dist/webserver/backend/permissions.js +69 -20
  39. package/dist/webserver/backend/permissions.js.map +1 -1
  40. package/dist/webserver/backend/roleHierarchy.js +106 -0
  41. package/dist/webserver/backend/roleHierarchy.js.map +1 -0
  42. package/dist/webserver/backend/router/player.js +13 -16
  43. package/dist/webserver/backend/router/player.js.map +1 -1
  44. package/dist/webserver/backend/router/role.js +195 -7
  45. package/dist/webserver/backend/router/role.js.map +1 -1
  46. package/dist/webserver/backend/router/server.js +32 -2
  47. package/dist/webserver/backend/router/server.js.map +1 -1
  48. package/dist/webserver/backend/router/session.js +3 -5
  49. package/dist/webserver/backend/router/session.js.map +1 -1
  50. package/dist/webserver/backend/router/user.js +89 -42
  51. package/dist/webserver/backend/router/user.js.map +1 -1
  52. package/dist/webserver/backend/scopes.js +73 -44
  53. package/dist/webserver/backend/scopes.js.map +1 -1
  54. package/dist/webserver/backend/trpc.js +3 -6
  55. package/dist/webserver/backend/trpc.js.map +1 -1
  56. package/doc/permissions.md +83 -12
  57. package/drizzle.config.ts +7 -0
  58. package/drizzle.plugin.config.ts +7 -0
  59. package/package.json +7 -2
  60. package/public/app.html +415 -32
  61. package/public/assets/IconWorld-CmdphDgp.js +2 -0
  62. package/public/assets/IconWorld-CmdphDgp.js.map +1 -0
  63. package/public/assets/IconWorldPlus-DKSZjbqh.js +2 -0
  64. package/public/assets/IconWorldPlus-DKSZjbqh.js.map +1 -0
  65. package/public/assets/app-BiBsxujC.js +7 -0
  66. package/public/assets/app-BiBsxujC.js.map +1 -0
  67. package/public/assets/{auth-CEYiizOt.js → auth-nn5rDnJ9.js} +2 -2
  68. package/public/assets/{auth-CEYiizOt.js.map → auth-nn5rDnJ9.js.map} +1 -1
  69. package/public/assets/favicon-DYc6c67x.ico +0 -0
  70. package/public/assets/{index-DEL-PD_8.js → index-2cgXLhrt.js} +2 -2
  71. package/public/assets/{index-DEL-PD_8.js.map → index-2cgXLhrt.js.map} +1 -1
  72. package/public/assets/index-5EkjXNMi.js +12 -0
  73. package/public/assets/index-5EkjXNMi.js.map +1 -0
  74. package/public/assets/index-B2DCW1zi.js +2 -0
  75. package/public/assets/index-B2DCW1zi.js.map +1 -0
  76. package/public/assets/logo-Dl-LlTow.webp +0 -0
  77. package/public/assets/shared/@components-VkA0DIz6.js +2 -0
  78. package/public/assets/shared/@components-VkA0DIz6.js.map +1 -0
  79. package/public/assets/shared/@hooks-CiJaUL6_.js +2 -0
  80. package/public/assets/shared/@hooks-CiJaUL6_.js.map +1 -0
  81. package/public/assets/shared/@tabler_icons-react-B4130bhe.js +3 -0
  82. package/public/assets/shared/{@tabler_icons-react-DrVFX3uL.js.map → @tabler_icons-react-B4130bhe.js.map} +1 -1
  83. package/public/assets/shared/{wouter-CNISJ5i6.js → wouter-CUC1caxu.js} +2 -2
  84. package/public/assets/shared/wouter-CUC1caxu.js.map +1 -0
  85. package/public/assets/user-XF1UyJMA.js +2 -0
  86. package/public/assets/user-XF1UyJMA.js.map +1 -0
  87. package/public/auth.html +163 -16
  88. package/public/assets/IconWorld-XmQNg6JI.js +0 -2
  89. package/public/assets/IconWorld-XmQNg6JI.js.map +0 -1
  90. package/public/assets/IconWorldPlus-CxGGv2eD.js +0 -2
  91. package/public/assets/IconWorldPlus-CxGGv2eD.js.map +0 -1
  92. package/public/assets/app-DMr_-wik.js +0 -7
  93. package/public/assets/app-DMr_-wik.js.map +0 -1
  94. package/public/assets/index-D_STNela.js +0 -2
  95. package/public/assets/index-D_STNela.js.map +0 -1
  96. package/public/assets/index-Dkh3HiBz.js +0 -4
  97. package/public/assets/index-Dkh3HiBz.js.map +0 -1
  98. package/public/assets/shared/@components-CgsSYMe6.js +0 -2
  99. package/public/assets/shared/@components-CgsSYMe6.js.map +0 -1
  100. package/public/assets/shared/@hooks-DT93N7wd.js +0 -2
  101. package/public/assets/shared/@hooks-DT93N7wd.js.map +0 -1
  102. package/public/assets/shared/@tabler_icons-react-DrVFX3uL.js +0 -3
  103. package/public/assets/shared/wouter-CNISJ5i6.js.map +0 -1
  104. package/public/assets/useHasScope-BOdFktko.js +0 -2
  105. package/public/assets/useHasScope-BOdFktko.js.map +0 -1
@@ -0,0 +1,737 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "82d7da1c-7808-41f9-ab92-98c36664d8e0",
5
+ "prevId": "00000000-0000-0000-0000-000000000000",
6
+ "tables": {
7
+ "ban_history": {
8
+ "name": "ban_history",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "integer",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": true
16
+ },
17
+ "banned": {
18
+ "name": "banned",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true,
22
+ "autoincrement": false
23
+ },
24
+ "banner_id": {
25
+ "name": "banner_id",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": true,
29
+ "autoincrement": false,
30
+ "default": "''"
31
+ },
32
+ "created": {
33
+ "name": "created",
34
+ "type": "integer",
35
+ "primaryKey": false,
36
+ "notNull": true,
37
+ "autoincrement": false,
38
+ "default": 0
39
+ },
40
+ "expires": {
41
+ "name": "expires",
42
+ "type": "integer",
43
+ "primaryKey": false,
44
+ "notNull": true,
45
+ "autoincrement": false,
46
+ "default": 0
47
+ },
48
+ "reason": {
49
+ "name": "reason",
50
+ "type": "text",
51
+ "primaryKey": false,
52
+ "notNull": true,
53
+ "autoincrement": false,
54
+ "default": "''"
55
+ }
56
+ },
57
+ "indexes": {
58
+ "ban_history_unique_idx": {
59
+ "name": "ban_history_unique_idx",
60
+ "columns": [
61
+ "banned",
62
+ "banner_id",
63
+ "created",
64
+ "expires",
65
+ "reason"
66
+ ],
67
+ "isUnique": true
68
+ },
69
+ "ban_history_banned_created_idx": {
70
+ "name": "ban_history_banned_created_idx",
71
+ "columns": [
72
+ "banned",
73
+ "created"
74
+ ],
75
+ "isUnique": false
76
+ }
77
+ },
78
+ "foreignKeys": {},
79
+ "compositePrimaryKeys": {},
80
+ "uniqueConstraints": {},
81
+ "checkConstraints": {}
82
+ },
83
+ "chat_logs": {
84
+ "name": "chat_logs",
85
+ "columns": {
86
+ "id": {
87
+ "name": "id",
88
+ "type": "integer",
89
+ "primaryKey": true,
90
+ "notNull": true,
91
+ "autoincrement": true
92
+ },
93
+ "created": {
94
+ "name": "created",
95
+ "type": "integer",
96
+ "primaryKey": false,
97
+ "notNull": true,
98
+ "autoincrement": false
99
+ },
100
+ "instance_id": {
101
+ "name": "instance_id",
102
+ "type": "text",
103
+ "primaryKey": false,
104
+ "notNull": true,
105
+ "autoincrement": false
106
+ },
107
+ "action": {
108
+ "name": "action",
109
+ "type": "text",
110
+ "primaryKey": false,
111
+ "notNull": true,
112
+ "autoincrement": false
113
+ },
114
+ "user": {
115
+ "name": "user",
116
+ "type": "text",
117
+ "primaryKey": false,
118
+ "notNull": true,
119
+ "autoincrement": false
120
+ },
121
+ "message": {
122
+ "name": "message",
123
+ "type": "text",
124
+ "primaryKey": false,
125
+ "notNull": false,
126
+ "autoincrement": false
127
+ }
128
+ },
129
+ "indexes": {
130
+ "chat_logs_created_idx": {
131
+ "name": "chat_logs_created_idx",
132
+ "columns": [
133
+ "created"
134
+ ],
135
+ "isUnique": false
136
+ },
137
+ "chat_logs_instance_created_idx": {
138
+ "name": "chat_logs_instance_created_idx",
139
+ "columns": [
140
+ "instance_id",
141
+ "created"
142
+ ],
143
+ "isUnique": false
144
+ }
145
+ },
146
+ "foreignKeys": {},
147
+ "compositePrimaryKeys": {},
148
+ "uniqueConstraints": {},
149
+ "checkConstraints": {}
150
+ },
151
+ "heartbeats": {
152
+ "name": "heartbeats",
153
+ "columns": {
154
+ "id": {
155
+ "name": "id",
156
+ "type": "integer",
157
+ "primaryKey": true,
158
+ "notNull": true,
159
+ "autoincrement": true
160
+ },
161
+ "created": {
162
+ "name": "created",
163
+ "type": "integer",
164
+ "primaryKey": false,
165
+ "notNull": true,
166
+ "autoincrement": false
167
+ },
168
+ "bricks": {
169
+ "name": "bricks",
170
+ "type": "integer",
171
+ "primaryKey": false,
172
+ "notNull": true,
173
+ "autoincrement": false
174
+ },
175
+ "players": {
176
+ "name": "players",
177
+ "type": "text",
178
+ "primaryKey": false,
179
+ "notNull": true,
180
+ "autoincrement": false,
181
+ "default": "'[]'"
182
+ }
183
+ },
184
+ "indexes": {
185
+ "heartbeats_created_idx": {
186
+ "name": "heartbeats_created_idx",
187
+ "columns": [
188
+ "created"
189
+ ],
190
+ "isUnique": false
191
+ }
192
+ },
193
+ "foreignKeys": {},
194
+ "compositePrimaryKeys": {},
195
+ "uniqueConstraints": {},
196
+ "checkConstraints": {}
197
+ },
198
+ "kick_history": {
199
+ "name": "kick_history",
200
+ "columns": {
201
+ "id": {
202
+ "name": "id",
203
+ "type": "integer",
204
+ "primaryKey": true,
205
+ "notNull": true,
206
+ "autoincrement": true
207
+ },
208
+ "kicked": {
209
+ "name": "kicked",
210
+ "type": "text",
211
+ "primaryKey": false,
212
+ "notNull": true,
213
+ "autoincrement": false
214
+ },
215
+ "kicker_id": {
216
+ "name": "kicker_id",
217
+ "type": "text",
218
+ "primaryKey": false,
219
+ "notNull": true,
220
+ "autoincrement": false,
221
+ "default": "''"
222
+ },
223
+ "created": {
224
+ "name": "created",
225
+ "type": "integer",
226
+ "primaryKey": false,
227
+ "notNull": true,
228
+ "autoincrement": false
229
+ },
230
+ "reason": {
231
+ "name": "reason",
232
+ "type": "text",
233
+ "primaryKey": false,
234
+ "notNull": true,
235
+ "autoincrement": false,
236
+ "default": "''"
237
+ }
238
+ },
239
+ "indexes": {
240
+ "kick_history_unique_idx": {
241
+ "name": "kick_history_unique_idx",
242
+ "columns": [
243
+ "kicked",
244
+ "kicker_id",
245
+ "created",
246
+ "reason"
247
+ ],
248
+ "isUnique": true
249
+ },
250
+ "kick_history_kicked_created_idx": {
251
+ "name": "kick_history_kicked_created_idx",
252
+ "columns": [
253
+ "kicked",
254
+ "created"
255
+ ],
256
+ "isUnique": false
257
+ }
258
+ },
259
+ "foreignKeys": {},
260
+ "compositePrimaryKeys": {},
261
+ "uniqueConstraints": {},
262
+ "checkConstraints": {}
263
+ },
264
+ "player_history": {
265
+ "name": "player_history",
266
+ "columns": {
267
+ "id": {
268
+ "name": "id",
269
+ "type": "text",
270
+ "primaryKey": true,
271
+ "notNull": true,
272
+ "autoincrement": false
273
+ },
274
+ "name": {
275
+ "name": "name",
276
+ "type": "text",
277
+ "primaryKey": false,
278
+ "notNull": true,
279
+ "autoincrement": false
280
+ },
281
+ "display_name": {
282
+ "name": "display_name",
283
+ "type": "text",
284
+ "primaryKey": false,
285
+ "notNull": true,
286
+ "autoincrement": false
287
+ },
288
+ "name_history": {
289
+ "name": "name_history",
290
+ "type": "text",
291
+ "primaryKey": false,
292
+ "notNull": true,
293
+ "autoincrement": false,
294
+ "default": "'[]'"
295
+ },
296
+ "ips": {
297
+ "name": "ips",
298
+ "type": "text",
299
+ "primaryKey": false,
300
+ "notNull": true,
301
+ "autoincrement": false,
302
+ "default": "'[]'"
303
+ },
304
+ "created": {
305
+ "name": "created",
306
+ "type": "integer",
307
+ "primaryKey": false,
308
+ "notNull": true,
309
+ "autoincrement": false
310
+ },
311
+ "last_seen": {
312
+ "name": "last_seen",
313
+ "type": "integer",
314
+ "primaryKey": false,
315
+ "notNull": true,
316
+ "autoincrement": false
317
+ },
318
+ "last_instance_id": {
319
+ "name": "last_instance_id",
320
+ "type": "text",
321
+ "primaryKey": false,
322
+ "notNull": true,
323
+ "autoincrement": false
324
+ },
325
+ "heartbeats": {
326
+ "name": "heartbeats",
327
+ "type": "integer",
328
+ "primaryKey": false,
329
+ "notNull": true,
330
+ "autoincrement": false,
331
+ "default": 0
332
+ },
333
+ "sessions": {
334
+ "name": "sessions",
335
+ "type": "integer",
336
+ "primaryKey": false,
337
+ "notNull": true,
338
+ "autoincrement": false,
339
+ "default": 0
340
+ },
341
+ "instances": {
342
+ "name": "instances",
343
+ "type": "integer",
344
+ "primaryKey": false,
345
+ "notNull": true,
346
+ "autoincrement": false,
347
+ "default": 0
348
+ }
349
+ },
350
+ "indexes": {
351
+ "player_history_name_idx": {
352
+ "name": "player_history_name_idx",
353
+ "columns": [
354
+ "\"name\" COLLATE NOCASE"
355
+ ],
356
+ "isUnique": false
357
+ },
358
+ "player_history_display_name_idx": {
359
+ "name": "player_history_display_name_idx",
360
+ "columns": [
361
+ "display_name"
362
+ ],
363
+ "isUnique": false
364
+ },
365
+ "player_history_last_seen_idx": {
366
+ "name": "player_history_last_seen_idx",
367
+ "columns": [
368
+ "last_seen"
369
+ ],
370
+ "isUnique": false
371
+ }
372
+ },
373
+ "foreignKeys": {},
374
+ "compositePrimaryKeys": {},
375
+ "uniqueConstraints": {},
376
+ "checkConstraints": {}
377
+ },
378
+ "player_notes": {
379
+ "name": "player_notes",
380
+ "columns": {
381
+ "id": {
382
+ "name": "id",
383
+ "type": "integer",
384
+ "primaryKey": true,
385
+ "notNull": true,
386
+ "autoincrement": true
387
+ },
388
+ "player_id": {
389
+ "name": "player_id",
390
+ "type": "text",
391
+ "primaryKey": false,
392
+ "notNull": true,
393
+ "autoincrement": false
394
+ },
395
+ "note": {
396
+ "name": "note",
397
+ "type": "text",
398
+ "primaryKey": false,
399
+ "notNull": true,
400
+ "autoincrement": false
401
+ }
402
+ },
403
+ "indexes": {
404
+ "player_notes_player_id_idx": {
405
+ "name": "player_notes_player_id_idx",
406
+ "columns": [
407
+ "player_id"
408
+ ],
409
+ "isUnique": false
410
+ }
411
+ },
412
+ "foreignKeys": {},
413
+ "compositePrimaryKeys": {},
414
+ "uniqueConstraints": {},
415
+ "checkConstraints": {}
416
+ },
417
+ "punchcards": {
418
+ "name": "punchcards",
419
+ "columns": {
420
+ "id": {
421
+ "name": "id",
422
+ "type": "integer",
423
+ "primaryKey": true,
424
+ "notNull": true,
425
+ "autoincrement": true
426
+ },
427
+ "kind": {
428
+ "name": "kind",
429
+ "type": "text",
430
+ "primaryKey": false,
431
+ "notNull": true,
432
+ "autoincrement": false
433
+ },
434
+ "created": {
435
+ "name": "created",
436
+ "type": "integer",
437
+ "primaryKey": false,
438
+ "notNull": true,
439
+ "autoincrement": false
440
+ },
441
+ "updated": {
442
+ "name": "updated",
443
+ "type": "integer",
444
+ "primaryKey": false,
445
+ "notNull": true,
446
+ "autoincrement": false
447
+ },
448
+ "month": {
449
+ "name": "month",
450
+ "type": "integer",
451
+ "primaryKey": false,
452
+ "notNull": true,
453
+ "autoincrement": false
454
+ },
455
+ "year": {
456
+ "name": "year",
457
+ "type": "integer",
458
+ "primaryKey": false,
459
+ "notNull": true,
460
+ "autoincrement": false
461
+ },
462
+ "punchcard": {
463
+ "name": "punchcard",
464
+ "type": "text",
465
+ "primaryKey": false,
466
+ "notNull": true,
467
+ "autoincrement": false
468
+ }
469
+ },
470
+ "indexes": {
471
+ "punchcards_kind_month_year_idx": {
472
+ "name": "punchcards_kind_month_year_idx",
473
+ "columns": [
474
+ "kind",
475
+ "month",
476
+ "year"
477
+ ],
478
+ "isUnique": true
479
+ }
480
+ },
481
+ "foreignKeys": {},
482
+ "compositePrimaryKeys": {},
483
+ "uniqueConstraints": {},
484
+ "checkConstraints": {}
485
+ },
486
+ "server_config": {
487
+ "name": "server_config",
488
+ "columns": {
489
+ "key": {
490
+ "name": "key",
491
+ "type": "text",
492
+ "primaryKey": true,
493
+ "notNull": true,
494
+ "autoincrement": false
495
+ },
496
+ "value": {
497
+ "name": "value",
498
+ "type": "text",
499
+ "primaryKey": false,
500
+ "notNull": true,
501
+ "autoincrement": false
502
+ }
503
+ },
504
+ "indexes": {},
505
+ "foreignKeys": {},
506
+ "compositePrimaryKeys": {},
507
+ "uniqueConstraints": {},
508
+ "checkConstraints": {}
509
+ },
510
+ "server_instances": {
511
+ "name": "server_instances",
512
+ "columns": {
513
+ "id": {
514
+ "name": "id",
515
+ "type": "text",
516
+ "primaryKey": true,
517
+ "notNull": true,
518
+ "autoincrement": false
519
+ },
520
+ "date": {
521
+ "name": "date",
522
+ "type": "integer",
523
+ "primaryKey": false,
524
+ "notNull": true,
525
+ "autoincrement": false
526
+ }
527
+ },
528
+ "indexes": {},
529
+ "foreignKeys": {},
530
+ "compositePrimaryKeys": {},
531
+ "uniqueConstraints": {},
532
+ "checkConstraints": {}
533
+ },
534
+ "users": {
535
+ "name": "users",
536
+ "columns": {
537
+ "id": {
538
+ "name": "id",
539
+ "type": "text",
540
+ "primaryKey": true,
541
+ "notNull": true,
542
+ "autoincrement": false
543
+ },
544
+ "created": {
545
+ "name": "created",
546
+ "type": "integer",
547
+ "primaryKey": false,
548
+ "notNull": true,
549
+ "autoincrement": false
550
+ },
551
+ "last_online": {
552
+ "name": "last_online",
553
+ "type": "integer",
554
+ "primaryKey": false,
555
+ "notNull": true,
556
+ "autoincrement": false,
557
+ "default": 0
558
+ },
559
+ "username": {
560
+ "name": "username",
561
+ "type": "text",
562
+ "primaryKey": false,
563
+ "notNull": true,
564
+ "autoincrement": false
565
+ },
566
+ "hash": {
567
+ "name": "hash",
568
+ "type": "text",
569
+ "primaryKey": false,
570
+ "notNull": true,
571
+ "autoincrement": false
572
+ },
573
+ "is_owner": {
574
+ "name": "is_owner",
575
+ "type": "integer",
576
+ "primaryKey": false,
577
+ "notNull": true,
578
+ "autoincrement": false,
579
+ "default": false
580
+ },
581
+ "roles": {
582
+ "name": "roles",
583
+ "type": "text",
584
+ "primaryKey": false,
585
+ "notNull": true,
586
+ "autoincrement": false,
587
+ "default": "'[]'"
588
+ },
589
+ "player_id": {
590
+ "name": "player_id",
591
+ "type": "text",
592
+ "primaryKey": false,
593
+ "notNull": true,
594
+ "autoincrement": false,
595
+ "default": "''"
596
+ },
597
+ "is_banned": {
598
+ "name": "is_banned",
599
+ "type": "integer",
600
+ "primaryKey": false,
601
+ "notNull": true,
602
+ "autoincrement": false,
603
+ "default": false
604
+ },
605
+ "permissions": {
606
+ "name": "permissions",
607
+ "type": "text",
608
+ "primaryKey": false,
609
+ "notNull": false,
610
+ "autoincrement": false
611
+ },
612
+ "totp_secret": {
613
+ "name": "totp_secret",
614
+ "type": "text",
615
+ "primaryKey": false,
616
+ "notNull": false,
617
+ "autoincrement": false
618
+ },
619
+ "totp_enabled": {
620
+ "name": "totp_enabled",
621
+ "type": "integer",
622
+ "primaryKey": false,
623
+ "notNull": true,
624
+ "autoincrement": false,
625
+ "default": false
626
+ },
627
+ "passkeys": {
628
+ "name": "passkeys",
629
+ "type": "text",
630
+ "primaryKey": false,
631
+ "notNull": true,
632
+ "autoincrement": false,
633
+ "default": "'[]'"
634
+ },
635
+ "recovery_codes": {
636
+ "name": "recovery_codes",
637
+ "type": "text",
638
+ "primaryKey": false,
639
+ "notNull": true,
640
+ "autoincrement": false,
641
+ "default": "'[]'"
642
+ }
643
+ },
644
+ "indexes": {
645
+ "users_username_unique": {
646
+ "name": "users_username_unique",
647
+ "columns": [
648
+ "username"
649
+ ],
650
+ "isUnique": true
651
+ },
652
+ "users_username_nocase_idx": {
653
+ "name": "users_username_nocase_idx",
654
+ "columns": [
655
+ "\"username\" COLLATE NOCASE"
656
+ ],
657
+ "isUnique": false
658
+ }
659
+ },
660
+ "foreignKeys": {},
661
+ "compositePrimaryKeys": {},
662
+ "uniqueConstraints": {},
663
+ "checkConstraints": {}
664
+ },
665
+ "web_roles": {
666
+ "name": "web_roles",
667
+ "columns": {
668
+ "id": {
669
+ "name": "id",
670
+ "type": "text",
671
+ "primaryKey": true,
672
+ "notNull": true,
673
+ "autoincrement": false
674
+ },
675
+ "name": {
676
+ "name": "name",
677
+ "type": "text",
678
+ "primaryKey": false,
679
+ "notNull": true,
680
+ "autoincrement": false
681
+ },
682
+ "description": {
683
+ "name": "description",
684
+ "type": "text",
685
+ "primaryKey": false,
686
+ "notNull": true,
687
+ "autoincrement": false,
688
+ "default": "''"
689
+ },
690
+ "order": {
691
+ "name": "order",
692
+ "type": "integer",
693
+ "primaryKey": false,
694
+ "notNull": true,
695
+ "autoincrement": false
696
+ },
697
+ "permissions": {
698
+ "name": "permissions",
699
+ "type": "text",
700
+ "primaryKey": false,
701
+ "notNull": true,
702
+ "autoincrement": false
703
+ }
704
+ },
705
+ "indexes": {},
706
+ "foreignKeys": {},
707
+ "compositePrimaryKeys": {},
708
+ "uniqueConstraints": {},
709
+ "checkConstraints": {}
710
+ }
711
+ },
712
+ "views": {},
713
+ "enums": {},
714
+ "_meta": {
715
+ "schemas": {},
716
+ "tables": {},
717
+ "columns": {}
718
+ },
719
+ "internal": {
720
+ "indexes": {
721
+ "player_history_name_idx": {
722
+ "columns": {
723
+ "\"name\" COLLATE NOCASE": {
724
+ "isExpression": true
725
+ }
726
+ }
727
+ },
728
+ "users_username_nocase_idx": {
729
+ "columns": {
730
+ "\"username\" COLLATE NOCASE": {
731
+ "isExpression": true
732
+ }
733
+ }
734
+ }
735
+ }
736
+ }
737
+ }