@morlay/session-rdb 0.1.9 → 0.1.10-alpha.2

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 (143) hide show
  1. package/README.md +24 -3
  2. package/dist/artifact.d.mts +118 -3
  3. package/dist/artifact.mjs +5 -3
  4. package/dist/{log-C0q5svm7.d.mts → backend-BKtJ5sO5.d.mts} +189 -291
  5. package/dist/backend-rdb-BDCntVDy.mjs +1341 -0
  6. package/dist/branch-CG1PUlO6.mjs +833 -0
  7. package/dist/deletion-SSX7IqU8.mjs +35 -0
  8. package/dist/deletion.d.mts +1 -3
  9. package/dist/deletion.mjs +2 -2
  10. package/dist/export-CfJQjQfr.mjs +123 -0
  11. package/dist/export.d.mts +1 -3
  12. package/dist/export.mjs +32 -57
  13. package/dist/import.d.mts +1 -3
  14. package/dist/import.mjs +32 -78
  15. package/dist/index-CUD2ZpTA.d.mts +71 -0
  16. package/dist/index.d.mts +20 -2
  17. package/dist/index.mjs +1562 -5
  18. package/dist/open-YoyD_kah.mjs +561 -0
  19. package/dist/organize.d.mts +9 -0
  20. package/dist/organize.mjs +30 -0
  21. package/dist/route-DpfY0zq-.mjs +114 -0
  22. package/dist/storage.d.mts +41 -50
  23. package/dist/storage.mjs +3 -1
  24. package/dist/testing.d.mts +9 -5
  25. package/dist/testing.mjs +27 -8
  26. package/dist/usage-row-BQQM-_t6.mjs +36 -0
  27. package/dist/usage.d.mts +1 -1
  28. package/dist/usage.mjs +8 -42
  29. package/dist/write-guard-CYrY58GM.mjs +174 -0
  30. package/package.json +32 -36
  31. package/src/artifact.ts +4 -1
  32. package/src/backend-rdb.ts +331 -0
  33. package/src/backend.ts +32 -15
  34. package/src/{branch.ts → branch/index.ts} +125 -112
  35. package/src/branch/port.ts +62 -0
  36. package/src/branch/semantics.ts +69 -0
  37. package/src/db/open.ts +180 -0
  38. package/src/db/stats.ts +449 -0
  39. package/src/deletion-error.ts +17 -0
  40. package/src/deletion.ts +19 -72
  41. package/src/entities/index.ts +16 -1
  42. package/src/entities/v3/event-usage.ts +3 -3
  43. package/src/entities/v3/events.ts +3 -3
  44. package/src/entities/v3/index.ts +4 -16
  45. package/src/entities/v3/persistence-state.ts +3 -3
  46. package/src/entities/v3/schema-meta.ts +3 -3
  47. package/src/entities/v3/session-counts.ts +3 -3
  48. package/src/entities/v3/session-events.ts +3 -3
  49. package/src/entities/v3/session-projcache-rows.ts +3 -3
  50. package/src/entities/v3/session-usage.ts +3 -3
  51. package/src/entities/v3/sessions.ts +3 -3
  52. package/src/entities/v3/storage-records.ts +17 -0
  53. package/src/entities/v3/storage-units.ts +3 -3
  54. package/src/{schema.ts → event-shape.ts} +0 -46
  55. package/src/export.ts +32 -78
  56. package/src/handles.ts +349 -0
  57. package/src/http/route.ts +178 -0
  58. package/src/import-storages.ts +5 -2
  59. package/src/import.ts +63 -125
  60. package/src/index.ts +15 -1630
  61. package/src/legacy.ts +3 -1
  62. package/src/live-routing.ts +205 -0
  63. package/src/log/export.ts +84 -0
  64. package/src/{log.ts → log/repair.ts} +1 -272
  65. package/src/log/rows.ts +107 -0
  66. package/src/log/usage-row.ts +64 -0
  67. package/src/migrations.ts +196 -0
  68. package/src/organize.ts +38 -0
  69. package/src/read-path.ts +190 -0
  70. package/src/routes.ts +2 -1
  71. package/src/rows.ts +25 -77
  72. package/src/session-ops.ts +444 -0
  73. package/src/session-query.ts +17 -4
  74. package/src/session-store.ts +675 -0
  75. package/src/stats-fold.ts +44 -0
  76. package/src/storage-takeover/index.ts +2 -5
  77. package/src/storage-takeover/legacy-domain-migration.ts +118 -0
  78. package/src/storage-takeover/projection-cache.ts +139 -77
  79. package/src/storage-takeover/read-model.ts +189 -0
  80. package/src/storage-takeover/repository.ts +238 -425
  81. package/src/storage-takeover/storage-backend.ts +47 -149
  82. package/src/storage-takeover/types.ts +45 -14
  83. package/src/storage-takeover/workspace-documents.ts +65 -0
  84. package/src/storage.ts +4 -2
  85. package/src/testing.ts +21 -1
  86. package/src/usage.ts +11 -65
  87. package/src/version.ts +13 -0
  88. package/src/write-path.ts +286 -0
  89. package/dist/branch-DbFW3rJX.mjs +0 -391
  90. package/dist/deletion-ODZFcbZm.mjs +0 -2218
  91. package/dist/gc.d.mts +0 -6
  92. package/dist/gc.mjs +0 -49
  93. package/dist/log-DYxdjJ-l.mjs +0 -562
  94. package/dist/routes-DGBlBE_I.mjs +0 -10
  95. package/dist/sqlite-DjOnMRh2.mjs +0 -1777
  96. package/drizzle/postgres/20260908072805_v2_initial/migration.sql +0 -58
  97. package/drizzle/postgres/20260908072805_v2_initial/snapshot.json +0 -686
  98. package/drizzle/postgres/20260908072806_v3_drop_original_seq/migration.sql +0 -1
  99. package/drizzle/postgres/20260908072806_v3_drop_original_seq/snapshot.json +0 -673
  100. package/drizzle/postgres/20260910120001_v3_storage_tables/migration.sql +0 -65
  101. package/drizzle/postgres/20260910120001_v3_storage_tables/snapshot.json +0 -1183
  102. package/drizzle/postgres/20260910130001_v3_session_title_backfill/migration.sql +0 -10
  103. package/drizzle/postgres/20260910130001_v3_session_title_backfill/snapshot.json +0 -1183
  104. package/drizzle/postgres/20260918120000_v3_event_usage/migration.sql +0 -14
  105. package/drizzle/postgres/20260918120000_v3_event_usage/snapshot.json +0 -1309
  106. package/drizzle/postgres/20260921075900_v3_agent_preset/migration.sql +0 -1
  107. package/drizzle/postgres/20260922090001_v3_pinned_seq/migration.sql +0 -2
  108. package/drizzle/postgres/20260922093001_v3_last_event_at/migration.sql +0 -10
  109. package/drizzle/postgres/20260923120000_v3_usage_materialized/migration.sql +0 -48
  110. package/drizzle/postgres/20261008103001_v3_schedule_tasks/migration.sql +0 -11
  111. package/drizzle/sqlite/20260908072751_v2_initial/migration.sql +0 -53
  112. package/drizzle/sqlite/20260908072751_v2_initial/snapshot.json +0 -492
  113. package/drizzle/sqlite/20260908072752_v3_drop_original_seq/migration.sql +0 -6
  114. package/drizzle/sqlite/20260908072752_v3_drop_original_seq/snapshot.json +0 -513
  115. package/drizzle/sqlite/20260910120000_v3_storage_tables/migration.sql +0 -66
  116. package/drizzle/sqlite/20260910120000_v3_storage_tables/snapshot.json +0 -905
  117. package/drizzle/sqlite/20260910130000_v3_session_title_backfill/migration.sql +0 -13
  118. package/drizzle/sqlite/20260910130000_v3_session_title_backfill/snapshot.json +0 -905
  119. package/drizzle/sqlite/20260918120000_v3_event_usage/migration.sql +0 -14
  120. package/drizzle/sqlite/20260918120000_v3_event_usage/snapshot.json +0 -1031
  121. package/drizzle/sqlite/20260921075855_v3_agent_preset/migration.sql +0 -7
  122. package/drizzle/sqlite/20260921075855_v3_agent_preset/snapshot.json +0 -1041
  123. package/drizzle/sqlite/20260922090000_v3_pinned_seq/migration.sql +0 -4
  124. package/drizzle/sqlite/20260922093000_v3_last_event_at/migration.sql +0 -13
  125. package/drizzle/sqlite/20260923120000_v3_usage_materialized/migration.sql +0 -48
  126. package/drizzle/sqlite/20261008103000_v3_schedule_tasks/migration.sql +0 -14
  127. package/src/adapters/index.ts +0 -12
  128. package/src/adapters/to-postgres.ts +0 -93
  129. package/src/adapters/to-sqlite.ts +0 -83
  130. package/src/adapters/types.ts +0 -44
  131. package/src/drizzle/postgres-v2.ts +0 -10
  132. package/src/drizzle/postgres-v3.ts +0 -18
  133. package/src/drizzle/sqlite-v2.ts +0 -9
  134. package/src/drizzle/sqlite-v3.ts +0 -18
  135. package/src/entities/v2/index.ts +0 -20
  136. package/src/entities/v2/session-events.ts +0 -10
  137. package/src/entities/v3/schedule-tasks.ts +0 -16
  138. package/src/entities/v3/workspace-sessions.ts +0 -19
  139. package/src/entities/v3/workspace-state.ts +0 -12
  140. package/src/entities/v3/workspaces.ts +0 -14
  141. package/src/gc.ts +0 -77
  142. package/src/postgres.ts +0 -1015
  143. package/src/sqlite.ts +0 -1086
@@ -1,513 +0,0 @@
1
- {
2
- "version": "7",
3
- "dialect": "sqlite",
4
- "id": "73c73ac0-f96e-4579-8784-04343de1a0d7",
5
- "prevIds": ["fb2bcab4-68a8-41b5-8493-804915c1ab54"],
6
- "ddl": [
7
- {
8
- "name": "t_events",
9
- "entityType": "tables"
10
- },
11
- {
12
- "name": "t_persistence_state",
13
- "entityType": "tables"
14
- },
15
- {
16
- "name": "t_schema_meta",
17
- "entityType": "tables"
18
- },
19
- {
20
- "name": "t_session_events",
21
- "entityType": "tables"
22
- },
23
- {
24
- "name": "t_sessions",
25
- "entityType": "tables"
26
- },
27
- {
28
- "type": "integer",
29
- "notNull": false,
30
- "autoincrement": true,
31
- "default": null,
32
- "generated": null,
33
- "name": "f_id",
34
- "entityType": "columns",
35
- "table": "t_events"
36
- },
37
- {
38
- "type": "text",
39
- "notNull": true,
40
- "autoincrement": false,
41
- "default": null,
42
- "generated": null,
43
- "name": "f_event_id",
44
- "entityType": "columns",
45
- "table": "t_events"
46
- },
47
- {
48
- "type": "text",
49
- "notNull": true,
50
- "autoincrement": false,
51
- "default": "''",
52
- "generated": null,
53
- "name": "f_parent_id",
54
- "entityType": "columns",
55
- "table": "t_events"
56
- },
57
- {
58
- "type": "text",
59
- "notNull": true,
60
- "autoincrement": false,
61
- "default": "''",
62
- "generated": null,
63
- "name": "f_type",
64
- "entityType": "columns",
65
- "table": "t_events"
66
- },
67
- {
68
- "type": "text",
69
- "notNull": true,
70
- "autoincrement": false,
71
- "default": "''",
72
- "generated": null,
73
- "name": "f_kind",
74
- "entityType": "columns",
75
- "table": "t_events"
76
- },
77
- {
78
- "type": "text",
79
- "notNull": true,
80
- "autoincrement": false,
81
- "default": "''",
82
- "generated": null,
83
- "name": "f_role",
84
- "entityType": "columns",
85
- "table": "t_events"
86
- },
87
- {
88
- "type": "text",
89
- "notNull": true,
90
- "autoincrement": false,
91
- "default": "''",
92
- "generated": null,
93
- "name": "f_name",
94
- "entityType": "columns",
95
- "table": "t_events"
96
- },
97
- {
98
- "type": "text",
99
- "notNull": true,
100
- "autoincrement": false,
101
- "default": "''",
102
- "generated": null,
103
- "name": "f_action_id",
104
- "entityType": "columns",
105
- "table": "t_events"
106
- },
107
- {
108
- "type": "text",
109
- "notNull": true,
110
- "autoincrement": false,
111
- "default": "''",
112
- "generated": null,
113
- "name": "f_encoding",
114
- "entityType": "columns",
115
- "table": "t_events"
116
- },
117
- {
118
- "type": "text",
119
- "notNull": true,
120
- "autoincrement": false,
121
- "default": null,
122
- "generated": null,
123
- "name": "f_data",
124
- "entityType": "columns",
125
- "table": "t_events"
126
- },
127
- {
128
- "type": "integer",
129
- "notNull": true,
130
- "autoincrement": false,
131
- "default": "0",
132
- "generated": null,
133
- "name": "f_created_at",
134
- "entityType": "columns",
135
- "table": "t_events"
136
- },
137
- {
138
- "type": "integer",
139
- "notNull": false,
140
- "autoincrement": false,
141
- "default": null,
142
- "generated": null,
143
- "name": "f_singleton",
144
- "entityType": "columns",
145
- "table": "t_persistence_state"
146
- },
147
- {
148
- "type": "text",
149
- "notNull": true,
150
- "autoincrement": false,
151
- "default": null,
152
- "generated": null,
153
- "name": "f_store_id",
154
- "entityType": "columns",
155
- "table": "t_persistence_state"
156
- },
157
- {
158
- "type": "text",
159
- "notNull": false,
160
- "autoincrement": false,
161
- "default": null,
162
- "generated": null,
163
- "name": "f_key",
164
- "entityType": "columns",
165
- "table": "t_schema_meta"
166
- },
167
- {
168
- "type": "text",
169
- "notNull": true,
170
- "autoincrement": false,
171
- "default": null,
172
- "generated": null,
173
- "name": "f_value",
174
- "entityType": "columns",
175
- "table": "t_schema_meta"
176
- },
177
- {
178
- "type": "integer",
179
- "notNull": false,
180
- "autoincrement": true,
181
- "default": null,
182
- "generated": null,
183
- "name": "f_id",
184
- "entityType": "columns",
185
- "table": "t_session_events"
186
- },
187
- {
188
- "type": "text",
189
- "notNull": true,
190
- "autoincrement": false,
191
- "default": null,
192
- "generated": null,
193
- "name": "f_session_id",
194
- "entityType": "columns",
195
- "table": "t_session_events"
196
- },
197
- {
198
- "type": "text",
199
- "notNull": true,
200
- "autoincrement": false,
201
- "default": null,
202
- "generated": null,
203
- "name": "f_event_id",
204
- "entityType": "columns",
205
- "table": "t_session_events"
206
- },
207
- {
208
- "type": "integer",
209
- "notNull": true,
210
- "autoincrement": false,
211
- "default": null,
212
- "generated": null,
213
- "name": "f_sequence",
214
- "entityType": "columns",
215
- "table": "t_session_events"
216
- },
217
- {
218
- "type": "text",
219
- "notNull": false,
220
- "autoincrement": false,
221
- "default": null,
222
- "generated": null,
223
- "name": "f_surface_op",
224
- "entityType": "columns",
225
- "table": "t_session_events"
226
- },
227
- {
228
- "type": "integer",
229
- "notNull": false,
230
- "autoincrement": true,
231
- "default": null,
232
- "generated": null,
233
- "name": "f_id",
234
- "entityType": "columns",
235
- "table": "t_sessions"
236
- },
237
- {
238
- "type": "text",
239
- "notNull": true,
240
- "autoincrement": false,
241
- "default": null,
242
- "generated": null,
243
- "name": "f_session_id",
244
- "entityType": "columns",
245
- "table": "t_sessions"
246
- },
247
- {
248
- "type": "text",
249
- "notNull": true,
250
- "autoincrement": false,
251
- "default": "''",
252
- "generated": null,
253
- "name": "f_head_event_id",
254
- "entityType": "columns",
255
- "table": "t_sessions"
256
- },
257
- {
258
- "type": "integer",
259
- "notNull": true,
260
- "autoincrement": false,
261
- "default": "-1",
262
- "generated": null,
263
- "name": "f_head_sequence",
264
- "entityType": "columns",
265
- "table": "t_sessions"
266
- },
267
- {
268
- "type": "integer",
269
- "notNull": true,
270
- "autoincrement": false,
271
- "default": null,
272
- "generated": null,
273
- "name": "f_version",
274
- "entityType": "columns",
275
- "table": "t_sessions"
276
- },
277
- {
278
- "type": "integer",
279
- "notNull": true,
280
- "autoincrement": false,
281
- "default": null,
282
- "generated": null,
283
- "name": "f_created_at",
284
- "entityType": "columns",
285
- "table": "t_sessions"
286
- },
287
- {
288
- "type": "text",
289
- "notNull": false,
290
- "autoincrement": false,
291
- "default": null,
292
- "generated": null,
293
- "name": "f_cwd",
294
- "entityType": "columns",
295
- "table": "t_sessions"
296
- },
297
- {
298
- "type": "text",
299
- "notNull": false,
300
- "autoincrement": false,
301
- "default": null,
302
- "generated": null,
303
- "name": "f_parent_session",
304
- "entityType": "columns",
305
- "table": "t_sessions"
306
- },
307
- {
308
- "type": "integer",
309
- "notNull": false,
310
- "autoincrement": false,
311
- "default": null,
312
- "generated": null,
313
- "name": "f_seed_length",
314
- "entityType": "columns",
315
- "table": "t_sessions"
316
- },
317
- {
318
- "type": "text",
319
- "notNull": false,
320
- "autoincrement": false,
321
- "default": null,
322
- "generated": null,
323
- "name": "f_origin",
324
- "entityType": "columns",
325
- "table": "t_sessions"
326
- },
327
- {
328
- "type": "integer",
329
- "notNull": false,
330
- "autoincrement": false,
331
- "default": null,
332
- "generated": null,
333
- "name": "f_delegation_depth",
334
- "entityType": "columns",
335
- "table": "t_sessions"
336
- },
337
- {
338
- "type": "text",
339
- "notNull": true,
340
- "autoincrement": false,
341
- "default": null,
342
- "generated": null,
343
- "name": "f_incarnation",
344
- "entityType": "columns",
345
- "table": "t_sessions"
346
- },
347
- {
348
- "type": "integer",
349
- "notNull": true,
350
- "autoincrement": false,
351
- "default": null,
352
- "generated": null,
353
- "name": "f_revision",
354
- "entityType": "columns",
355
- "table": "t_sessions"
356
- },
357
- {
358
- "columns": ["f_session_id"],
359
- "tableTo": "t_sessions",
360
- "columnsTo": ["f_session_id"],
361
- "onUpdate": "NO ACTION",
362
- "onDelete": "CASCADE",
363
- "nameExplicit": false,
364
- "name": "fk_t_session_events_f_session_id_t_sessions_f_session_id_fk",
365
- "entityType": "fks",
366
- "table": "t_session_events"
367
- },
368
- {
369
- "columns": ["f_event_id"],
370
- "tableTo": "t_events",
371
- "columnsTo": ["f_event_id"],
372
- "onUpdate": "NO ACTION",
373
- "onDelete": "CASCADE",
374
- "nameExplicit": false,
375
- "name": "fk_t_session_events_f_event_id_t_events_f_event_id_fk",
376
- "entityType": "fks",
377
- "table": "t_session_events"
378
- },
379
- {
380
- "columns": ["f_id"],
381
- "nameExplicit": false,
382
- "name": "t_events_pk",
383
- "table": "t_events",
384
- "entityType": "pks"
385
- },
386
- {
387
- "columns": ["f_singleton"],
388
- "nameExplicit": false,
389
- "name": "t_persistence_state_pk",
390
- "table": "t_persistence_state",
391
- "entityType": "pks"
392
- },
393
- {
394
- "columns": ["f_key"],
395
- "nameExplicit": false,
396
- "name": "t_schema_meta_pk",
397
- "table": "t_schema_meta",
398
- "entityType": "pks"
399
- },
400
- {
401
- "columns": ["f_id"],
402
- "nameExplicit": false,
403
- "name": "t_session_events_pk",
404
- "table": "t_session_events",
405
- "entityType": "pks"
406
- },
407
- {
408
- "columns": ["f_id"],
409
- "nameExplicit": false,
410
- "name": "t_sessions_pk",
411
- "table": "t_sessions",
412
- "entityType": "pks"
413
- },
414
- {
415
- "columns": [
416
- {
417
- "value": "f_kind",
418
- "isExpression": false
419
- }
420
- ],
421
- "isUnique": false,
422
- "where": null,
423
- "origin": "manual",
424
- "name": "idx_events_kind",
425
- "entityType": "indexes",
426
- "table": "t_events"
427
- },
428
- {
429
- "columns": [
430
- {
431
- "value": "f_role",
432
- "isExpression": false
433
- }
434
- ],
435
- "isUnique": false,
436
- "where": null,
437
- "origin": "manual",
438
- "name": "idx_events_role",
439
- "entityType": "indexes",
440
- "table": "t_events"
441
- },
442
- {
443
- "columns": [
444
- {
445
- "value": "f_name",
446
- "isExpression": false
447
- }
448
- ],
449
- "isUnique": false,
450
- "where": null,
451
- "origin": "manual",
452
- "name": "idx_events_name",
453
- "entityType": "indexes",
454
- "table": "t_events"
455
- },
456
- {
457
- "columns": [
458
- {
459
- "value": "f_action_id",
460
- "isExpression": false
461
- }
462
- ],
463
- "isUnique": false,
464
- "where": null,
465
- "origin": "manual",
466
- "name": "idx_events_action_id",
467
- "entityType": "indexes",
468
- "table": "t_events"
469
- },
470
- {
471
- "columns": [
472
- {
473
- "value": "f_event_id",
474
- "isExpression": false
475
- }
476
- ],
477
- "isUnique": false,
478
- "where": null,
479
- "origin": "manual",
480
- "name": "idx_session_events_event_id",
481
- "entityType": "indexes",
482
- "table": "t_session_events"
483
- },
484
- {
485
- "columns": ["f_session_id", "f_sequence"],
486
- "nameExplicit": true,
487
- "name": "uq_session_events_session_sequence",
488
- "entityType": "uniques",
489
- "table": "t_session_events"
490
- },
491
- {
492
- "columns": ["f_event_id"],
493
- "nameExplicit": false,
494
- "name": "t_events_f_event_id_unique",
495
- "entityType": "uniques",
496
- "table": "t_events"
497
- },
498
- {
499
- "columns": ["f_session_id"],
500
- "nameExplicit": false,
501
- "name": "t_sessions_f_session_id_unique",
502
- "entityType": "uniques",
503
- "table": "t_sessions"
504
- },
505
- {
506
- "value": "f_singleton = 1",
507
- "name": "ck_persistence_state_singleton",
508
- "entityType": "checks",
509
- "table": "t_persistence_state"
510
- }
511
- ],
512
- "renames": []
513
- }
@@ -1,66 +0,0 @@
1
- ALTER TABLE `t_sessions` ADD COLUMN `f_archived_at` integer;
2
- --> statement-breakpoint
3
- ALTER TABLE `t_sessions` ADD COLUMN `f_title` text;
4
- --> statement-breakpoint
5
- ALTER TABLE `t_sessions` ADD COLUMN `f_title_seq` integer;
6
- --> statement-breakpoint
7
- UPDATE `t_sessions` SET
8
- `f_title` = (
9
- SELECT COALESCE(json_extract(e.`f_data`, '$.data.title'), json_extract(e.`f_data`, '$.title'))
10
- FROM `t_session_events` b JOIN `t_events` e ON e.`f_event_id` = b.`f_event_id`
11
- WHERE b.`f_session_id` = `t_sessions`.`f_session_id` AND e.`f_type` = 'session/title'
12
- ORDER BY b.`f_sequence` DESC LIMIT 1
13
- ),
14
- `f_title_seq` = (
15
- SELECT b.`f_sequence`
16
- FROM `t_session_events` b JOIN `t_events` e ON e.`f_event_id` = b.`f_event_id`
17
- WHERE b.`f_session_id` = `t_sessions`.`f_session_id` AND e.`f_type` = 'session/title'
18
- ORDER BY b.`f_sequence` DESC LIMIT 1
19
- );
20
- --> statement-breakpoint
21
- CREATE TABLE `t_session_projcache_row` (
22
- `f_id` integer PRIMARY KEY AUTOINCREMENT,
23
- `f_session_id` text NOT NULL,
24
- `f_key` text NOT NULL,
25
- `f_ver` integer NOT NULL,
26
- `f_seq` integer NOT NULL,
27
- `f_val` text NOT NULL,
28
- CONSTRAINT `uq_session_projcache_row_session_key` UNIQUE(`f_session_id`, `f_key`),
29
- CONSTRAINT `fk_t_session_projcache_row_f_session_id_t_sessions_f_session_id_fk` FOREIGN KEY (`f_session_id`) REFERENCES `t_sessions`(`f_session_id`) ON DELETE CASCADE
30
- );
31
- --> statement-breakpoint
32
- CREATE TABLE `t_storage_units` (
33
- `f_name` text PRIMARY KEY,
34
- `f_version` integer NOT NULL
35
- );
36
- --> statement-breakpoint
37
- CREATE TABLE `t_workspace_state` (
38
- `f_singleton` integer PRIMARY KEY,
39
- `f_initialized` integer NOT NULL,
40
- `f_pending_operation` text,
41
- `f_pending_workspace_id` text,
42
- CONSTRAINT `ck_workspace_state_singleton` CHECK(f_singleton = 1)
43
- );
44
- --> statement-breakpoint
45
- CREATE TABLE `t_workspaces` (
46
- `f_id` integer PRIMARY KEY AUTOINCREMENT,
47
- `f_workspace_id` text NOT NULL UNIQUE,
48
- `f_path` text NOT NULL,
49
- `f_title` text NOT NULL,
50
- `f_created_at` text NOT NULL,
51
- `f_updated_at` text NOT NULL,
52
- `f_position` integer DEFAULT -1 NOT NULL
53
- );
54
- --> statement-breakpoint
55
- CREATE TABLE `t_workspace_sessions` (
56
- `f_id` integer PRIMARY KEY AUTOINCREMENT,
57
- `f_workspace_id` text NOT NULL,
58
- `f_session_id` text NOT NULL,
59
- `f_position` integer NOT NULL,
60
- CONSTRAINT `uq_workspace_sessions_workspace_session` UNIQUE(`f_workspace_id`, `f_session_id`),
61
- CONSTRAINT `fk_t_workspace_sessions_f_workspace_id_t_workspaces_f_workspace_id_fk` FOREIGN KEY (`f_workspace_id`) REFERENCES `t_workspaces`(`f_workspace_id`) ON DELETE CASCADE
62
- );
63
- --> statement-breakpoint
64
- CREATE INDEX `idx_session_projcache_row_key` ON `t_session_projcache_row` (`f_key`);
65
- --> statement-breakpoint
66
- CREATE INDEX `idx_workspace_sessions_session_id` ON `t_workspace_sessions` (`f_session_id`);