@livestore/common 0.0.48-dev.0 → 0.0.48-dev.1

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.
@@ -1,13 +1,13 @@
1
1
  import type { GetValForKey } from '@livestore/utils';
2
2
  import { Schema } from '@livestore/utils/effect';
3
3
  import type { SqliteDsl } from 'effect-db-schema';
4
- import type { MutationEvent } from './schema/index.js';
5
- import { DbSchema } from './schema/index.js';
4
+ import type { MutationEvent } from './schema/mutations.js';
6
5
  import type { TableOptions } from './schema/table-def.js';
6
+ import * as DbSchema from './schema/table-def.js';
7
7
  export declare const makeDerivedMutationDefsForTable: <TTableDef extends {
8
8
  sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
9
9
  isSingleColumn: boolean;
10
- options: DbSchema.TableOptions;
10
+ options: TableOptions;
11
11
  schema: Schema.Schema<any, any, never>;
12
12
  }>(table: TTableDef) => {
13
13
  insert: import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
@@ -16,19 +16,19 @@ export declare const makeDerivedMutationDefsForTable: <TTableDef extends {
16
16
  readonly [x: string]: any;
17
17
  }>;
18
18
  update: import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
19
- readonly values: {
20
- [x: string]: any;
21
- };
22
19
  readonly where: {
23
20
  [x: string]: any;
24
21
  };
25
- }, {
26
22
  readonly values: {
27
23
  [x: string]: any;
28
24
  };
25
+ }, {
29
26
  readonly where: {
30
27
  [x: string]: any;
31
28
  };
29
+ readonly values: {
30
+ [x: string]: any;
31
+ };
32
32
  }>;
33
33
  delete: import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
34
34
  readonly where: {
@@ -43,7 +43,7 @@ export declare const makeDerivedMutationDefsForTable: <TTableDef extends {
43
43
  export declare const deriveCreateMutationDef: <TTableDef extends {
44
44
  sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
45
45
  isSingleColumn: boolean;
46
- options: DbSchema.TableOptions;
46
+ options: TableOptions;
47
47
  schema: Schema.Schema<any, any, never>;
48
48
  }>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
49
49
  readonly [x: string]: any;
@@ -53,27 +53,27 @@ export declare const deriveCreateMutationDef: <TTableDef extends {
53
53
  export declare const deriveUpdateMutationDef: <TTableDef extends {
54
54
  sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
55
55
  isSingleColumn: boolean;
56
- options: DbSchema.TableOptions;
56
+ options: TableOptions;
57
57
  schema: Schema.Schema<any, any, never>;
58
58
  }>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
59
- readonly values: {
60
- [x: string]: any;
61
- };
62
59
  readonly where: {
63
60
  [x: string]: any;
64
61
  };
65
- }, {
66
62
  readonly values: {
67
63
  [x: string]: any;
68
64
  };
65
+ }, {
69
66
  readonly where: {
70
67
  [x: string]: any;
71
68
  };
69
+ readonly values: {
70
+ [x: string]: any;
71
+ };
72
72
  }>;
73
73
  export declare const deriveDeleteMutationDef: <TTableDef extends {
74
74
  sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
75
75
  isSingleColumn: boolean;
76
- options: DbSchema.TableOptions;
76
+ options: TableOptions;
77
77
  schema: Schema.Schema<any, any, never>;
78
78
  }>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
79
79
  readonly where: {
@@ -1 +1 @@
1
- {"version":3,"file":"derived-mutations.d.ts","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived-mutations.d.ts","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ReadonlyRecord, Schema } from '@livestore/utils/effect';
2
- import { DbSchema, defineMutation } from './schema/index.js';
2
+ import { defineMutation } from './schema/mutations.js';
3
+ import * as DbSchema from './schema/table-def.js';
3
4
  import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js';
4
5
  export const makeDerivedMutationDefsForTable = (table) => ({
5
6
  insert: deriveCreateMutationDef(table),
@@ -1 +1 @@
1
- {"version":3,"file":"derived-mutations.js","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived-mutations.js","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,12 @@ import type { InMemoryDatabase } from '../adapter-types.js';
2
2
  import type { ParamsObject } from '../util.js';
3
3
  export declare const dbExecute: (db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => void;
4
4
  export declare const dbSelect: <T>(db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => readonly T[];
5
+ export interface SchemaManager {
6
+ getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>;
7
+ setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void;
8
+ }
9
+ export type MutationDefInfo = {
10
+ mutationName: string;
11
+ schemaHash: number;
12
+ };
5
13
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,OAAQ,gBAAgB,YAAY,MAAM,eAAe,YAAY,SAU1F,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,gBAAgB,YAAY,MAAM,eAAe,YAAY,iBAQ5F,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,OAAQ,gBAAgB,YAAY,MAAM,eAAe,YAAY,SAU1F,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,gBAAgB,YAAY,MAAM,eAAe,YAAY,iBAQ5F,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,mBAAmB,EAAE,MAAM,aAAa,CAAC,eAAe,CAAC,CAAA;IAEzD,kBAAkB,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA"}
@@ -2,6 +2,8 @@ import * as otel from '@opentelemetry/api';
2
2
  import { SqliteAst } from 'effect-db-schema';
3
3
  import type { InMemoryDatabase } from '../adapter-types.js';
4
4
  import type { LiveStoreSchema } from '../schema/index.js';
5
+ import type { SchemaManager } from './common.js';
6
+ export declare const makeSchemaManager: (db: InMemoryDatabase) => SchemaManager;
5
7
  export declare const migrateDb: ({ db, otelContext, schema, }: {
6
8
  db: InMemoryDatabase;
7
9
  otelContext?: otel.Context;
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUzD,eAAO,MAAM,SAAS,iCAInB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAA;CACxB,SAsCA,CAAA;AAED,eAAO,MAAM,YAAY,4DAOtB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,QAAQ,EAAE,UAAU,KAAK,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,SA6BA,CAAA"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,OAAQ,gBAAgB,KAAG,aA6BxD,CAAA;AAGD,eAAO,MAAM,SAAS,iCAInB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAA;CACxB,SAsCA,CAAA;AAED,eAAO,MAAM,YAAY,4DAOtB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,QAAQ,EAAE,UAAU,KAAK,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,SA6BA,CAAA"}
@@ -2,11 +2,32 @@ import { memoizeByStringifyArgs } from '@livestore/utils';
2
2
  import { Schema as EffectSchema } from '@livestore/utils/effect';
3
3
  import * as otel from '@opentelemetry/api';
4
4
  import { SqliteAst, SqliteDsl } from 'effect-db-schema';
5
- import { SCHEMA_META_TABLE, schemaMetaTable, systemTables } from '../schema/system-tables.js';
5
+ import { SCHEMA_META_TABLE, SCHEMA_MUTATIONS_META_TABLE, schemaMetaTable, schemaMutationsMetaTable, systemTables, } from '../schema/system-tables.js';
6
6
  import { sql } from '../util.js';
7
7
  import { dbExecute, dbSelect } from './common.js';
8
- import { makeSchemaManager, validateSchema } from './validate-mutation-defs.js';
8
+ import { validateSchema } from './validate-mutation-defs.js';
9
9
  const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString());
10
+ export const makeSchemaManager = (db) => {
11
+ migrateTable({
12
+ db,
13
+ otelContext: otel.context.active(),
14
+ tableAst: schemaMutationsMetaTable.sqliteDef.ast,
15
+ behaviour: 'create-if-not-exists',
16
+ });
17
+ return {
18
+ getMutationDefInfos: () => {
19
+ const schemaMutationsMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`);
20
+ return schemaMutationsMetaRows;
21
+ },
22
+ setMutationDefInfo: (info) => {
23
+ dbExecute(db, sql `INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`, {
24
+ mutationName: info.mutationName,
25
+ schemaHash: info.schemaHash,
26
+ updatedAt: new Date().toISOString(),
27
+ });
28
+ },
29
+ };
30
+ };
10
31
  // TODO more graceful DB migration (e.g. backup DB before destructive migrations)
11
32
  export const migrateDb = ({ db, otelContext = otel.context.active(), schema, }) => {
12
33
  migrateTable({
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,6 @@
1
- import type { InMemoryDatabase } from '../adapter-types.js';
2
1
  import type { LiveStoreSchema } from '../schema/index.js';
3
2
  import type { MutationDef } from '../schema/mutations.js';
3
+ import type { MutationDefInfo, SchemaManager } from './common.js';
4
4
  export declare const validateSchema: (schema: LiveStoreSchema, schemaManager: SchemaManager) => void;
5
5
  export declare const validateMutationDef: (mutationDef: MutationDef.Any, schemaManager: SchemaManager, registeredMutationDefInfo: MutationDefInfo | undefined) => void;
6
- interface SchemaManager {
7
- getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>;
8
- setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void;
9
- }
10
- type MutationDefInfo = {
11
- mutationName: string;
12
- schemaHash: number;
13
- };
14
- export declare const makeSchemaManager: (db: InMemoryDatabase) => SchemaManager;
15
- export {};
16
6
  //# sourceMappingURL=validate-mutation-defs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOzD,eAAO,MAAM,cAAc,WAAY,eAAe,iBAAiB,aAAa,SAqBnF,CAAA;AAED,eAAO,MAAM,mBAAmB,gBACjB,YAAY,GAAG,iBACb,aAAa,6BACD,eAAe,GAAG,SAAS,SA0BvD,CAAA;AAED,UAAU,aAAa;IACrB,mBAAmB,EAAE,MAAM,aAAa,CAAC,eAAe,CAAC,CAAA;IAEzD,kBAAkB,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/D;AAED,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,iBAAiB,OAAQ,gBAAgB,KAAG,aA6BxD,CAAA"}
1
+ {"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjE,eAAO,MAAM,cAAc,WAAY,eAAe,iBAAiB,aAAa,SAqBnF,CAAA;AAED,eAAO,MAAM,mBAAmB,gBACjB,YAAY,GAAG,iBACb,aAAa,6BACD,eAAe,GAAG,SAAS,SA0BvD,CAAA"}
@@ -1,10 +1,5 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils';
2
2
  import { Schema } from '@livestore/utils/effect';
3
- import * as otel from '@opentelemetry/api';
4
- import { SCHEMA_MUTATIONS_META_TABLE, schemaMutationsMetaTable } from '../schema/system-tables.js';
5
- import { sql } from '../util.js';
6
- import { dbExecute, dbSelect } from './common.js';
7
- import { migrateTable } from './migrations.js';
8
3
  export const validateSchema = (schema, schemaManager) => {
9
4
  // Validate mutation definitions
10
5
  const registeredMutationDefInfos = schemaManager.getMutationDefInfos();
@@ -39,25 +34,4 @@ export const validateMutationDef = (mutationDef, schemaManager, registeredMutati
39
34
  mutationName: mutationDef.name,
40
35
  });
41
36
  };
42
- export const makeSchemaManager = (db) => {
43
- migrateTable({
44
- db,
45
- otelContext: otel.context.active(),
46
- tableAst: schemaMutationsMetaTable.sqliteDef.ast,
47
- behaviour: 'create-if-not-exists',
48
- });
49
- return {
50
- getMutationDefInfos: () => {
51
- const schemaMutationsMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`);
52
- return schemaMutationsMetaRows;
53
- },
54
- setMutationDefInfo: (info) => {
55
- dbExecute(db, sql `INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`, {
56
- mutationName: info.mutationName,
57
- schemaHash: info.schemaHash,
58
- updatedAt: new Date().toISOString(),
59
- });
60
- },
61
- };
62
- };
63
37
  //# sourceMappingURL=validate-mutation-defs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-mutation-defs.js","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-mutation-defs.js","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAMhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAE,aAA4B,EAAE,EAAE;IACtF,gCAAgC;IAChC,MAAM,0BAA0B,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAA;IAEtE,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,MAAM,CAC3D,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAC7F,CAAA;IAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,iBAAiB,CACf,iCAAiC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAA;IACH,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI,CAAC,CAAA;QAEnH,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAA;IAC5E,CAAC;IAED,yBAAyB;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAA4B,EAC5B,aAA4B,EAC5B,yBAAsD,EACtD,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAElD,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAC5C,aAAa,CAAC,kBAAkB,CAAC;YAC/B,UAAU;YACV,YAAY,EAAE,WAAW,CAAC,IAAI;SAC/B,CAAC,CAAA;QAEF,OAAM;IACR,CAAC;IAED,IAAI,UAAU,KAAK,yBAAyB,CAAC,UAAU;QAAE,OAAM;IAE/D,mHAAmH;IACnH,8GAA8G;IAE9G,6CAA6C;IAC7C,oGAAoG;IACpG,IAAI;IAEJ,aAAa,CAAC,kBAAkB,CAAC;QAC/B,UAAU;QACV,YAAY,EAAE,WAAW,CAAC,IAAI;KAC/B,CAAC,CAAA;AACJ,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/common",
3
- "version": "0.0.48-dev.0",
3
+ "version": "0.0.48-dev.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@opentelemetry/api": "^1.9.0",
32
- "@livestore/utils": "0.0.48-dev.0",
33
- "effect-db-schema": "0.0.48-dev.0"
32
+ "@livestore/utils": "0.0.48-dev.1",
33
+ "effect-db-schema": "0.0.48-dev.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "vitest": "^1.6.0"
@@ -2,9 +2,10 @@ import type { GetValForKey } from '@livestore/utils'
2
2
  import { ReadonlyRecord, Schema } from '@livestore/utils/effect'
3
3
  import type { SqliteDsl } from 'effect-db-schema'
4
4
 
5
- import type { MutationEvent } from './schema/index.js'
6
- import { DbSchema, defineMutation } from './schema/index.js'
5
+ import type { MutationEvent } from './schema/mutations.js'
6
+ import { defineMutation } from './schema/mutations.js'
7
7
  import type { TableOptions } from './schema/table-def.js'
8
+ import * as DbSchema from './schema/table-def.js'
8
9
  import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js'
9
10
 
10
11
  export const makeDerivedMutationDefsForTable = <TTableDef extends DbSchema.TableDef>(table: TTableDef) => ({
@@ -27,3 +27,14 @@ export const dbSelect = <T>(db: InMemoryDatabase, queryStr: string, bindValues?:
27
27
 
28
28
  return stmt.select<T>(bindValues ? prepareBindValues(bindValues, queryStr) : undefined)
29
29
  }
30
+
31
+ export interface SchemaManager {
32
+ getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>
33
+
34
+ setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void
35
+ }
36
+
37
+ export type MutationDefInfo = {
38
+ mutationName: string
39
+ schemaHash: number
40
+ }
@@ -5,14 +5,52 @@ import { SqliteAst, SqliteDsl } from 'effect-db-schema'
5
5
 
6
6
  import type { InMemoryDatabase } from '../adapter-types.js'
7
7
  import type { LiveStoreSchema } from '../schema/index.js'
8
- import type { SchemaMetaRow } from '../schema/system-tables.js'
9
- import { SCHEMA_META_TABLE, schemaMetaTable, systemTables } from '../schema/system-tables.js'
8
+ import type { SchemaMetaRow, SchemaMutationsMetaRow } from '../schema/system-tables.js'
9
+ import {
10
+ SCHEMA_META_TABLE,
11
+ SCHEMA_MUTATIONS_META_TABLE,
12
+ schemaMetaTable,
13
+ schemaMutationsMetaTable,
14
+ systemTables,
15
+ } from '../schema/system-tables.js'
10
16
  import { sql } from '../util.js'
17
+ import type { SchemaManager } from './common.js'
11
18
  import { dbExecute, dbSelect } from './common.js'
12
- import { makeSchemaManager, validateSchema } from './validate-mutation-defs.js'
19
+ import { validateSchema } from './validate-mutation-defs.js'
13
20
 
14
21
  const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString())
15
22
 
23
+ export const makeSchemaManager = (db: InMemoryDatabase): SchemaManager => {
24
+ migrateTable({
25
+ db,
26
+ otelContext: otel.context.active(),
27
+ tableAst: schemaMutationsMetaTable.sqliteDef.ast,
28
+ behaviour: 'create-if-not-exists',
29
+ })
30
+
31
+ return {
32
+ getMutationDefInfos: () => {
33
+ const schemaMutationsMetaRows = dbSelect<SchemaMutationsMetaRow>(
34
+ db,
35
+ sql`SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`,
36
+ )
37
+
38
+ return schemaMutationsMetaRows
39
+ },
40
+ setMutationDefInfo: (info) => {
41
+ dbExecute(
42
+ db,
43
+ sql`INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`,
44
+ {
45
+ mutationName: info.mutationName,
46
+ schemaHash: info.schemaHash,
47
+ updatedAt: new Date().toISOString(),
48
+ },
49
+ )
50
+ },
51
+ }
52
+ }
53
+
16
54
  // TODO more graceful DB migration (e.g. backup DB before destructive migrations)
17
55
  export const migrateDb = ({
18
56
  db,
@@ -1,15 +1,9 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
  import { Schema } from '@livestore/utils/effect'
3
- import * as otel from '@opentelemetry/api'
4
3
 
5
- import type { InMemoryDatabase } from '../adapter-types.js'
6
4
  import type { LiveStoreSchema } from '../schema/index.js'
7
5
  import type { MutationDef } from '../schema/mutations.js'
8
- import type { SchemaMutationsMetaRow } from '../schema/system-tables.js'
9
- import { SCHEMA_MUTATIONS_META_TABLE, schemaMutationsMetaTable } from '../schema/system-tables.js'
10
- import { sql } from '../util.js'
11
- import { dbExecute, dbSelect } from './common.js'
12
- import { migrateTable } from './migrations.js'
6
+ import type { MutationDefInfo, SchemaManager } from './common.js'
13
7
 
14
8
  export const validateSchema = (schema: LiveStoreSchema, schemaManager: SchemaManager) => {
15
9
  // Validate mutation definitions
@@ -64,45 +58,3 @@ export const validateMutationDef = (
64
58
  mutationName: mutationDef.name,
65
59
  })
66
60
  }
67
-
68
- interface SchemaManager {
69
- getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>
70
-
71
- setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void
72
- }
73
-
74
- type MutationDefInfo = {
75
- mutationName: string
76
- schemaHash: number
77
- }
78
-
79
- export const makeSchemaManager = (db: InMemoryDatabase): SchemaManager => {
80
- migrateTable({
81
- db,
82
- otelContext: otel.context.active(),
83
- tableAst: schemaMutationsMetaTable.sqliteDef.ast,
84
- behaviour: 'create-if-not-exists',
85
- })
86
-
87
- return {
88
- getMutationDefInfos: () => {
89
- const schemaMutationsMetaRows = dbSelect<SchemaMutationsMetaRow>(
90
- db,
91
- sql`SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`,
92
- )
93
-
94
- return schemaMutationsMetaRows
95
- },
96
- setMutationDefInfo: (info) => {
97
- dbExecute(
98
- db,
99
- sql`INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`,
100
- {
101
- mutationName: info.mutationName,
102
- schemaHash: info.schemaHash,
103
- updatedAt: new Date().toISOString(),
104
- },
105
- )
106
- },
107
- }
108
- }