@rocicorp/zero 0.25.0-canary.3 → 0.25.0-canary.4
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/out/{chunk-SRLXXPNB.js → chunk-3KJ5OEIB.js} +4 -4
- package/out/chunk-ASRS2LFV.js +35 -0
- package/out/chunk-ASRS2LFV.js.map +7 -0
- package/out/{chunk-RYFBHAD4.js → chunk-ECUMGQGC.js} +4 -17
- package/out/chunk-ECUMGQGC.js.map +7 -0
- package/out/{chunk-U2KJIWVC.js → chunk-EZM3XBAB.js} +2 -47
- package/out/chunk-EZM3XBAB.js.map +7 -0
- package/out/{chunk-IWL6EEA6.js → chunk-HE4M4K7Q.js} +585 -71
- package/out/chunk-HE4M4K7Q.js.map +7 -0
- package/out/{chunk-JKP7HDC6.js → chunk-TAUDS4QP.js} +48 -7
- package/out/chunk-TAUDS4QP.js.map +7 -0
- package/out/{chunk-5H7WNLPK.js → chunk-ZZXMKAAG.js} +2 -2
- package/out/expo-sqlite.js +4 -4
- package/out/{lazy-inspector-4CO3DXP5.js → lazy-inspector-XLKVABX2.js} +6 -6
- package/out/op-sqlite.js +3 -3
- package/out/react-native.js +4 -4
- package/out/react.js +4 -4
- package/out/replicache/src/kv/sqlite-store.d.ts +1 -7
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/replicache/src/sqlite.d.ts +1 -1
- package/out/replicache/src/sqlite.d.ts.map +1 -1
- package/out/solid.js +5 -5
- package/out/sqlite.js +3 -5
- package/out/zero/package.json +1 -1
- package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +16 -2
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.js +26 -13
- package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.js +13 -0
- package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +33 -0
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero.js +6 -7
- package/package.json +1 -1
- package/out/chunk-HYS7YLNL.js +0 -575
- package/out/chunk-HYS7YLNL.js.map +0 -7
- package/out/chunk-IWL6EEA6.js.map +0 -7
- package/out/chunk-JKP7HDC6.js.map +0 -7
- package/out/chunk-RYFBHAD4.js.map +0 -7
- package/out/chunk-U2KJIWVC.js.map +0 -7
- /package/out/{chunk-SRLXXPNB.js.map → chunk-3KJ5OEIB.js.map} +0 -0
- /package/out/{chunk-5H7WNLPK.js.map → chunk-ZZXMKAAG.js.map} +0 -0
- /package/out/{lazy-inspector-4CO3DXP5.js.map → lazy-inspector-XLKVABX2.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SQLiteStore,
|
|
3
3
|
dropStore
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ECUMGQGC.js";
|
|
5
5
|
|
|
6
6
|
// ../replicache/src/kv/expo-sqlite/store.ts
|
|
7
7
|
import {
|
|
@@ -61,4 +61,4 @@ var ExpoSQLiteDatabase = class {
|
|
|
61
61
|
export {
|
|
62
62
|
expoSQLiteStoreProvider
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-ZZXMKAAG.js.map
|
package/out/expo-sqlite.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
expoSQLiteStoreProvider
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-ZZXMKAAG.js";
|
|
4
|
+
import "./chunk-ECUMGQGC.js";
|
|
5
|
+
import "./chunk-ASRS2LFV.js";
|
|
6
|
+
import "./chunk-EZM3XBAB.js";
|
|
7
7
|
import "./chunk-424PT5DM.js";
|
|
8
8
|
export {
|
|
9
9
|
expoSQLiteStoreProvider
|
|
@@ -18,13 +18,13 @@ import {
|
|
|
18
18
|
normalizeTTL,
|
|
19
19
|
readFromHash,
|
|
20
20
|
test,
|
|
21
|
-
valita_exports
|
|
22
|
-
|
|
21
|
+
valita_exports,
|
|
22
|
+
withRead
|
|
23
|
+
} from "./chunk-TAUDS4QP.js";
|
|
23
24
|
import {
|
|
24
25
|
assert,
|
|
25
|
-
unreachable
|
|
26
|
-
|
|
27
|
-
} from "./chunk-U2KJIWVC.js";
|
|
26
|
+
unreachable
|
|
27
|
+
} from "./chunk-EZM3XBAB.js";
|
|
28
28
|
import "./chunk-424PT5DM.js";
|
|
29
29
|
|
|
30
30
|
// ../zero-client/src/client/inspector/html-dialog-prompt.ts
|
|
@@ -572,4 +572,4 @@ export {
|
|
|
572
572
|
rpc,
|
|
573
573
|
serverVersion
|
|
574
574
|
};
|
|
575
|
-
//# sourceMappingURL=lazy-inspector-
|
|
575
|
+
//# sourceMappingURL=lazy-inspector-XLKVABX2.js.map
|
package/out/op-sqlite.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SQLiteStore,
|
|
3
3
|
dropStore
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-ECUMGQGC.js";
|
|
5
|
+
import "./chunk-ASRS2LFV.js";
|
|
6
|
+
import "./chunk-EZM3XBAB.js";
|
|
7
7
|
import "./chunk-424PT5DM.js";
|
|
8
8
|
|
|
9
9
|
// ../replicache/src/kv/op-sqlite/types.ts
|
package/out/react-native.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "./chunk-AFADJQ2O.js";
|
|
2
2
|
import {
|
|
3
3
|
expoSQLiteStoreProvider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZZXMKAAG.js";
|
|
5
5
|
import {
|
|
6
6
|
SQLiteStore,
|
|
7
7
|
clearAllNamedStoresForTesting,
|
|
8
8
|
dropStore
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-ECUMGQGC.js";
|
|
10
|
+
import "./chunk-ASRS2LFV.js";
|
|
11
|
+
import "./chunk-EZM3XBAB.js";
|
|
12
12
|
import "./chunk-424PT5DM.js";
|
|
13
13
|
|
|
14
14
|
// src/react-native.ts
|
package/out/react.js
CHANGED
|
@@ -5,15 +5,15 @@ import {
|
|
|
5
5
|
Zero,
|
|
6
6
|
bindingsForZero,
|
|
7
7
|
connection_status_enum_exports
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HE4M4K7Q.js";
|
|
9
|
+
import "./chunk-ASRS2LFV.js";
|
|
10
10
|
import {
|
|
11
11
|
DEFAULT_TTL_MS,
|
|
12
12
|
stringCompare
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-TAUDS4QP.js";
|
|
14
14
|
import {
|
|
15
15
|
hasOwn
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EZM3XBAB.js";
|
|
17
17
|
import "./chunk-424PT5DM.js";
|
|
18
18
|
|
|
19
19
|
// ../zero-react/src/components/zero-inspector.tsx
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
2
|
-
import type { Read, Store,
|
|
2
|
+
import type { Read, Store, Write } from './store.ts';
|
|
3
3
|
/**
|
|
4
4
|
* A SQLite prepared statement.
|
|
5
5
|
*
|
|
@@ -81,10 +81,4 @@ export declare class SQLiteWrite implements Write {
|
|
|
81
81
|
}
|
|
82
82
|
export declare function clearAllNamedStoresForTesting(): void;
|
|
83
83
|
export declare function dropStore(name: string, createDelegate: (filename: string, opts?: SQLiteStoreOptions) => SQLiteDatabase): Promise<void>;
|
|
84
|
-
/**
|
|
85
|
-
* Drops all databases associated with a store provider.
|
|
86
|
-
*
|
|
87
|
-
* TEMPORARY: Only used for testing.
|
|
88
|
-
*/
|
|
89
|
-
export declare function dropAllProviderDatabases(storeProvider: StoreProvider): Promise<void>;
|
|
90
84
|
//# sourceMappingURL=sqlite-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../../../../replicache/src/kv/sqlite-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../../../../replicache/src/kv/sqlite-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { clearAllNamedStoresForTesting,
|
|
1
|
+
export { clearAllNamedStoresForTesting, dropStore, SQLiteStore, type PreparedStatement, type SQLiteDatabase, type SQLiteStoreOptions, } from './kv/sqlite-store.ts';
|
|
2
2
|
export type { CreateStore, DropStore, Read, Store, StoreProvider, Write, } from './kv/store.ts';
|
|
3
3
|
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../replicache/src/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../replicache/src/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,SAAS,EACT,IAAI,EACJ,KAAK,EACL,aAAa,EACb,KAAK,GACN,MAAM,eAAe,CAAC"}
|
package/out/solid.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-3KJ5OEIB.js";
|
|
2
2
|
import {
|
|
3
3
|
Zero,
|
|
4
4
|
applyChange,
|
|
5
5
|
bindingsForZero,
|
|
6
6
|
connection_status_enum_exports,
|
|
7
7
|
idSymbol
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HE4M4K7Q.js";
|
|
9
|
+
import "./chunk-ASRS2LFV.js";
|
|
10
10
|
import {
|
|
11
11
|
DEFAULT_TTL_MS
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-TAUDS4QP.js";
|
|
13
|
+
import "./chunk-EZM3XBAB.js";
|
|
14
14
|
import "./chunk-424PT5DM.js";
|
|
15
15
|
|
|
16
16
|
// ../zero-solid/src/use-query.ts
|
package/out/sqlite.js
CHANGED
|
@@ -2,16 +2,14 @@ import "./chunk-AFADJQ2O.js";
|
|
|
2
2
|
import {
|
|
3
3
|
SQLiteStore,
|
|
4
4
|
clearAllNamedStoresForTesting,
|
|
5
|
-
dropAllProviderDatabases,
|
|
6
5
|
dropStore
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-ECUMGQGC.js";
|
|
7
|
+
import "./chunk-ASRS2LFV.js";
|
|
8
|
+
import "./chunk-EZM3XBAB.js";
|
|
10
9
|
import "./chunk-424PT5DM.js";
|
|
11
10
|
export {
|
|
12
11
|
SQLiteStore,
|
|
13
12
|
clearAllNamedStoresForTesting,
|
|
14
|
-
dropAllProviderDatabases,
|
|
15
13
|
dropStore
|
|
16
14
|
};
|
|
17
15
|
//# sourceMappingURL=sqlite.js.map
|
package/out/zero/package.json
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { LogContext } from '@rocicorp/logger';
|
|
2
2
|
import { type LiteTypeString } from '../types/lite.ts';
|
|
3
3
|
import { type ColumnSpec, type IndexSpec, type LiteIndexSpec, type LiteTableSpec, type TableSpec } from './specs.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Determines if a PostgreSQL column is an enum type.
|
|
6
|
+
* This checks both the element type class (for arrays of enums) and the main type class.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isEnumColumn(spec: Pick<ColumnSpec, 'pgTypeClass' | 'elemPgTypeClass'>): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Determines if a PostgreSQL column is an array type.
|
|
11
|
+
* In PostgreSQL's system, array columns have a non-null elemPgTypeClass.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isArrayColumn(spec: Pick<ColumnSpec, 'elemPgTypeClass'>): boolean;
|
|
4
14
|
export declare function warnIfDataTypeSupported(lc: LogContext, liteTypeString: LiteTypeString, table: string, column: string): void;
|
|
5
15
|
export declare function mapPostgresToLiteDefault(table: string, column: string, dataType: string, defaultExpression: string | null | undefined): string | null;
|
|
6
16
|
export declare function mapPostgresToLiteColumn(table: string, column: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-to-lite.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/db/pg-to-lite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pg-to-lite.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/db/pg-to-lite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,iBAAiB,CAAC,GACxD,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,GACxC,OAAO,CAET;AAaD,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,QAUf;AAkBD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,iBAuB7C;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,EACxC,aAAa,CAAC,EAAE,gBAAgB,GAC/B,UAAU,CAiCZ;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,SAAS,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,aAAa,CAoBf;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAOtE;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,mCAAmC;CACjD"}
|
|
@@ -3,6 +3,20 @@ import { liteTypeString, liteTypeToZqlValueType, upstreamDataType, } from "../ty
|
|
|
3
3
|
import { liteTableName } from "../types/names.js";
|
|
4
4
|
import * as PostgresTypeClass from "./postgres-type-class-enum.js";
|
|
5
5
|
import {} from "./specs.js";
|
|
6
|
+
/**
|
|
7
|
+
* Determines if a PostgreSQL column is an enum type.
|
|
8
|
+
* This checks both the element type class (for arrays of enums) and the main type class.
|
|
9
|
+
*/
|
|
10
|
+
export function isEnumColumn(spec) {
|
|
11
|
+
return (spec.elemPgTypeClass ?? spec.pgTypeClass) === PostgresTypeClass.Enum;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Determines if a PostgreSQL column is an array type.
|
|
15
|
+
* In PostgreSQL's system, array columns have a non-null elemPgTypeClass.
|
|
16
|
+
*/
|
|
17
|
+
export function isArrayColumn(spec) {
|
|
18
|
+
return spec.elemPgTypeClass !== null && spec.elemPgTypeClass !== undefined;
|
|
19
|
+
}
|
|
6
20
|
function zeroVersionColumnSpec(defaultVersion) {
|
|
7
21
|
return {
|
|
8
22
|
pos: Number.MAX_SAFE_INTEGER, // i.e. last
|
|
@@ -52,11 +66,11 @@ export function mapPostgresToLiteDefault(table, column, dataType, defaultExpress
|
|
|
52
66
|
return match[1];
|
|
53
67
|
}
|
|
54
68
|
export function mapPostgresToLiteColumn(table, column, ignoreDefault) {
|
|
55
|
-
const { pos, dataType,
|
|
69
|
+
const { pos, dataType, notNull, dflt, elemPgTypeClass = null } = column.spec;
|
|
56
70
|
// PostgreSQL includes [] in dataType for array types (e.g., 'int4[]',
|
|
57
71
|
// 'int4[][]'). liteTypeString() appends attributes:
|
|
58
72
|
// "varchar[]|NOT_NULL|TEXT_ARRAY", "my_enum[][]|TEXT_ENUM|TEXT_ARRAY"
|
|
59
|
-
const liteType = liteTypeString(dataType, notNull, (
|
|
73
|
+
const liteType = liteTypeString(dataType, notNull, isEnumColumn(column.spec), isArrayColumn(column.spec));
|
|
60
74
|
return {
|
|
61
75
|
pos,
|
|
62
76
|
dataType: liteType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-to-lite.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/pg-to-lite.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAMN,MAAM,YAAY,CAAC;AAEpB,SAAS,qBAAqB,CAAC,cAAkC;IAC/D,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,YAAY;QAC1C,sBAAsB,EAAE,IAAI;QAC5B,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,GAAG;QACpD,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,EAAc,EACd,cAA8B,EAC9B,KAAa,EACb,MAAc;IAEd,IAAI,sBAAsB,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QACzD,EAAE,CAAC,IAAI,EAAE,CACP,+CAA+C,gBAAgB,CAC7D,cAAc,CACf,gBAAgB;YACf,QAAQ,KAAK,MAAM,MAAM,6CAA6C,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,kDAAkD;AAClD,MAAM,6BAA6B,GAAG,WAAW,CAAC,CAAC,oCAAoC;AAEvF,mEAAmE;AACnE,MAAM,kBAAkB,GAAG,oDAAoD,CAAC;AAEhF,4EAA4E;AAC5E,6EAA6E;AAC7E,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,mBAAmB;AACnB,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAElD,wBAAwB;AACxB,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,iBAA4C;IAE5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,6BAA6B,CACrC,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,6BAA6B,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1D,IAAI,sBAAsB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,6BAA6B,CACrC,iCAAiC,KAAK,IAAI,MAAM,KAAK,iBAAiB,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,MAAwC,EACxC,aAAgC;IAEhC,MAAM,
|
|
1
|
+
{"version":3,"file":"pg-to-lite.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/pg-to-lite.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAMN,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAyD;IAEzD,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAyC;IAEzC,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,qBAAqB,CAAC,cAAkC;IAC/D,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,YAAY;QAC1C,sBAAsB,EAAE,IAAI;QAC5B,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,GAAG;QACpD,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,EAAc,EACd,cAA8B,EAC9B,KAAa,EACb,MAAc;IAEd,IAAI,sBAAsB,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QACzD,EAAE,CAAC,IAAI,EAAE,CACP,+CAA+C,gBAAgB,CAC7D,cAAc,CACf,gBAAgB;YACf,QAAQ,KAAK,MAAM,MAAM,6CAA6C,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,kDAAkD;AAClD,MAAM,6BAA6B,GAAG,WAAW,CAAC,CAAC,oCAAoC;AAEvF,mEAAmE;AACnE,MAAM,kBAAkB,GAAG,oDAAoD,CAAC;AAEhF,4EAA4E;AAC5E,6EAA6E;AAC7E,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,mBAAmB;AACnB,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAElD,wBAAwB;AACxB,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,iBAA4C;IAE5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,6BAA6B,CACrC,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,6BAA6B,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1D,IAAI,sBAAsB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,6BAA6B,CACrC,iCAAiC,KAAK,IAAI,MAAM,KAAK,iBAAiB,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,MAAwC,EACxC,aAAgC;IAEhC,MAAM,EAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,EAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3E,sEAAsE;IACtE,oDAAoD;IACpD,sEAAsE;IACtE,MAAM,QAAQ,GAAG,cAAc,CAC7B,QAAQ,EACR,OAAO,EACP,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EACzB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAC3B,CAAC;IAEF,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,QAAQ;QAClB,sBAAsB,EAAE,IAAI;QAC5B,6EAA6E;QAC7E,kDAAkD;QAClD,8DAA8D;QAC9D,+DAA+D;QAC/D,kFAAkF;QAClF,gFAAgF;QAChF,8BAA8B;QAC9B,OAAO,EAAE,KAAK;QACd,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,EACF,aAAa,KAAK,gBAAgB;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;QAClE,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,CAAY,EACZ,cAAuB;IAEvB,gEAAgE;IAChE,qEAAqE;IACrE,MAAM,EAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAC,GAAG,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO;QACL,GAAG,QAAQ;QACX,IAAI;QACJ,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC7C,GAAG;gBACH,uDAAuD;gBACvD,4CAA4C;gBAC5C,uBAAuB,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,EAAE,gBAAgB,CAAC;aACnE,CAAC,CACH;YACD,CAAC,wBAAwB,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC;SAClE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAgB;IACrD,MAAM,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,EAAC,GAAG,KAAK,CAAC;IACtD,OAAO;QACL,SAAS,EAAE,aAAa,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;QACnD,IAAI,EAAE,aAAa,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;QACnC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,GAAG,+BAA+B,CAAC;CACjD"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* plain type names while preserving all necessary upstream type information.
|
|
10
10
|
*/
|
|
11
11
|
import type { Database } from '../../../../zqlite/src/db.ts';
|
|
12
|
-
import type { LiteTableSpec } from '../../db/specs.ts';
|
|
12
|
+
import type { ColumnSpec, LiteTableSpec } from '../../db/specs.ts';
|
|
13
13
|
/**
|
|
14
14
|
* Structured column metadata, replacing the old pipe-delimited string format.
|
|
15
15
|
*/
|
|
@@ -38,8 +38,8 @@ export declare class ColumnMetadataStore {
|
|
|
38
38
|
* Returns `undefined` if the metadata table doesn't exist yet.
|
|
39
39
|
*/
|
|
40
40
|
static getInstance(db: Database): ColumnMetadataStore | undefined;
|
|
41
|
-
insert(tableName: string, columnName: string,
|
|
42
|
-
update(tableName: string, oldColumnName: string, newColumnName: string,
|
|
41
|
+
insert(tableName: string, columnName: string, spec: ColumnSpec): void;
|
|
42
|
+
update(tableName: string, oldColumnName: string, newColumnName: string, spec: ColumnSpec): void;
|
|
43
43
|
deleteColumn(tableName: string, columnName: string): void;
|
|
44
44
|
deleteTable(tableName: string): void;
|
|
45
45
|
renameTable(oldTableName: string, newTableName: string): void;
|
|
@@ -62,4 +62,11 @@ export declare function liteTypeStringToMetadata(liteTypeString: string, charact
|
|
|
62
62
|
* This is a compatibility helper for the migration period.
|
|
63
63
|
*/
|
|
64
64
|
export declare function metadataToLiteTypeString(metadata: ColumnMetadata): string;
|
|
65
|
+
/**
|
|
66
|
+
* Converts PostgreSQL ColumnSpec to structured ColumnMetadata.
|
|
67
|
+
* Used during replication to populate the metadata table from upstream schema.
|
|
68
|
+
*
|
|
69
|
+
* Uses the same logic as liteTypeString() and mapPostgresToLiteColumn() via shared helpers.
|
|
70
|
+
*/
|
|
71
|
+
export declare function pgColumnSpecToMetadata(spec: ColumnSpec): ColumnMetadata;
|
|
65
72
|
//# sourceMappingURL=column-metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-metadata.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/column-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"column-metadata.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/column-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AASjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAUD,eAAO,MAAM,4BAA4B,0UAWxC,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,mBAAmB;;IAY9B,OAAO;IAqDP;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,GAAG,SAAS;IAoBjE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAqBrE,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,UAAU,GACf,IAAI;IAcP,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAI7D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAkB5E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAmBxD,QAAQ,IAAI,OAAO;IAKnB;;;OAGG;IACH,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;CAW1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,cAAc,CAiBhB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAQvE"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* This table stores that metadata separately, allowing SQLite columns to use
|
|
9
9
|
* plain type names while preserving all necessary upstream type information.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { isArrayColumn, isEnumColumn } from "../../db/pg-to-lite.js";
|
|
12
|
+
import { upstreamDataType, nullableUpstream, isEnum as checkIsEnum, isArray as checkIsArray, liteTypeString, } from "../../types/lite.js";
|
|
12
13
|
export const CREATE_COLUMN_METADATA_TABLE = `
|
|
13
14
|
CREATE TABLE "_zero.column_metadata" (
|
|
14
15
|
table_name TEXT NOT NULL,
|
|
@@ -102,10 +103,15 @@ export class ColumnMetadataStore {
|
|
|
102
103
|
}
|
|
103
104
|
return instance;
|
|
104
105
|
}
|
|
105
|
-
insert(tableName, columnName,
|
|
106
|
+
insert(tableName, columnName, spec) {
|
|
107
|
+
const metadata = pgColumnSpecToMetadata(spec);
|
|
108
|
+
this.#insertMetadata(tableName, columnName, metadata);
|
|
109
|
+
}
|
|
110
|
+
#insertMetadata(tableName, columnName, metadata) {
|
|
106
111
|
this.#insertStmt.run(tableName, columnName, metadata.upstreamType, metadata.isNotNull ? 1 : 0, metadata.isEnum ? 1 : 0, metadata.isArray ? 1 : 0, metadata.characterMaxLength ?? null);
|
|
107
112
|
}
|
|
108
|
-
update(tableName, oldColumnName, newColumnName,
|
|
113
|
+
update(tableName, oldColumnName, newColumnName, spec) {
|
|
114
|
+
const metadata = pgColumnSpecToMetadata(spec);
|
|
109
115
|
this.#updateStmt.run(newColumnName, metadata.upstreamType, metadata.isNotNull ? 1 : 0, metadata.isEnum ? 1 : 0, metadata.isArray ? 1 : 0, metadata.characterMaxLength ?? null, tableName, oldColumnName);
|
|
110
116
|
}
|
|
111
117
|
deleteColumn(tableName, columnName) {
|
|
@@ -156,7 +162,7 @@ export class ColumnMetadataStore {
|
|
|
156
162
|
for (const table of tables) {
|
|
157
163
|
for (const [columnName, columnSpec] of Object.entries(table.columns)) {
|
|
158
164
|
const metadata = liteTypeStringToMetadata(columnSpec.dataType, columnSpec.characterMaximumLength);
|
|
159
|
-
this
|
|
165
|
+
this.#insertMetadata(table.name, columnName, metadata);
|
|
160
166
|
}
|
|
161
167
|
}
|
|
162
168
|
}
|
|
@@ -185,14 +191,21 @@ export function liteTypeStringToMetadata(liteTypeString, characterMaxLength) {
|
|
|
185
191
|
* This is a compatibility helper for the migration period.
|
|
186
192
|
*/
|
|
187
193
|
export function metadataToLiteTypeString(metadata) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
return liteTypeString(metadata.upstreamType, metadata.isNotNull, metadata.isEnum, metadata.isArray);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Converts PostgreSQL ColumnSpec to structured ColumnMetadata.
|
|
198
|
+
* Used during replication to populate the metadata table from upstream schema.
|
|
199
|
+
*
|
|
200
|
+
* Uses the same logic as liteTypeString() and mapPostgresToLiteColumn() via shared helpers.
|
|
201
|
+
*/
|
|
202
|
+
export function pgColumnSpecToMetadata(spec) {
|
|
203
|
+
return {
|
|
204
|
+
upstreamType: spec.dataType,
|
|
205
|
+
isNotNull: spec.notNull ?? false,
|
|
206
|
+
isEnum: isEnumColumn(spec),
|
|
207
|
+
isArray: isArrayColumn(spec),
|
|
208
|
+
characterMaxLength: spec.characterMaximumLength ?? null,
|
|
209
|
+
};
|
|
197
210
|
}
|
|
198
211
|
//# sourceMappingURL=column-metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-metadata.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/column-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"column-metadata.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/column-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replica-schema.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/replica-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"replica-schema.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/replica-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,4BAA4B,CAAC;AAYpC,wBAAsB,WAAW,CAC/B,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,iBAgBf;AAED,eAAO,MAAM,yBAAyB,EAAE,uBA4BvC,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { SqliteError } from '@rocicorp/zero-sqlite3';
|
|
2
|
+
import { must } from "../../../../shared/src/must.js";
|
|
2
3
|
import { runSchemaMigrations, } from "../../db/migration-lite.js";
|
|
4
|
+
import { listTables } from "../../db/lite-tables.js";
|
|
3
5
|
import { AutoResetSignal } from "../change-streamer/schema/tables.js";
|
|
4
6
|
import { CREATE_RUNTIME_EVENTS_TABLE, recordEvent, } from "../replicator/schema/replication-state.js";
|
|
7
|
+
import { ColumnMetadataStore, CREATE_COLUMN_METADATA_TABLE, } from "./column-metadata.js";
|
|
5
8
|
export async function initReplica(log, debugName, dbPath, initialSync) {
|
|
6
9
|
const setupMigration = {
|
|
7
10
|
migrateSchema: (log, tx) => initialSync(log, tx),
|
|
@@ -42,5 +45,15 @@ export const schemaVersionMigrationMap = {
|
|
|
42
45
|
recordEvent(db, 'upgrade');
|
|
43
46
|
},
|
|
44
47
|
},
|
|
48
|
+
6: {
|
|
49
|
+
migrateSchema: (_, db) => {
|
|
50
|
+
db.exec(CREATE_COLUMN_METADATA_TABLE);
|
|
51
|
+
},
|
|
52
|
+
migrateData: (_, db) => {
|
|
53
|
+
const store = ColumnMetadataStore.getInstance(db);
|
|
54
|
+
const tables = listTables(db);
|
|
55
|
+
must(store).populateFromExistingTables(tables);
|
|
56
|
+
},
|
|
57
|
+
},
|
|
45
58
|
};
|
|
46
59
|
//# sourceMappingURL=replica-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replica-schema.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/replica-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"replica-schema.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-source/replica-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,qCAAqC,CAAC;AACpE,OAAO,EACL,2BAA2B,EAC3B,WAAW,GACZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAe,EACf,SAAiB,EACjB,MAAc,EACd,WAA4D;IAE5D,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC;QAChD,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,mBAAmB,CACvB,GAAG,EACH,SAAS,EACT,MAAM,EACN,cAAc,EACd,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC5D,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAe,EACf,SAAiB,EACjB,MAAc;IAEd,MAAM,mBAAmB,CACvB,GAAG,EACH,SAAS,EACT,MAAM;IACN,yCAAyC;IACzC;QACE,aAAa,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;QACJ,CAAC;KACF,EACD,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAA4B;IAChE,oEAAoE;IACpE,CAAC,EAAE;QACD,aAAa,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,eAAe,CAAC,iCAAiC,CAAC,CAAC;QAC/D,CAAC;QACD,cAAc,EAAE,CAAC;KAClB;IAED,CAAC,EAAE;QACD,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACvB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACvC,CAAC;QACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACrB,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7B,CAAC;KACF;IAED,CAAC,EAAE;QACD,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACvB,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACxC,CAAC;QACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAsBjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAsBjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AA8B5D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAYpD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,cAAc,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;;gBAexB,EAAE,EAAE,eAAe,EACnB,IAAI,EAAE,mBAAmB,EACzB,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAqBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CACZ,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,gBAAgB,GAC3B,YAAY,GAAG,IAAI;CA+IvB"}
|
|
@@ -6,6 +6,7 @@ import { must } from "../../../../shared/src/must.js";
|
|
|
6
6
|
import { createLiteIndexStatement, createLiteTableStatement, liteColumnDef, } from "../../db/create.js";
|
|
7
7
|
import { computeZqlSpecs, listIndexes, listTables, } from "../../db/lite-tables.js";
|
|
8
8
|
import { mapPostgresToLite, mapPostgresToLiteColumn, mapPostgresToLiteIndex, } from "../../db/pg-to-lite.js";
|
|
9
|
+
import { ColumnMetadataStore } from "../change-source/column-metadata.js";
|
|
9
10
|
import { JSON_PARSED, liteRow, } from "../../types/lite.js";
|
|
10
11
|
import { liteTableName } from "../../types/names.js";
|
|
11
12
|
import { id } from "../../types/sql.js";
|
|
@@ -361,6 +362,13 @@ class TransactionProcessor {
|
|
|
361
362
|
processCreateTable(create) {
|
|
362
363
|
const table = mapPostgresToLite(create.spec);
|
|
363
364
|
this.#db.db.exec(createLiteTableStatement(table));
|
|
365
|
+
// Write to metadata table
|
|
366
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
367
|
+
if (store) {
|
|
368
|
+
for (const [colName, colSpec] of Object.entries(create.spec.columns)) {
|
|
369
|
+
store.insert(table.name, colName, colSpec);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
364
372
|
this.#logResetOp(table.name);
|
|
365
373
|
this.#lc.info?.(create.tag, table.name);
|
|
366
374
|
}
|
|
@@ -368,6 +376,11 @@ class TransactionProcessor {
|
|
|
368
376
|
const oldName = liteTableName(rename.old);
|
|
369
377
|
const newName = liteTableName(rename.new);
|
|
370
378
|
this.#db.db.exec(`ALTER TABLE ${id(oldName)} RENAME TO ${id(newName)}`);
|
|
379
|
+
// Rename in metadata table
|
|
380
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
381
|
+
if (store) {
|
|
382
|
+
store.renameTable(oldName, newName);
|
|
383
|
+
}
|
|
371
384
|
this.#bumpVersions(newName);
|
|
372
385
|
this.#logResetOp(oldName);
|
|
373
386
|
this.#lc.info?.(rename.tag, oldName, newName);
|
|
@@ -377,6 +390,11 @@ class TransactionProcessor {
|
|
|
377
390
|
const { name } = msg.column;
|
|
378
391
|
const spec = mapPostgresToLiteColumn(table, msg.column);
|
|
379
392
|
this.#db.db.exec(`ALTER TABLE ${id(table)} ADD ${id(name)} ${liteColumnDef(spec)}`);
|
|
393
|
+
// Write to metadata table
|
|
394
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
395
|
+
if (store) {
|
|
396
|
+
store.insert(table, name, msg.column.spec);
|
|
397
|
+
}
|
|
380
398
|
this.#bumpVersions(table);
|
|
381
399
|
this.#lc.info?.(msg.tag, table, msg.column);
|
|
382
400
|
}
|
|
@@ -425,6 +443,11 @@ class TransactionProcessor {
|
|
|
425
443
|
if (oldName !== newName) {
|
|
426
444
|
this.#db.db.exec(`ALTER TABLE ${id(table)} RENAME ${id(oldName)} TO ${id(newName)}`);
|
|
427
445
|
}
|
|
446
|
+
// Update metadata table
|
|
447
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
448
|
+
if (store) {
|
|
449
|
+
store.update(table, msg.old.name, msg.new.name, msg.new.spec);
|
|
450
|
+
}
|
|
428
451
|
this.#bumpVersions(table);
|
|
429
452
|
this.#lc.info?.(msg.tag, table, msg.new);
|
|
430
453
|
}
|
|
@@ -432,12 +455,22 @@ class TransactionProcessor {
|
|
|
432
455
|
const table = liteTableName(msg.table);
|
|
433
456
|
const { column } = msg;
|
|
434
457
|
this.#db.db.exec(`ALTER TABLE ${id(table)} DROP ${id(column)}`);
|
|
458
|
+
// Delete from metadata table
|
|
459
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
460
|
+
if (store) {
|
|
461
|
+
store.deleteColumn(table, column);
|
|
462
|
+
}
|
|
435
463
|
this.#bumpVersions(table);
|
|
436
464
|
this.#lc.info?.(msg.tag, table, column);
|
|
437
465
|
}
|
|
438
466
|
processDropTable(drop) {
|
|
439
467
|
const name = liteTableName(drop.id);
|
|
440
468
|
this.#db.db.exec(`DROP TABLE IF EXISTS ${id(name)}`);
|
|
469
|
+
// Delete from metadata table
|
|
470
|
+
const store = ColumnMetadataStore.getInstance(this.#db.db);
|
|
471
|
+
if (store) {
|
|
472
|
+
store.deleteTable(name);
|
|
473
|
+
}
|
|
441
474
|
this.#logResetOp(name);
|
|
442
475
|
this.#lc.info?.(drop.tag, name);
|
|
443
476
|
}
|