ai-database 2.1.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -1
- package/README.md +880 -669
- package/dist/actions.d.ts +2 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +1 -1
- package/dist/actions.js.map +1 -1
- package/dist/ai-promise-db.d.ts +49 -23
- package/dist/ai-promise-db.d.ts.map +1 -1
- package/dist/ai-promise-db.js +91 -63
- package/dist/ai-promise-db.js.map +1 -1
- package/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +38 -30
- package/dist/authorization.js.map +1 -1
- package/dist/cascade-orchestrator.d.ts +404 -0
- package/dist/cascade-orchestrator.d.ts.map +1 -0
- package/dist/cascade-orchestrator.js +828 -0
- package/dist/cascade-orchestrator.js.map +1 -0
- package/dist/cascade-write-strategy.d.ts +584 -0
- package/dist/cascade-write-strategy.d.ts.map +1 -0
- package/dist/cascade-write-strategy.js +590 -0
- package/dist/cascade-write-strategy.js.map +1 -0
- package/dist/ch-adapter.d.ts +358 -0
- package/dist/ch-adapter.d.ts.map +1 -0
- package/dist/ch-adapter.js +929 -0
- package/dist/ch-adapter.js.map +1 -0
- package/dist/client/index.d.ts +42 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +43 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client.d.ts +266 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +81 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +64 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +52 -2
- package/dist/constants.js.map +1 -1
- package/dist/dataloader.d.ts +99 -0
- package/dist/dataloader.d.ts.map +1 -0
- package/dist/dataloader.js +225 -0
- package/dist/dataloader.js.map +1 -0
- package/dist/db-provider-port.d.ts +501 -0
- package/dist/db-provider-port.d.ts.map +1 -0
- package/dist/db-provider-port.js +113 -0
- package/dist/db-provider-port.js.map +1 -0
- package/dist/digital-objects-provider.d.ts +49 -0
- package/dist/digital-objects-provider.d.ts.map +1 -0
- package/dist/digital-objects-provider.js +55 -0
- package/dist/digital-objects-provider.js.map +1 -0
- package/dist/do-sqlite-adapter.d.ts +402 -0
- package/dist/do-sqlite-adapter.d.ts.map +1 -0
- package/dist/do-sqlite-adapter.js +745 -0
- package/dist/do-sqlite-adapter.js.map +1 -0
- package/dist/docs-rels/custom-types.d.ts +134 -0
- package/dist/docs-rels/custom-types.d.ts.map +1 -0
- package/dist/docs-rels/custom-types.js +70 -0
- package/dist/docs-rels/custom-types.js.map +1 -0
- package/dist/docs-rels/index.d.ts +16 -0
- package/dist/docs-rels/index.d.ts.map +1 -0
- package/dist/docs-rels/index.js +16 -0
- package/dist/docs-rels/index.js.map +1 -0
- package/dist/docs-rels/migrations/index.d.ts +30 -0
- package/dist/docs-rels/migrations/index.d.ts.map +1 -0
- package/dist/docs-rels/migrations/index.js +128 -0
- package/dist/docs-rels/migrations/index.js.map +1 -0
- package/dist/docs-rels/schema.d.ts +2961 -0
- package/dist/docs-rels/schema.d.ts.map +1 -0
- package/dist/docs-rels/schema.js +244 -0
- package/dist/docs-rels/schema.js.map +1 -0
- package/dist/durable-clickhouse.d.ts.map +1 -1
- package/dist/durable-clickhouse.js +16 -13
- package/dist/durable-clickhouse.js.map +1 -1
- package/dist/durable-promise.d.ts.map +1 -1
- package/dist/durable-promise.js +34 -15
- package/dist/durable-promise.js.map +1 -1
- package/dist/errors.d.ts +127 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +210 -0
- package/dist/errors.js.map +1 -0
- package/dist/eventbridge.d.ts +117 -0
- package/dist/eventbridge.d.ts.map +1 -0
- package/dist/eventbridge.js +238 -0
- package/dist/eventbridge.js.map +1 -0
- package/dist/events.d.ts +2 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/execution-queue.d.ts.map +1 -1
- package/dist/execution-queue.js +4 -5
- package/dist/execution-queue.js.map +1 -1
- package/dist/index.d.ts +35 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -6
- package/dist/index.js.map +1 -1
- package/dist/linguistic.d.ts +3 -108
- package/dist/linguistic.d.ts.map +1 -1
- package/dist/linguistic.js +3 -372
- package/dist/linguistic.js.map +1 -1
- package/dist/logger.d.ts +132 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +137 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory-provider.d.ts +128 -0
- package/dist/memory-provider.d.ts.map +1 -1
- package/dist/memory-provider.js +592 -257
- package/dist/memory-provider.js.map +1 -1
- package/dist/pg-adapter.d.ts +424 -0
- package/dist/pg-adapter.d.ts.map +1 -0
- package/dist/pg-adapter.js +921 -0
- package/dist/pg-adapter.js.map +1 -0
- package/dist/pipelines-iceberg-emitter.d.ts +327 -0
- package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
- package/dist/pipelines-iceberg-emitter.js +351 -0
- package/dist/pipelines-iceberg-emitter.js.map +1 -0
- package/dist/provider-capabilities.d.ts +146 -0
- package/dist/provider-capabilities.d.ts.map +1 -0
- package/dist/provider-capabilities.js +214 -0
- package/dist/provider-capabilities.js.map +1 -0
- package/dist/rdb-provider-adapter.d.ts +195 -0
- package/dist/rdb-provider-adapter.d.ts.map +1 -0
- package/dist/rdb-provider-adapter.js +291 -0
- package/dist/rdb-provider-adapter.js.map +1 -0
- package/dist/schema/cascade.d.ts +48 -17
- package/dist/schema/cascade.d.ts.map +1 -1
- package/dist/schema/cascade.js +477 -278
- package/dist/schema/cascade.js.map +1 -1
- package/dist/schema/definition-caches.d.ts +24 -0
- package/dist/schema/definition-caches.d.ts.map +1 -0
- package/dist/schema/definition-caches.js +26 -0
- package/dist/schema/definition-caches.js.map +1 -0
- package/dist/schema/dependency-graph.d.ts +21 -109
- package/dist/schema/dependency-graph.d.ts.map +1 -1
- package/dist/schema/dependency-graph.js +25 -333
- package/dist/schema/dependency-graph.js.map +1 -1
- package/dist/schema/diff.d.ts +103 -0
- package/dist/schema/diff.d.ts.map +1 -0
- package/dist/schema/diff.js +329 -0
- package/dist/schema/diff.js.map +1 -0
- package/dist/schema/entity-operations.d.ts +99 -0
- package/dist/schema/entity-operations.d.ts.map +1 -0
- package/dist/schema/entity-operations.js +818 -0
- package/dist/schema/entity-operations.js.map +1 -0
- package/dist/schema/index.d.ts +28 -34
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +454 -521
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/migration.d.ts +205 -0
- package/dist/schema/migration.d.ts.map +1 -0
- package/dist/schema/migration.js +327 -0
- package/dist/schema/migration.js.map +1 -0
- package/dist/schema/nl-query-generator.d.ts +68 -0
- package/dist/schema/nl-query-generator.d.ts.map +1 -0
- package/dist/schema/nl-query-generator.js +362 -0
- package/dist/schema/nl-query-generator.js.map +1 -0
- package/dist/schema/nl-query.d.ts +65 -0
- package/dist/schema/nl-query.d.ts.map +1 -0
- package/dist/schema/nl-query.js +178 -0
- package/dist/schema/nl-query.js.map +1 -0
- package/dist/schema/parse.d.ts.map +1 -1
- package/dist/schema/parse.js +144 -89
- package/dist/schema/parse.js.map +1 -1
- package/dist/schema/provider.d.ts +37 -0
- package/dist/schema/provider.d.ts.map +1 -1
- package/dist/schema/provider.js +15 -7
- package/dist/schema/provider.js.map +1 -1
- package/dist/schema/resolve.d.ts +46 -5
- package/dist/schema/resolve.d.ts.map +1 -1
- package/dist/schema/resolve.js +237 -95
- package/dist/schema/resolve.js.map +1 -1
- package/dist/schema/search-utils.d.ts +76 -0
- package/dist/schema/search-utils.d.ts.map +1 -0
- package/dist/schema/search-utils.js +86 -0
- package/dist/schema/search-utils.js.map +1 -0
- package/dist/schema/seed.d.ts +53 -0
- package/dist/schema/seed.d.ts.map +1 -0
- package/dist/schema/seed.js +94 -0
- package/dist/schema/seed.js.map +1 -0
- package/dist/schema/semantic.d.ts +10 -0
- package/dist/schema/semantic.d.ts.map +1 -1
- package/dist/schema/semantic.js +192 -86
- package/dist/schema/semantic.js.map +1 -1
- package/dist/schema/sub-apis.d.ts +52 -0
- package/dist/schema/sub-apis.d.ts.map +1 -0
- package/dist/schema/sub-apis.js +216 -0
- package/dist/schema/sub-apis.js.map +1 -0
- package/dist/schema/system-entities.d.ts +42 -0
- package/dist/schema/system-entities.d.ts.map +1 -0
- package/dist/schema/system-entities.js +101 -0
- package/dist/schema/system-entities.js.map +1 -0
- package/dist/schema/types.d.ts +91 -9
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/union-fallback.d.ts.map +1 -1
- package/dist/schema/union-fallback.js +21 -15
- package/dist/schema/union-fallback.js.map +1 -1
- package/dist/schema/value-generators/ai.d.ts +54 -0
- package/dist/schema/value-generators/ai.d.ts.map +1 -0
- package/dist/schema/value-generators/ai.js +136 -0
- package/dist/schema/value-generators/ai.js.map +1 -0
- package/dist/schema/value-generators/index.d.ts +126 -0
- package/dist/schema/value-generators/index.d.ts.map +1 -0
- package/dist/schema/value-generators/index.js +219 -0
- package/dist/schema/value-generators/index.js.map +1 -0
- package/dist/schema/value-generators/placeholder.d.ts +52 -0
- package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
- package/dist/schema/value-generators/placeholder.js +328 -0
- package/dist/schema/value-generators/placeholder.js.map +1 -0
- package/dist/schema/value-generators/types.d.ts +116 -0
- package/dist/schema/value-generators/types.d.ts.map +1 -0
- package/dist/schema/value-generators/types.js +11 -0
- package/dist/schema/value-generators/types.js.map +1 -0
- package/dist/schema/version.d.ts +111 -0
- package/dist/schema/version.d.ts.map +1 -0
- package/dist/schema/version.js +190 -0
- package/dist/schema/version.js.map +1 -0
- package/dist/schema.d.ts +1095 -24
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2852 -40
- package/dist/schema.js.map +1 -1
- package/dist/semantic-vectors.d.ts +39 -0
- package/dist/semantic-vectors.d.ts.map +1 -0
- package/dist/semantic-vectors.js +334 -0
- package/dist/semantic-vectors.js.map +1 -0
- package/dist/semantic.d.ts +29 -1
- package/dist/semantic.d.ts.map +1 -1
- package/dist/semantic.js +26 -16
- package/dist/semantic.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +305 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tests.d.ts.map +1 -1
- package/dist/tests.js +30 -22
- package/dist/tests.js.map +1 -1
- package/dist/type-guards.d.ts +50 -5
- package/dist/type-guards.d.ts.map +1 -1
- package/dist/type-guards.js +87 -16
- package/dist/type-guards.js.map +1 -1
- package/dist/types.d.ts +33 -245
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +62 -72
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts +2 -5
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +65 -93
- package/dist/validation.js.map +1 -1
- package/dist/worker/db-provider.d.ts +168 -0
- package/dist/worker/db-provider.d.ts.map +1 -0
- package/dist/worker/db-provider.js +277 -0
- package/dist/worker/db-provider.js.map +1 -0
- package/dist/worker/index.d.ts +35 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +37 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker.d.ts +779 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +2786 -0
- package/dist/worker.js.map +1 -0
- package/package.json +46 -16
- package/src/docs-rels/migrations/0001-init.sql +125 -0
- package/LICENSE +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/schema/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAM/C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAgBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuChE;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA6B9F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,CAAC,CAUD"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Version Tracking
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for tracking schema versions, computing schema hashes,
|
|
5
|
+
* and storing/retrieving version metadata from the database.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Constants
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/** Entity type for storing schema metadata */
|
|
13
|
+
const SCHEMA_META_TYPE = 'SchemaMeta';
|
|
14
|
+
/** ID for the schema version record */
|
|
15
|
+
const SCHEMA_VERSION_ID = 'current';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Hash Computation
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Compute a deterministic hash of a database schema
|
|
21
|
+
*
|
|
22
|
+
* The hash is computed by:
|
|
23
|
+
* 1. Sorting entity names alphabetically
|
|
24
|
+
* 2. For each entity, sorting field names alphabetically
|
|
25
|
+
* 3. Creating a normalized JSON representation
|
|
26
|
+
* 4. Computing a hash of the JSON string
|
|
27
|
+
*
|
|
28
|
+
* This ensures the same schema always produces the same hash,
|
|
29
|
+
* regardless of property insertion order in the original object.
|
|
30
|
+
*
|
|
31
|
+
* @param schema - The database schema to hash
|
|
32
|
+
* @returns A hex string hash of the schema
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const hash = computeSchemaHash({
|
|
37
|
+
* User: { name: 'string', email: 'string' },
|
|
38
|
+
* Post: { title: 'string', author: 'User.posts' }
|
|
39
|
+
* })
|
|
40
|
+
* // => '8a7b3c9d...'
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function computeSchemaHash(schema) {
|
|
44
|
+
// Create a normalized representation with sorted keys
|
|
45
|
+
const normalized = {};
|
|
46
|
+
// Sort entity names
|
|
47
|
+
const entityNames = Object.keys(schema).sort();
|
|
48
|
+
for (const entityName of entityNames) {
|
|
49
|
+
const entitySchema = schema[entityName];
|
|
50
|
+
const normalizedEntity = {};
|
|
51
|
+
// Sort field names within each entity
|
|
52
|
+
const fieldNames = Object.keys(entitySchema).sort();
|
|
53
|
+
for (const fieldName of fieldNames) {
|
|
54
|
+
const fieldDef = entitySchema[fieldName];
|
|
55
|
+
// Normalize array definitions to string representation
|
|
56
|
+
if (Array.isArray(fieldDef)) {
|
|
57
|
+
normalizedEntity[fieldName] = `[${fieldDef[0]}]`;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
normalizedEntity[fieldName] = fieldDef;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
normalized[entityName] = normalizedEntity;
|
|
64
|
+
}
|
|
65
|
+
// Create JSON string and compute hash
|
|
66
|
+
const jsonString = JSON.stringify(normalized);
|
|
67
|
+
// Simple hash function (djb2 algorithm)
|
|
68
|
+
let hash = 5381;
|
|
69
|
+
for (let i = 0; i < jsonString.length; i++) {
|
|
70
|
+
const char = jsonString.charCodeAt(i);
|
|
71
|
+
hash = ((hash << 5) + hash) ^ char;
|
|
72
|
+
}
|
|
73
|
+
// Convert to positive hex string
|
|
74
|
+
return Math.abs(hash).toString(16).padStart(8, '0');
|
|
75
|
+
}
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// Version Storage
|
|
78
|
+
// =============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Get the current schema version from the database
|
|
81
|
+
*
|
|
82
|
+
* Reads the _schema_meta entity to retrieve the current schema version
|
|
83
|
+
* and hash. Returns null if no version has been set yet (first run).
|
|
84
|
+
*
|
|
85
|
+
* @param provider - The database provider
|
|
86
|
+
* @returns The current schema version info, or null if not set
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const version = await getSchemaVersion(provider)
|
|
91
|
+
* if (version) {
|
|
92
|
+
* console.log(`Current version: ${version.version}`)
|
|
93
|
+
* console.log(`Schema hash: ${version.schemaHash}`)
|
|
94
|
+
* } else {
|
|
95
|
+
* console.log('No schema version set - first run')
|
|
96
|
+
* }
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export async function getSchemaVersion(provider) {
|
|
100
|
+
try {
|
|
101
|
+
const record = await provider.get(SCHEMA_META_TYPE, SCHEMA_VERSION_ID);
|
|
102
|
+
if (!record) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
version: record['version'],
|
|
107
|
+
schemaHash: record['schemaHash'],
|
|
108
|
+
};
|
|
109
|
+
if (record['appliedAt'] !== undefined) {
|
|
110
|
+
result.appliedAt = record['appliedAt'];
|
|
111
|
+
}
|
|
112
|
+
if (record['description'] !== undefined) {
|
|
113
|
+
result.description = record['description'];
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
// If the entity type doesn't exist yet, that's fine - return null
|
|
119
|
+
if (error instanceof Error &&
|
|
120
|
+
(error.message.includes('not found') || error.message.includes('does not exist'))) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Set the schema version in the database
|
|
128
|
+
*
|
|
129
|
+
* Stores the schema version and hash as a _schema_meta entity.
|
|
130
|
+
* Creates the entity if it doesn't exist, or updates it if it does.
|
|
131
|
+
*
|
|
132
|
+
* @param provider - The database provider
|
|
133
|
+
* @param version - The new version number
|
|
134
|
+
* @param schemaHash - The hash of the current schema
|
|
135
|
+
* @param description - Optional description of the migration
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* await setSchemaVersion(provider, 1, 'abc123', 'Initial schema')
|
|
140
|
+
* await setSchemaVersion(provider, 2, 'def456', 'Added email field to User')
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export async function setSchemaVersion(provider, version, schemaHash, description) {
|
|
144
|
+
const data = {
|
|
145
|
+
version,
|
|
146
|
+
schemaHash,
|
|
147
|
+
appliedAt: new Date().toISOString(),
|
|
148
|
+
};
|
|
149
|
+
if (description !== undefined) {
|
|
150
|
+
data['description'] = description;
|
|
151
|
+
}
|
|
152
|
+
// Try to get existing record
|
|
153
|
+
const existing = await provider.get(SCHEMA_META_TYPE, SCHEMA_VERSION_ID);
|
|
154
|
+
if (existing) {
|
|
155
|
+
// Update existing record
|
|
156
|
+
await provider.update(SCHEMA_META_TYPE, SCHEMA_VERSION_ID, data);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Create new record
|
|
160
|
+
await provider.create(SCHEMA_META_TYPE, SCHEMA_VERSION_ID, data);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if the schema has changed since the last recorded version
|
|
165
|
+
*
|
|
166
|
+
* Compares the current schema hash with the stored hash to detect changes.
|
|
167
|
+
*
|
|
168
|
+
* @param provider - The database provider
|
|
169
|
+
* @param schema - The current schema definition
|
|
170
|
+
* @returns Object with changed status and hashes
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* const { changed, currentHash, storedHash } = await hasSchemaChanged(provider, schema)
|
|
175
|
+
* if (changed) {
|
|
176
|
+
* console.log('Schema has changed, migration may be needed')
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export async function hasSchemaChanged(provider, schema) {
|
|
181
|
+
const currentHash = computeSchemaHash(schema);
|
|
182
|
+
const versionInfo = await getSchemaVersion(provider);
|
|
183
|
+
return {
|
|
184
|
+
changed: versionInfo === null || versionInfo.schemaHash !== currentHash,
|
|
185
|
+
currentHash,
|
|
186
|
+
storedHash: versionInfo?.schemaHash ?? null,
|
|
187
|
+
storedVersion: versionInfo?.version ?? null,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/schema/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,8CAA8C;AAC9C,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAErC,uCAAuC;AACvC,MAAM,iBAAiB,GAAG,SAAS,CAAA;AAEnC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,sDAAsD;IACtD,MAAM,UAAU,GAA4C,EAAE,CAAA;IAE9D,oBAAoB;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAE9C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAE,CAAA;QACxC,MAAM,gBAAgB,GAA4B,EAAE,CAAA;QAEpD,sCAAsC;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAA;QAEnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;YACxC,uDAAuD;YACvD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,SAAS,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAA;YAClD,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;YACxC,CAAC;QACH,CAAC;QAED,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAA;IAC3C,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAE7C,wCAAwC;IACxC,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACpC,CAAC;IAED,iCAAiC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACrD,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAoB;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;QAEtE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAsB;YAChC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAW;YACpC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAW;SAC3C,CAAA;QACD,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAW,CAAA;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAW,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kEAAkE;QAClE,IACE,KAAK,YAAY,KAAK;YACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EACjF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAoB,EACpB,OAAe,EACf,UAAkB,EAClB,WAAoB;IAEpB,MAAM,IAAI,GAA4B;QACpC,OAAO;QACP,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAA;IAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,WAAW,CAAA;IACnC,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;IAExE,IAAI,QAAQ,EAAE,CAAC;QACb,yBAAyB;QACzB,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAA;IAClE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAoB,EACpB,MAAsB;IAOtB,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAEpD,OAAO;QACL,OAAO,EAAE,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW;QACvE,WAAW;QACX,UAAU,EAAE,WAAW,EAAE,UAAU,IAAI,IAAI;QAC3C,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,IAAI;KAC5C,CAAA;AACH,CAAC"}
|