@livestore/common 0.0.0-snapshot-1a7846e5cc007b08a8ded7230306f824499fbba8 → 0.0.0-snapshot-2a3ba4e86ce747d9ef59d22aabc4de9e0528846b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapter-types.d.ts +5 -9
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +1 -1
- package/dist/devtools/devtools-messages-leader.js +1 -1
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +9 -13
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +1 -1
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +1 -8
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +2 -10
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/types.d.ts +1 -1
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/schema/schema.d.ts +10 -12
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +4 -27
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +5 -0
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +8 -3
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +124 -3
- package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
- package/dist/schema/state/sqlite/system-tables.js +3 -2
- package/dist/schema/state/sqlite/system-tables.js.map +1 -1
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +13 -11
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/{validate-mutation-defs.d.ts → validate-schema.d.ts} +1 -1
- package/dist/schema-management/validate-schema.d.ts.map +1 -0
- package/dist/schema-management/{validate-mutation-defs.js → validate-schema.js} +1 -1
- package/dist/schema-management/validate-schema.js.map +1 -0
- package/dist/sync/syncstate.d.ts +2 -2
- package/package.json +2 -2
- package/src/adapter-types.ts +4 -10
- package/src/devtools/devtools-messages-leader.ts +1 -1
- package/src/leader-thread/eventlog.ts +9 -14
- package/src/leader-thread/leader-worker-devtools.ts +1 -1
- package/src/leader-thread/make-leader-thread-layer.ts +2 -8
- package/src/leader-thread/recreate-db.ts +2 -14
- package/src/leader-thread/types.ts +1 -1
- package/src/schema/schema.ts +15 -50
- package/src/schema/state/sqlite/mod.ts +14 -3
- package/src/schema/state/sqlite/system-tables.ts +5 -4
- package/src/schema-management/migrations.ts +14 -12
- package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
- package/dist/schema-management/validate-mutation-defs.js.map +0 -1
- /package/src/schema-management/{validate-mutation-defs.ts → validate-schema.ts} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { rawSqlEvent, rawSqlMaterializer } from '../../EventDef.js';
|
|
3
3
|
import { ClientDocumentTableDefSymbol, tableIsClientDocumentTable } from './client-document-def.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SqliteAst } from './db-schema/mod.js';
|
|
5
|
+
import { stateSystemTables } from './system-tables.js';
|
|
5
6
|
export * from './table-def.js';
|
|
6
7
|
export { ClientDocumentTableDefSymbol, tableIsClientDocumentTable, clientDocument, } from './client-document-def.js';
|
|
7
8
|
export * from '../../EventDef.js';
|
|
@@ -18,7 +19,7 @@ export const makeState = (inputSchema) => {
|
|
|
18
19
|
}
|
|
19
20
|
tables.set(sqliteDef.ast.name, tableDef);
|
|
20
21
|
}
|
|
21
|
-
for (const tableDef of
|
|
22
|
+
for (const tableDef of stateSystemTables) {
|
|
22
23
|
tables.set(tableDef.sqliteDef.name, tableDef);
|
|
23
24
|
}
|
|
24
25
|
const materializers = new Map();
|
|
@@ -31,6 +32,10 @@ export const makeState = (inputSchema) => {
|
|
|
31
32
|
materializers.set(tableDef[ClientDocumentTableDefSymbol].derived.setEventDef.name, tableDef[ClientDocumentTableDefSymbol].derived.setMaterializer);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
const hash = SqliteAst.hash({
|
|
36
|
+
_tag: 'dbSchema',
|
|
37
|
+
tables: [...tables.values()].map((_) => _.sqliteDef.ast),
|
|
38
|
+
});
|
|
39
|
+
return { sqlite: { tables, migrations: inputSchema.migrations ?? { strategy: 'auto' }, hash }, materializers };
|
|
35
40
|
};
|
|
36
41
|
//# sourceMappingURL=mod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,EAAqB,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtF,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,cAAc,GAGf,MAAM,0BAA0B,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAiC,WAAwB,EAAS,EAAE;IAC3F,MAAM,WAAW,GAA4B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5E,CAAC,CAAC,WAAW,CAAC,MAAM;QACpB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAErC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAE9C,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;QACpC,qDAAqD;QACrD,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,iBAAiB,CAAC,yBAAyB,SAAS,CAAC,GAAG,CAAC,IAAI,uCAAuC,CAAC,CAAA;QACvG,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAA;IAE1D,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7E,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACvC,CAAC;IAED,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IAEvD,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,IAAI,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,aAAa,CAAC,GAAG,CACf,QAAQ,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAC/D,QAAQ,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,eAAe,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;KACzD,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,CAAA;AAChH,CAAC,CAAA"}
|
|
@@ -168,7 +168,7 @@ export declare const leaderMergeCounterTable: import("./table-def.js").TableDef<
|
|
|
168
168
|
readonly mergeCounter: number;
|
|
169
169
|
}, never>>;
|
|
170
170
|
export type LeaderMergeCounterRow = typeof leaderMergeCounterTable.Type;
|
|
171
|
-
export declare const
|
|
171
|
+
export declare const stateSystemTables: (import("./table-def.js").TableDef<{
|
|
172
172
|
name: "__livestore_schema";
|
|
173
173
|
columns: {
|
|
174
174
|
readonly tableName: {
|
|
@@ -321,8 +321,7 @@ export declare const systemTables: (import("./table-def.js").TableDef<{
|
|
|
321
321
|
readonly id: 0;
|
|
322
322
|
readonly mergeCounter: number;
|
|
323
323
|
}, never>>)[];
|
|
324
|
-
export declare const
|
|
325
|
-
export type SyncStatus = typeof SyncStatus.Type;
|
|
324
|
+
export declare const isStateSystemTable: (tableName: string) => boolean;
|
|
326
325
|
export declare const EVENTLOG_META_TABLE = "eventlog";
|
|
327
326
|
export declare const eventlogMetaTable: import("./table-def.js").TableDef<{
|
|
328
327
|
name: "eventlog";
|
|
@@ -450,4 +449,126 @@ export declare const syncStatusTable: import("./table-def.js").TableDef<{
|
|
|
450
449
|
readonly head: number;
|
|
451
450
|
}, never>>;
|
|
452
451
|
export type SyncStatusRow = typeof syncStatusTable.Type;
|
|
452
|
+
export declare const eventlogSystemTables: (import("./table-def.js").TableDef<{
|
|
453
|
+
name: "eventlog";
|
|
454
|
+
columns: {
|
|
455
|
+
readonly idGlobal: {
|
|
456
|
+
columnType: "integer";
|
|
457
|
+
schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
458
|
+
default: import("effect/Option").None<never>;
|
|
459
|
+
nullable: false;
|
|
460
|
+
primaryKey: true;
|
|
461
|
+
};
|
|
462
|
+
readonly idClient: {
|
|
463
|
+
columnType: "integer";
|
|
464
|
+
schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
|
465
|
+
default: import("effect/Option").None<never>;
|
|
466
|
+
nullable: false;
|
|
467
|
+
primaryKey: true;
|
|
468
|
+
};
|
|
469
|
+
readonly parentIdGlobal: {
|
|
470
|
+
columnType: "integer";
|
|
471
|
+
schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
472
|
+
default: import("effect/Option").None<never>;
|
|
473
|
+
nullable: false;
|
|
474
|
+
primaryKey: false;
|
|
475
|
+
};
|
|
476
|
+
readonly parentIdClient: {
|
|
477
|
+
columnType: "integer";
|
|
478
|
+
schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
|
479
|
+
default: import("effect/Option").None<never>;
|
|
480
|
+
nullable: false;
|
|
481
|
+
primaryKey: false;
|
|
482
|
+
};
|
|
483
|
+
readonly name: {
|
|
484
|
+
columnType: "text";
|
|
485
|
+
schema: Schema.Schema<string, string, never>;
|
|
486
|
+
default: import("effect/Option").None<never>;
|
|
487
|
+
nullable: false;
|
|
488
|
+
primaryKey: false;
|
|
489
|
+
};
|
|
490
|
+
readonly argsJson: {
|
|
491
|
+
columnType: "text";
|
|
492
|
+
schema: Schema.Schema<any, string, never>;
|
|
493
|
+
default: import("effect/Option").None<never>;
|
|
494
|
+
nullable: false;
|
|
495
|
+
primaryKey: false;
|
|
496
|
+
};
|
|
497
|
+
readonly clientId: {
|
|
498
|
+
columnType: "text";
|
|
499
|
+
schema: Schema.Schema<string, string, never>;
|
|
500
|
+
default: import("effect/Option").None<never>;
|
|
501
|
+
nullable: false;
|
|
502
|
+
primaryKey: false;
|
|
503
|
+
};
|
|
504
|
+
readonly sessionId: {
|
|
505
|
+
columnType: "text";
|
|
506
|
+
schema: Schema.Schema<string, string, never>;
|
|
507
|
+
default: import("effect/Option").None<never>;
|
|
508
|
+
nullable: false;
|
|
509
|
+
primaryKey: false;
|
|
510
|
+
};
|
|
511
|
+
readonly schemaHash: {
|
|
512
|
+
columnType: "integer";
|
|
513
|
+
schema: Schema.Schema<number, number, never>;
|
|
514
|
+
default: import("effect/Option").None<never>;
|
|
515
|
+
nullable: false;
|
|
516
|
+
primaryKey: false;
|
|
517
|
+
};
|
|
518
|
+
readonly syncMetadataJson: {
|
|
519
|
+
columnType: "text";
|
|
520
|
+
schema: Schema.Schema<import("effect/Option").None<Schema.JsonValue> | import("effect/Option").Some<Schema.JsonValue>, string, never>;
|
|
521
|
+
default: import("effect/Option").None<never>;
|
|
522
|
+
nullable: false;
|
|
523
|
+
primaryKey: false;
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
indexes?: ReadonlyArray<SqliteDsl.Index>;
|
|
527
|
+
ast: import("./db-schema/ast/sqlite.js").Table;
|
|
528
|
+
}, {
|
|
529
|
+
isClientDocumentTable: false;
|
|
530
|
+
requiredInsertColumnNames: "name" | "schemaHash" | "idGlobal" | "idClient" | "parentIdGlobal" | "parentIdClient" | "argsJson" | "clientId" | "sessionId" | "syncMetadataJson";
|
|
531
|
+
}, Schema.Schema<{
|
|
532
|
+
readonly idGlobal: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
533
|
+
readonly idClient: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
534
|
+
readonly parentIdGlobal: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
535
|
+
readonly parentIdClient: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
536
|
+
readonly name: string;
|
|
537
|
+
readonly argsJson: any;
|
|
538
|
+
readonly clientId: string;
|
|
539
|
+
readonly sessionId: string;
|
|
540
|
+
readonly schemaHash: number;
|
|
541
|
+
readonly syncMetadataJson: import("effect/Option").None<Schema.JsonValue> | import("effect/Option").Some<Schema.JsonValue>;
|
|
542
|
+
}, {
|
|
543
|
+
readonly idGlobal: number;
|
|
544
|
+
readonly idClient: number;
|
|
545
|
+
readonly parentIdGlobal: number;
|
|
546
|
+
readonly parentIdClient: number;
|
|
547
|
+
readonly name: string;
|
|
548
|
+
readonly argsJson: string;
|
|
549
|
+
readonly clientId: string;
|
|
550
|
+
readonly sessionId: string;
|
|
551
|
+
readonly schemaHash: number;
|
|
552
|
+
readonly syncMetadataJson: string;
|
|
553
|
+
}, never>> | import("./table-def.js").TableDef<{
|
|
554
|
+
name: "__livestore_sync_status";
|
|
555
|
+
columns: {
|
|
556
|
+
readonly head: {
|
|
557
|
+
columnType: "integer";
|
|
558
|
+
schema: Schema.Schema<number, number, never>;
|
|
559
|
+
default: import("effect/Option").None<never>;
|
|
560
|
+
nullable: false;
|
|
561
|
+
primaryKey: true;
|
|
562
|
+
};
|
|
563
|
+
};
|
|
564
|
+
indexes?: ReadonlyArray<SqliteDsl.Index>;
|
|
565
|
+
ast: import("./db-schema/ast/sqlite.js").Table;
|
|
566
|
+
}, {
|
|
567
|
+
isClientDocumentTable: false;
|
|
568
|
+
requiredInsertColumnNames: "head";
|
|
569
|
+
}, Schema.Schema<{
|
|
570
|
+
readonly head: number;
|
|
571
|
+
}, {
|
|
572
|
+
readonly head: number;
|
|
573
|
+
}, never>>)[];
|
|
453
574
|
//# sourceMappingURL=system-tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAK9C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQ1B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQnC,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAEzE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAUpC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,0BAA0B,qCAAqC,CAAA;AAE5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAMlC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAK9C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQ1B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQnC,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAEzE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAUpC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,0BAA0B,qCAAqC,CAAA;AAE5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAMlC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAK7B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,YAAkE,CAAA;AAItH,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAE7C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmB5B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,iBAAiB,4BAA4B,CAAA;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;UAK1B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAuC,CAAA"}
|
|
@@ -47,14 +47,14 @@ export const leaderMergeCounterTable = table({
|
|
|
47
47
|
mergeCounter: SqliteDsl.integer({ primaryKey: true }),
|
|
48
48
|
},
|
|
49
49
|
});
|
|
50
|
-
export const
|
|
50
|
+
export const stateSystemTables = [
|
|
51
51
|
schemaMetaTable,
|
|
52
52
|
schemaEventDefsMetaTable,
|
|
53
53
|
sessionChangesetMetaTable,
|
|
54
54
|
leaderMergeCounterTable,
|
|
55
55
|
];
|
|
56
|
+
export const isStateSystemTable = (tableName) => stateSystemTables.some((_) => _.sqliteDef.name === tableName);
|
|
56
57
|
/// Eventlog DB
|
|
57
|
-
export const SyncStatus = Schema.Literal('synced', 'pending', 'error', 'clientOnly');
|
|
58
58
|
export const EVENTLOG_META_TABLE = 'eventlog';
|
|
59
59
|
export const eventlogMetaTable = table({
|
|
60
60
|
name: EVENTLOG_META_TABLE,
|
|
@@ -83,4 +83,5 @@ export const syncStatusTable = table({
|
|
|
83
83
|
head: SqliteDsl.integer({ primaryKey: true }),
|
|
84
84
|
},
|
|
85
85
|
});
|
|
86
|
+
export const eventlogSystemTables = [eventlogMetaTable, syncStatusTable];
|
|
86
87
|
//# sourceMappingURL=system-tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,iBAAiB;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;IACnC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE;QACP,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC/C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClD,sBAAsB;QACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAC/C;CACF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,4BAA4B,GAAG,+BAA+B,CAAA;AAE3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;IAC5C,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE;QACP,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC/C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClD,sBAAsB;QACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAC/C;CACF,CAAC,CAAA;AAIF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,+BAA+B,CAAA;AAE3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;IAC7C,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE;QACP,8BAA8B;QAC9B,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9D,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9D,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;CACnF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAA;AAE5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;IAC3C,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE;QACP,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KACtD;CACF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAyB,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAa,MAAM,yCAAyC,CAAA;AAU9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,GAAI,IAAI,QAAQ,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAuBxE,CAAA;AAGJ,eAAO,MAAM,SAAS,GAAI,6BAIvB;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC5E,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAyB,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAa,MAAM,yCAAyC,CAAA;AAU9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,GAAI,IAAI,QAAQ,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAuBxE,CAAA;AAGJ,eAAO,MAAM,SAAS,GAAI,6BAIvB;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC5E,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CA2D/C,CAAA;AAEJ,eAAO,MAAM,YAAY,GAAI,yDAM1B;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,sCAqCE,CAAA;AAOH,eAAO,MAAM,cAAc,GAAI,UAAU,SAAS,CAAC,KAAK,WAQvD,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { memoizeByStringifyArgs } from '@livestore/utils';
|
|
2
2
|
import { Effect, Schema as EffectSchema } from '@livestore/utils/effect';
|
|
3
3
|
import { SqliteAst, SqliteDsl } from '../schema/state/sqlite/db-schema/mod.js';
|
|
4
|
-
import { SCHEMA_EVENT_DEFS_META_TABLE, SCHEMA_META_TABLE, schemaEventDefsMetaTable,
|
|
4
|
+
import { isStateSystemTable, SCHEMA_EVENT_DEFS_META_TABLE, SCHEMA_META_TABLE, schemaEventDefsMetaTable, stateSystemTables, } from '../schema/state/sqlite/system-tables.js';
|
|
5
5
|
import { sql } from '../util.js';
|
|
6
6
|
import { dbExecute, dbSelect } from './common.js';
|
|
7
|
-
import { validateSchema } from './validate-
|
|
7
|
+
import { validateSchema } from './validate-schema.js';
|
|
8
8
|
const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString());
|
|
9
9
|
export const makeSchemaManager = (db) => Effect.gen(function* () {
|
|
10
10
|
yield* migrateTable({
|
|
@@ -25,21 +25,23 @@ export const makeSchemaManager = (db) => Effect.gen(function* () {
|
|
|
25
25
|
});
|
|
26
26
|
// TODO more graceful DB migration (e.g. backup DB before destructive migrations)
|
|
27
27
|
export const migrateDb = ({ db, schema, onProgress, }) => Effect.gen(function* () {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
for (const tableDef of stateSystemTables) {
|
|
29
|
+
yield* migrateTable({
|
|
30
|
+
db,
|
|
31
|
+
tableAst: tableDef.sqliteDef.ast,
|
|
32
|
+
behaviour: 'create-if-not-exists',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
33
35
|
// TODO enforce that migrating tables isn't allowed once the store is running
|
|
34
36
|
const schemaManager = yield* makeSchemaManager(db);
|
|
35
37
|
yield* validateSchema(schema, schemaManager);
|
|
36
38
|
const schemaMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_META_TABLE}`);
|
|
37
39
|
const dbSchemaHashByTable = Object.fromEntries(schemaMetaRows.map(({ tableName, schemaHash }) => [tableName, schemaHash]));
|
|
38
|
-
const tableDefs =
|
|
40
|
+
const tableDefs = [
|
|
39
41
|
// NOTE it's important the `SCHEMA_META_TABLE` comes first since we're writing to it below
|
|
40
|
-
...
|
|
41
|
-
...Array.from(schema.tables.values()).filter((_) => _.sqliteDef.name
|
|
42
|
-
]
|
|
42
|
+
...stateSystemTables,
|
|
43
|
+
...Array.from(schema.state.sqlite.tables.values()).filter((_) => !isStateSystemTable(_.sqliteDef.name)),
|
|
44
|
+
];
|
|
43
45
|
const tablesToMigrate = new Set();
|
|
44
46
|
const migrationsReportEntries = [];
|
|
45
47
|
for (const tableDef of tableDefs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAIxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAE9E,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,4 @@ import type { LiveStoreSchema } from '../schema/mod.js';
|
|
|
5
5
|
import type { EventDefInfo, SchemaManager } from './common.js';
|
|
6
6
|
export declare const validateSchema: (schema: LiveStoreSchema, schemaManager: SchemaManager) => Effect.Effect<void, UnexpectedError, never>;
|
|
7
7
|
export declare const validateEventDef: (eventDef: EventDef.AnyWithoutFn, schemaManager: SchemaManager, registeredEventDefInfo: EventDefInfo | undefined) => void;
|
|
8
|
-
//# sourceMappingURL=validate-
|
|
8
|
+
//# sourceMappingURL=validate-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-schema.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE9D,eAAO,MAAM,cAAc,GAAI,QAAQ,eAAe,EAAE,eAAe,aAAa,gDAsBhF,CAAA;AAEJ,eAAO,MAAM,gBAAgB,GAC3B,UAAU,QAAQ,CAAC,YAAY,EAC/B,eAAe,aAAa,EAC5B,wBAAwB,YAAY,GAAG,SAAS,SA0BjD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-schema.js","sourceRoot":"","sources":["../../src/schema-management/validate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAKrD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAE,aAA4B,EAAE,EAAE,CACtF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,gCAAgC;IAChC,MAAM,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAA;IAEhE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,CACrD,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,CACxF,CAAA;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YACzB,KAAK,EAAE,iCAAiC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACpG,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEvG,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAA;IACnE,CAAC;IAED,yBAAyB;AAC3B,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAA+B,EAC/B,aAA4B,EAC5B,sBAAgD,EAChD,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE/C,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,aAAa,CAAC,eAAe,CAAC;YAC5B,UAAU;YACV,SAAS,EAAE,QAAQ,CAAC,IAAI;SACzB,CAAC,CAAA;QAEF,OAAM;IACR,CAAC;IAED,IAAI,UAAU,KAAK,sBAAsB,CAAC,UAAU;QAAE,OAAM;IAE5D,mHAAmH;IACnH,2GAA2G;IAE3G,6CAA6C;IAC7C,iGAAiG;IACjG,IAAI;IAEJ,aAAa,CAAC,eAAe,CAAC;QAC5B,UAAU;QACV,SAAS,EAAE,QAAQ,CAAC,IAAI;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/dist/sync/syncstate.d.ts
CHANGED
|
@@ -26,8 +26,6 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
26
26
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
|
27
27
|
}>;
|
|
28
28
|
}>, never, {
|
|
29
|
-
readonly pending: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
30
|
-
} & {
|
|
31
29
|
readonly upstreamHead: {
|
|
32
30
|
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
33
31
|
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
@@ -37,6 +35,8 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
37
35
|
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
38
36
|
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
39
37
|
};
|
|
38
|
+
} & {
|
|
39
|
+
readonly pending: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
40
40
|
}, {}, {}>;
|
|
41
41
|
/**
|
|
42
42
|
* SyncState represents the current sync state of a sync node relative to an upstream node.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/common",
|
|
3
|
-
"version": "0.0.0-snapshot-
|
|
3
|
+
"version": "0.0.0-snapshot-2a3ba4e86ce747d9ef59d22aabc4de9e0528846b",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"graphology": "0.26.0-alpha1",
|
|
55
55
|
"graphology-dag": "0.4.1",
|
|
56
56
|
"graphology-types": "0.24.8",
|
|
57
|
-
"@livestore/utils": "0.0.0-snapshot-
|
|
57
|
+
"@livestore/utils": "0.0.0-snapshot-2a3ba4e86ce747d9ef59d22aabc4de9e0528846b"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"vitest": "^3.1.1"
|
package/src/adapter-types.ts
CHANGED
|
@@ -202,10 +202,12 @@ export class SqliteError extends Schema.TaggedError<SqliteError>()('LiveStore.Sq
|
|
|
202
202
|
// TODO possibly allow a combination of these options
|
|
203
203
|
// TODO allow a way to stream the migration progress back to the app
|
|
204
204
|
export type MigrationOptions =
|
|
205
|
-
| MigrationOptionsFromEventlog
|
|
206
205
|
| {
|
|
207
|
-
strategy: '
|
|
206
|
+
strategy: 'auto'
|
|
208
207
|
hooks?: Partial<MigrationHooks>
|
|
208
|
+
logging?: {
|
|
209
|
+
excludeAffectedRows?: (sqlStmt: string) => boolean
|
|
210
|
+
}
|
|
209
211
|
}
|
|
210
212
|
| {
|
|
211
213
|
strategy: 'manual'
|
|
@@ -223,14 +225,6 @@ export type MigrationHooks = {
|
|
|
223
225
|
|
|
224
226
|
export type MigrationHook = (db: SqliteDb) => void | Promise<void> | Effect.Effect<void, unknown>
|
|
225
227
|
|
|
226
|
-
export interface MigrationOptionsFromEventlog {
|
|
227
|
-
strategy: 'from-eventlog'
|
|
228
|
-
hooks?: Partial<MigrationHooks>
|
|
229
|
-
logging?: {
|
|
230
|
-
excludeAffectedRows?: (sqlStmt: string) => boolean
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
228
|
export interface ClientSessionDevtoolsChannel
|
|
235
229
|
extends WebChannel.WebChannel<Devtools.ClientSession.MessageToApp, Devtools.ClientSession.MessageFromApp> {}
|
|
236
230
|
|
|
@@ -17,7 +17,7 @@ export class DatabaseFileInfo extends Schema.Struct({
|
|
|
17
17
|
}) {}
|
|
18
18
|
|
|
19
19
|
export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
|
|
20
|
-
|
|
20
|
+
state: DatabaseFileInfo,
|
|
21
21
|
eventlog: DatabaseFileInfo,
|
|
22
22
|
}) {}
|
|
23
23
|
|
|
@@ -7,9 +7,9 @@ import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
|
|
|
7
7
|
import {
|
|
8
8
|
EVENTLOG_META_TABLE,
|
|
9
9
|
eventlogMetaTable,
|
|
10
|
+
eventlogSystemTables,
|
|
10
11
|
sessionChangesetMetaTable,
|
|
11
12
|
SYNC_STATUS_TABLE,
|
|
12
|
-
syncStatusTable,
|
|
13
13
|
} from '../schema/state/sqlite/system-tables.js'
|
|
14
14
|
import { migrateTable } from '../schema-management/migrations.js'
|
|
15
15
|
import { insertRow, updateRows } from '../sql-queries/sql-queries.js'
|
|
@@ -21,19 +21,14 @@ import { LeaderThreadCtx } from './types.js'
|
|
|
21
21
|
|
|
22
22
|
export const initEventlogDb = (dbEventlog: SqliteDb) =>
|
|
23
23
|
Effect.gen(function* () {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
db: dbEventlog,
|
|
33
|
-
behaviour: 'create-if-not-exists',
|
|
34
|
-
tableAst: syncStatusTable.sqliteDef.ast,
|
|
35
|
-
skipMetaTable: true,
|
|
36
|
-
})
|
|
24
|
+
for (const tableDef of eventlogSystemTables) {
|
|
25
|
+
yield* migrateTable({
|
|
26
|
+
db: dbEventlog,
|
|
27
|
+
behaviour: 'create-if-not-exists',
|
|
28
|
+
tableAst: tableDef.sqliteDef.ast,
|
|
29
|
+
skipMetaTable: true,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
37
32
|
|
|
38
33
|
// Create sync status row if it doesn't exist
|
|
39
34
|
yield* execSql(
|
|
@@ -214,7 +214,7 @@ const listenToDevtools = ({
|
|
|
214
214
|
|
|
215
215
|
yield* sendMessage(
|
|
216
216
|
Devtools.Leader.DatabaseFileInfoRes.make({
|
|
217
|
-
|
|
217
|
+
state: { fileSize: dbFileSize, persistenceInfo: persistenceInfo.state },
|
|
218
218
|
eventlog: { fileSize: eventlogFileSize, persistenceInfo: persistenceInfo.eventlog },
|
|
219
219
|
...reqPayload,
|
|
220
220
|
}),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HttpClient, Schema, Scope } from '@livestore/utils/effect'
|
|
2
2
|
import { Deferred, Effect, Layer, Queue, SubscriptionRef } from '@livestore/utils/effect'
|
|
3
3
|
|
|
4
|
-
import type { BootStatus, MakeSqliteDb,
|
|
4
|
+
import type { BootStatus, MakeSqliteDb, SqliteError } from '../adapter-types.js'
|
|
5
5
|
import { UnexpectedError } from '../adapter-types.js'
|
|
6
6
|
import type * as Devtools from '../devtools/mod.js'
|
|
7
7
|
import type { LiveStoreSchema } from '../schema/mod.js'
|
|
@@ -227,13 +227,7 @@ const bootLeaderThread = ({
|
|
|
227
227
|
|
|
228
228
|
yield* Eventlog.initEventlogDb(dbEventlog)
|
|
229
229
|
|
|
230
|
-
|
|
231
|
-
if (dbStateMissing) {
|
|
232
|
-
const recreateResult = yield* recreateDb
|
|
233
|
-
migrationsReport = recreateResult.migrationsReport
|
|
234
|
-
} else {
|
|
235
|
-
migrationsReport = { migrations: [] }
|
|
236
|
-
}
|
|
230
|
+
const { migrationsReport } = dbStateMissing ? yield* recreateDb : { migrationsReport: { migrations: [] } }
|
|
237
231
|
|
|
238
232
|
// NOTE the sync processor depends on the dbs being initialized properly
|
|
239
233
|
const { initialLeaderHead } = yield* syncProcessor.boot
|
|
@@ -14,7 +14,7 @@ export const recreateDb: Effect.Effect<
|
|
|
14
14
|
> = Effect.gen(function* () {
|
|
15
15
|
const { dbState, dbEventlog, schema, bootStatusQueue, materializeEvent } = yield* LeaderThreadCtx
|
|
16
16
|
|
|
17
|
-
const migrationOptions = schema.
|
|
17
|
+
const migrationOptions = schema.state.sqlite.migrations
|
|
18
18
|
let migrationsReport: MigrationsReport
|
|
19
19
|
|
|
20
20
|
yield* Effect.addFinalizer(
|
|
@@ -47,7 +47,7 @@ export const recreateDb: Effect.Effect<
|
|
|
47
47
|
})
|
|
48
48
|
|
|
49
49
|
switch (migrationOptions.strategy) {
|
|
50
|
-
case '
|
|
50
|
+
case 'auto': {
|
|
51
51
|
const hooks = migrationOptions.hooks
|
|
52
52
|
const initResult = yield* initDb(hooks)
|
|
53
53
|
|
|
@@ -66,18 +66,6 @@ export const recreateDb: Effect.Effect<
|
|
|
66
66
|
|
|
67
67
|
break
|
|
68
68
|
}
|
|
69
|
-
case 'hard-reset': {
|
|
70
|
-
const hooks = migrationOptions.hooks
|
|
71
|
-
const initResult = yield* initDb(hooks)
|
|
72
|
-
|
|
73
|
-
migrationsReport = initResult.migrationsReport
|
|
74
|
-
|
|
75
|
-
// The database is migrated but empty now, so nothing else to do
|
|
76
|
-
|
|
77
|
-
yield* Effect.tryAll(() => hooks?.post?.(initResult.tmpDb)).pipe(UnexpectedError.mapToUnexpectedError)
|
|
78
|
-
|
|
79
|
-
break
|
|
80
|
-
}
|
|
81
69
|
case 'manual': {
|
|
82
70
|
const oldDbData = dbState.export()
|
|
83
71
|
|
|
@@ -52,7 +52,7 @@ export type InitialSyncInfo = Option.Option<{
|
|
|
52
52
|
// | { _tag: 'Reuse'; syncInfo: InitialSyncInfo }
|
|
53
53
|
|
|
54
54
|
export type LeaderSqliteDb = SqliteDb<{ dbPointer: number; persistenceInfo: PersistenceInfo }>
|
|
55
|
-
export type PersistenceInfoPair = {
|
|
55
|
+
export type PersistenceInfoPair = { state: PersistenceInfo; eventlog: PersistenceInfo }
|
|
56
56
|
|
|
57
57
|
export type DevtoolsOptions =
|
|
58
58
|
| {
|