@ketvietlab/ketjs 0.1.2 → 0.1.5
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/LICENSE +1 -1
- package/README.md +8 -2
- package/dist/agent/capabilities.d.ts +1 -3
- package/dist/agent/capabilities.d.ts.map +1 -1
- package/dist/agent/capabilities.js +10 -1
- package/dist/agent/capabilities.js.map +1 -1
- package/dist/agent/permissions.d.ts +43 -1
- package/dist/agent/permissions.d.ts.map +1 -1
- package/dist/agent/permissions.js +50 -2
- package/dist/agent/permissions.js.map +1 -1
- package/dist/cli.js +246 -97
- package/dist/cli.js.map +1 -1
- package/dist/codegen/dts.d.ts.map +1 -1
- package/dist/codegen/dts.js +1 -0
- package/dist/codegen/dts.js.map +1 -1
- package/dist/data/changeset.d.ts +12 -0
- package/dist/data/changeset.d.ts.map +1 -1
- package/dist/data/changeset.js +73 -17
- package/dist/data/changeset.js.map +1 -1
- package/dist/data/expr.d.ts +25 -1
- package/dist/data/expr.d.ts.map +1 -1
- package/dist/data/expr.js +47 -6
- package/dist/data/expr.js.map +1 -1
- package/dist/data/fleet.d.ts +41 -1
- package/dist/data/fleet.d.ts.map +1 -1
- package/dist/data/fleet.js +100 -11
- package/dist/data/fleet.js.map +1 -1
- package/dist/data/migrate.d.ts +20 -0
- package/dist/data/migrate.d.ts.map +1 -1
- package/dist/data/migrate.js +86 -3
- package/dist/data/migrate.js.map +1 -1
- package/dist/data/physical.d.ts +5 -0
- package/dist/data/physical.d.ts.map +1 -0
- package/dist/data/physical.js +196 -0
- package/dist/data/physical.js.map +1 -0
- package/dist/data/pool.d.ts +2 -1
- package/dist/data/pool.d.ts.map +1 -1
- package/dist/data/pool.js +159 -31
- package/dist/data/pool.js.map +1 -1
- package/dist/data/query.d.ts +10 -1
- package/dist/data/query.d.ts.map +1 -1
- package/dist/data/query.js +136 -27
- package/dist/data/query.js.map +1 -1
- package/dist/data/sqlite.d.ts.map +1 -1
- package/dist/data/sqlite.js +350 -52
- package/dist/data/sqlite.js.map +1 -1
- package/dist/data/time.d.ts +13 -0
- package/dist/data/time.d.ts.map +1 -1
- package/dist/data/time.js +61 -17
- package/dist/data/time.js.map +1 -1
- package/dist/index.d.ts +45 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -18
- package/dist/index.js.map +1 -1
- package/dist/kernel/audit.d.ts +27 -0
- package/dist/kernel/audit.d.ts.map +1 -0
- package/dist/kernel/audit.js +67 -0
- package/dist/kernel/audit.js.map +1 -0
- package/dist/kernel/classification.d.ts +26 -0
- package/dist/kernel/classification.d.ts.map +1 -0
- package/dist/kernel/classification.js +73 -0
- package/dist/kernel/classification.js.map +1 -0
- package/dist/kernel/compose.d.ts +6 -2
- package/dist/kernel/compose.d.ts.map +1 -1
- package/dist/kernel/compose.js +269 -15
- package/dist/kernel/compose.js.map +1 -1
- package/dist/kernel/define.d.ts +2 -3
- package/dist/kernel/define.d.ts.map +1 -1
- package/dist/kernel/define.js +22 -12
- package/dist/kernel/define.js.map +1 -1
- package/dist/kernel/diff.d.ts.map +1 -1
- package/dist/kernel/diff.js +28 -4
- package/dist/kernel/diff.js.map +1 -1
- package/dist/kernel/graph.js +1 -1
- package/dist/kernel/graph.js.map +1 -1
- package/dist/kernel/i18n.d.ts +10 -1
- package/dist/kernel/i18n.d.ts.map +1 -1
- package/dist/kernel/i18n.js +34 -1
- package/dist/kernel/i18n.js.map +1 -1
- package/dist/kernel/layout.d.ts +97 -0
- package/dist/kernel/layout.d.ts.map +1 -1
- package/dist/kernel/layout.js +294 -12
- package/dist/kernel/layout.js.map +1 -1
- package/dist/kernel/menu.d.ts +33 -2
- package/dist/kernel/menu.d.ts.map +1 -1
- package/dist/kernel/menu.js +99 -7
- package/dist/kernel/menu.js.map +1 -1
- package/dist/kernel/modules.d.ts +3 -3
- package/dist/kernel/modules.d.ts.map +1 -1
- package/dist/kernel/modules.js +21 -21
- package/dist/kernel/modules.js.map +1 -1
- package/dist/kernel/permissions.d.ts +10 -0
- package/dist/kernel/permissions.d.ts.map +1 -0
- package/dist/kernel/permissions.js +365 -0
- package/dist/kernel/permissions.js.map +1 -0
- package/dist/kernel/schedule.d.ts +23 -0
- package/dist/kernel/schedule.d.ts.map +1 -0
- package/dist/kernel/schedule.js +83 -0
- package/dist/kernel/schedule.js.map +1 -0
- package/dist/kernel/types.d.ts.map +1 -1
- package/dist/kernel/types.js +5 -4
- package/dist/kernel/types.js.map +1 -1
- package/dist/kernel/workspace.d.ts +92 -14
- package/dist/kernel/workspace.d.ts.map +1 -1
- package/dist/kernel/workspace.js +128 -49
- package/dist/kernel/workspace.js.map +1 -1
- package/dist/pdf/assets/Inter-Bold.ttf +0 -0
- package/dist/pdf/assets/Inter-Regular.ttf +0 -0
- package/dist/pdf/assets/Inter-SemiBold.ttf +0 -0
- package/dist/pdf/assets/LICENSE.txt +92 -0
- package/dist/pdf/font.d.ts +10 -0
- package/dist/pdf/font.d.ts.map +1 -0
- package/dist/pdf/font.js +83 -0
- package/dist/pdf/font.js.map +1 -0
- package/dist/pdf/image.d.ts +8 -0
- package/dist/pdf/image.d.ts.map +1 -0
- package/dist/pdf/image.js +94 -0
- package/dist/pdf/image.js.map +1 -0
- package/dist/pdf/index.d.ts +15 -0
- package/dist/pdf/index.d.ts.map +1 -0
- package/dist/pdf/index.js +17 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/markup.d.ts +19 -0
- package/dist/pdf/markup.d.ts.map +1 -0
- package/dist/pdf/markup.js +146 -0
- package/dist/pdf/markup.js.map +1 -0
- package/dist/pdf/render.d.ts +14 -0
- package/dist/pdf/render.d.ts.map +1 -0
- package/dist/pdf/render.js +387 -0
- package/dist/pdf/render.js.map +1 -0
- package/dist/scaffold/index.js +6 -6
- package/dist/scaffold/index.js.map +1 -1
- package/dist/scaffold/templates/{app.test.ts.tmpl → deployment.test.ts.tmpl} +3 -3
- package/dist/scaffold/templates/ket.workspace.ts.tmpl +4 -6
- package/dist/scaffold/templates/module.ts.tmpl +1 -4
- package/dist/server/assets.d.ts +23 -0
- package/dist/server/assets.d.ts.map +1 -0
- package/dist/server/assets.js +97 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/boot.d.ts +174 -38
- package/dist/server/boot.d.ts.map +1 -1
- package/dist/server/boot.js +399 -140
- package/dist/server/boot.js.map +1 -1
- package/dist/server/config.d.ts +30 -10
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +73 -17
- package/dist/server/config.js.map +1 -1
- package/dist/server/ctx.d.ts +10 -0
- package/dist/server/ctx.d.ts.map +1 -1
- package/dist/server/ctx.js +284 -48
- package/dist/server/ctx.js.map +1 -1
- package/dist/server/development.d.ts +10 -0
- package/dist/server/development.d.ts.map +1 -0
- package/dist/server/development.js +15 -0
- package/dist/server/development.js.map +1 -0
- package/dist/server/fn.d.ts +22 -3
- package/dist/server/fn.d.ts.map +1 -1
- package/dist/server/fn.js +116 -32
- package/dist/server/fn.js.map +1 -1
- package/dist/server/form.d.ts +33 -0
- package/dist/server/form.d.ts.map +1 -0
- package/dist/server/form.js +47 -0
- package/dist/server/form.js.map +1 -0
- package/dist/server/http.d.ts +82 -3
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +373 -37
- package/dist/server/http.js.map +1 -1
- package/dist/server/idem.d.ts +3 -2
- package/dist/server/idem.d.ts.map +1 -1
- package/dist/server/idem.js +12 -4
- package/dist/server/idem.js.map +1 -1
- package/dist/server/jobs.js +1 -1
- package/dist/server/jobs.js.map +1 -1
- package/dist/server/log/combinators.d.ts +42 -0
- package/dist/server/log/combinators.d.ts.map +1 -0
- package/dist/server/log/combinators.js +270 -0
- package/dist/server/log/combinators.js.map +1 -0
- package/dist/server/log/console.d.ts +12 -0
- package/dist/server/log/console.d.ts.map +1 -0
- package/dist/server/log/console.js +96 -0
- package/dist/server/log/console.js.map +1 -0
- package/dist/server/log/file.d.ts +11 -0
- package/dist/server/log/file.d.ts.map +1 -0
- package/dist/server/log/file.js +61 -0
- package/dist/server/log/file.js.map +1 -0
- package/dist/server/log/index.d.ts +23 -0
- package/dist/server/log/index.d.ts.map +1 -0
- package/dist/server/log/index.js +45 -0
- package/dist/server/log/index.js.map +1 -0
- package/dist/server/log/logger.d.ts +53 -0
- package/dist/server/log/logger.d.ts.map +1 -0
- package/dist/server/log/logger.js +94 -0
- package/dist/server/log/logger.js.map +1 -0
- package/dist/server/log/memory.d.ts +11 -0
- package/dist/server/log/memory.d.ts.map +1 -0
- package/dist/server/log/memory.js +25 -0
- package/dist/server/log/memory.js.map +1 -0
- package/dist/server/log/types.d.ts +112 -0
- package/dist/server/log/types.d.ts.map +1 -0
- package/dist/server/log/types.js +58 -0
- package/dist/server/log/types.js.map +1 -0
- package/dist/server/policy.d.ts +29 -0
- package/dist/server/policy.d.ts.map +1 -0
- package/dist/server/policy.js +29 -0
- package/dist/server/policy.js.map +1 -0
- package/dist/server/queue.d.ts +1 -1
- package/dist/server/queue.d.ts.map +1 -1
- package/dist/server/queue.js.map +1 -1
- package/dist/server/ratelimit.d.ts +48 -0
- package/dist/server/ratelimit.d.ts.map +1 -0
- package/dist/server/ratelimit.js +102 -0
- package/dist/server/ratelimit.js.map +1 -0
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +16 -1
- package/dist/server/respond.js.map +1 -1
- package/dist/server/runtime.d.ts +18 -3
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +32 -2
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/schedule.d.ts +18 -0
- package/dist/server/schedule.d.ts.map +1 -0
- package/dist/server/schedule.js +70 -0
- package/dist/server/schedule.js.map +1 -0
- package/dist/server/sequence.d.ts +42 -0
- package/dist/server/sequence.d.ts.map +1 -0
- package/dist/server/sequence.js +97 -0
- package/dist/server/sequence.js.map +1 -0
- package/dist/server/session.d.ts +21 -0
- package/dist/server/session.d.ts.map +1 -1
- package/dist/server/session.js +84 -10
- package/dist/server/session.js.map +1 -1
- package/dist/server/sessionstore.d.ts +3 -1
- package/dist/server/sessionstore.d.ts.map +1 -1
- package/dist/server/sessionstore.js +7 -3
- package/dist/server/sessionstore.js.map +1 -1
- package/dist/server/storage/index.d.ts +1 -1
- package/dist/server/storage/index.d.ts.map +1 -1
- package/dist/server/storage/index.js +61 -1
- package/dist/server/storage/index.js.map +1 -1
- package/dist/server/storage/types.d.ts +8 -0
- package/dist/server/storage/types.d.ts.map +1 -1
- package/dist/server/storage/types.js +58 -0
- package/dist/server/storage/types.js.map +1 -1
- package/dist/server/stream.d.ts +8 -2
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/stream.js +44 -4
- package/dist/server/stream.js.map +1 -1
- package/dist/server/streamstore.d.ts +10 -0
- package/dist/server/streamstore.d.ts.map +1 -1
- package/dist/server/streamstore.js +72 -6
- package/dist/server/streamstore.js.map +1 -1
- package/dist/server/tenants.d.ts +20 -18
- package/dist/server/tenants.d.ts.map +1 -1
- package/dist/server/tenants.js +133 -84
- package/dist/server/tenants.js.map +1 -1
- package/dist/server/transport/types.js +2 -2
- package/dist/server/transport/types.js.map +1 -1
- package/dist/server/worker.d.ts +19 -3
- package/dist/server/worker.d.ts.map +1 -1
- package/dist/server/worker.js +168 -21
- package/dist/server/worker.js.map +1 -1
- package/dist/testing.d.ts +26 -10
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +41 -14
- package/dist/testing.js.map +1 -1
- package/dist/theme/contracts.d.ts +14 -1
- package/dist/theme/contracts.d.ts.map +1 -1
- package/dist/theme/contracts.js +35 -6
- package/dist/theme/contracts.js.map +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/joint-runtime.d.ts +33 -0
- package/dist/theme/joint-runtime.d.ts.map +1 -0
- package/dist/theme/joint-runtime.js +121 -0
- package/dist/theme/joint-runtime.js.map +1 -0
- package/dist/theme/joints.d.ts.map +1 -1
- package/dist/theme/joints.js +15 -97
- package/dist/theme/joints.js.map +1 -1
- package/dist/theme/ktl/compile.d.ts +4 -0
- package/dist/theme/ktl/compile.d.ts.map +1 -1
- package/dist/theme/ktl/compile.js +54 -1
- package/dist/theme/ktl/compile.js.map +1 -1
- package/dist/theme/ktl/parser.d.ts +4 -0
- package/dist/theme/ktl/parser.d.ts.map +1 -1
- package/dist/theme/ktl/parser.js +8 -0
- package/dist/theme/ktl/parser.js.map +1 -1
- package/dist/theme/render.d.ts +8 -0
- package/dist/theme/render.d.ts.map +1 -1
- package/dist/theme/render.js +88 -118
- package/dist/theme/render.js.map +1 -1
- package/dist/theme/tokens.d.ts +18 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +33 -0
- package/dist/theme/tokens.js.map +1 -1
- package/dist/theme/viewmodel.d.ts +24 -0
- package/dist/theme/viewmodel.d.ts.map +1 -1
- package/dist/theme/viewmodel.js +75 -6
- package/dist/theme/viewmodel.js.map +1 -1
- package/dist/types.d.ts +320 -56
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
- package/dist/kernel/apps.d.ts +0 -43
- package/dist/kernel/apps.d.ts.map +0 -1
- package/dist/kernel/apps.js +0 -234
- package/dist/kernel/apps.js.map +0 -1
package/dist/data/fleet.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MigrationOp } from './migrate.ts';
|
|
1
|
+
import type { Schema, MigrationOp } from './migrate.ts';
|
|
2
2
|
import type { AdapterPool } from './pool.ts';
|
|
3
3
|
import type { Adapter, Manifest } from '../types.ts';
|
|
4
4
|
export declare const MIGRATION_DDL = "\nCREATE TABLE IF NOT EXISTS ket_migration (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n schema TEXT NOT NULL,\n applied_at TEXT NOT NULL\n);\n";
|
|
@@ -9,11 +9,51 @@ export type MigrationResult = {
|
|
|
9
9
|
applied: boolean;
|
|
10
10
|
error?: string;
|
|
11
11
|
};
|
|
12
|
+
/** Read-only comparison of a database catalog, its applied marker, and the current manifest. */
|
|
13
|
+
export type PhysicalSchemaVerification = {
|
|
14
|
+
/** True only when the marker and physical catalog both match the current manifest. */
|
|
15
|
+
ok: boolean;
|
|
16
|
+
/** Schema recorded in `ket_migration`, or null when no marker exists. */
|
|
17
|
+
applied: Schema | null;
|
|
18
|
+
/** Schema derived from the manifest supplied to {@link verifyPhysicalSchema}. */
|
|
19
|
+
target: Schema;
|
|
20
|
+
/** Whether the applied marker is structurally equal to the current manifest. */
|
|
21
|
+
markerMatchesManifest: boolean;
|
|
22
|
+
/** Physical differences from what the applied marker claims is present. */
|
|
23
|
+
markerIssues: string[];
|
|
24
|
+
/** Physical differences from the current manifest. */
|
|
25
|
+
manifestIssues: string[];
|
|
26
|
+
};
|
|
27
|
+
/** A manual migration was not eligible to advance the recorded schema. */
|
|
28
|
+
export declare class ManualMigrationConfirmationError extends Error {
|
|
29
|
+
code: string;
|
|
30
|
+
issues: string[];
|
|
31
|
+
constructor(message: string, issues?: string[]);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Verify a physical database without applying DDL or changing its migration marker.
|
|
35
|
+
*
|
|
36
|
+
* The two comparisons answer different operational questions. `markerIssues`
|
|
37
|
+
* detects legacy drift even when code and `ket_migration` agree, while
|
|
38
|
+
* `manifestIssues` describes what keeps the catalog from satisfying the current
|
|
39
|
+
* deployment. Callers should require `ok` before declaring a datastore healthy.
|
|
40
|
+
*/
|
|
41
|
+
export declare function verifyPhysicalSchema(adapter: Adapter, manifest: Manifest): Promise<PhysicalSchemaVerification>;
|
|
12
42
|
export declare function migrateOne(adapter: Adapter, manifest: Manifest, o?: {
|
|
13
43
|
allowDestructive?: boolean;
|
|
14
44
|
dryRun?: boolean;
|
|
15
45
|
now?: () => string;
|
|
16
46
|
}): Promise<MigrationOp[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Confirm an application-owned migration after checking the physical database.
|
|
49
|
+
*
|
|
50
|
+
* Call this on the transaction-scoped adapter after the manual DDL and backfill.
|
|
51
|
+
* The migration marker advances in that same transaction only when every modelled
|
|
52
|
+
* table, column type/nullability/primary key, and named index matches `manifest`.
|
|
53
|
+
*/
|
|
54
|
+
export declare function confirmManualMigration(adapter: Adapter, manifest: Manifest, o?: {
|
|
55
|
+
now?: () => string;
|
|
56
|
+
}): Promise<MigrationOp[]>;
|
|
17
57
|
/**
|
|
18
58
|
* Migrate every named database. One failure does not stop the fleet — the result
|
|
19
59
|
* says exactly which databases moved and which did not, because a half-migrated
|
package/dist/data/fleet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/data/fleet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/data/fleet.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,aAAa,kKAMzB,CAAA;AACD,eAAO,MAAM,gBAAgB,gLAM5B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzG,gGAAgG;AAChG,MAAM,MAAM,0BAA0B,GAAG;IACvC,sFAAsF;IACtF,EAAE,EAAE,OAAO,CAAA;IACX,yEAAyE;IACzE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,qBAAqB,EAAE,OAAO,CAAA;IAC9B,2EAA2E;IAC3E,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,sDAAsD;IACtD,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,0EAA0E;AAC1E,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,IAAI,SAAoC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,EAGjD;CACF;AA2BD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,0BAA0B,CAAC,CAkBrC;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,CAAC,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC3E,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,CAAC,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC7B,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCxB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,QAAQ,EAClB,CAAC,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC3E,OAAO,CAAC,eAAe,EAAE,CAAC,CAW5B;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAQ9D"}
|
package/dist/data/fleet.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Migrating many databases from one manifest.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// the domain contract lets each database install a different set of modules, so there is no single
|
|
4
4
|
// schema to reason about and every fleet upgrade is N unknown migrations. Ket takes
|
|
5
5
|
// the opposite position: one manifest, many databases, the same target schema
|
|
6
6
|
// everywhere. Each database records the schema it is actually on, so a tenant
|
|
7
7
|
// created last year and one created today converge on the same shape.
|
|
8
|
-
import {
|
|
8
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
9
|
+
import { ManualMigrationRequiredError, schemaFromManifest, planMigration, renderSql } from './migrate.js';
|
|
10
|
+
import { physicalSchemaIssues } from './physical.js';
|
|
9
11
|
export const MIGRATION_DDL = `
|
|
10
12
|
CREATE TABLE IF NOT EXISTS ket_migration (
|
|
11
13
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
@@ -20,9 +22,21 @@ CREATE TABLE IF NOT EXISTS ket_migration (
|
|
|
20
22
|
applied_at TIMESTAMPTZ NOT NULL
|
|
21
23
|
);
|
|
22
24
|
`;
|
|
23
|
-
|
|
25
|
+
/** A manual migration was not eligible to advance the recorded schema. */
|
|
26
|
+
export class ManualMigrationConfirmationError extends Error {
|
|
27
|
+
code = 'E_MANUAL_MIGRATION_CONFIRMATION';
|
|
28
|
+
issues;
|
|
29
|
+
constructor(message, issues = []) {
|
|
30
|
+
super(issues.length ? `${message}:\n${issues.map((issue) => ` - ${issue}`).join('\n')}` : message);
|
|
31
|
+
this.issues = issues;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function readApplied(adapter, ensureTable) {
|
|
24
35
|
const pg = adapter.name === 'postgres';
|
|
25
|
-
|
|
36
|
+
if (ensureTable)
|
|
37
|
+
await adapter.exec(pg ? MIGRATION_DDL_PG : MIGRATION_DDL);
|
|
38
|
+
else if (!Object.hasOwn(await adapter.introspect(), 'ket_migration'))
|
|
39
|
+
return null;
|
|
26
40
|
const rows = await adapter.all(`SELECT schema FROM ket_migration WHERE id = 1`);
|
|
27
41
|
const r = rows[0];
|
|
28
42
|
return r ? JSON.parse(String(r.schema)) : null;
|
|
@@ -39,16 +53,91 @@ async function writeApplied(adapter, schema, now) {
|
|
|
39
53
|
]);
|
|
40
54
|
}
|
|
41
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Verify a physical database without applying DDL or changing its migration marker.
|
|
58
|
+
*
|
|
59
|
+
* The two comparisons answer different operational questions. `markerIssues`
|
|
60
|
+
* detects legacy drift even when code and `ket_migration` agree, while
|
|
61
|
+
* `manifestIssues` describes what keeps the catalog from satisfying the current
|
|
62
|
+
* deployment. Callers should require `ok` before declaring a datastore healthy.
|
|
63
|
+
*/
|
|
64
|
+
export async function verifyPhysicalSchema(adapter, manifest) {
|
|
65
|
+
const target = schemaFromManifest(manifest);
|
|
66
|
+
const applied = await readApplied(adapter, false);
|
|
67
|
+
const markerMatchesManifest = applied !== null && isDeepStrictEqual(applied, target);
|
|
68
|
+
const markerIssues = applied
|
|
69
|
+
? await physicalSchemaIssues(adapter, applied, applied)
|
|
70
|
+
: ['applied-schema marker is missing'];
|
|
71
|
+
const manifestIssues = markerMatchesManifest
|
|
72
|
+
? [...markerIssues]
|
|
73
|
+
: await physicalSchemaIssues(adapter, applied ?? { version: target.version, tables: {} }, target);
|
|
74
|
+
return {
|
|
75
|
+
ok: markerMatchesManifest && markerIssues.length === 0 && manifestIssues.length === 0,
|
|
76
|
+
applied,
|
|
77
|
+
target,
|
|
78
|
+
markerMatchesManifest,
|
|
79
|
+
markerIssues,
|
|
80
|
+
manifestIssues,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
42
83
|
export async function migrateOne(adapter, manifest, o = {}) {
|
|
43
84
|
const target = schemaFromManifest(manifest);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
85
|
+
if (o.dryRun) {
|
|
86
|
+
const applied = await readApplied(adapter, false);
|
|
87
|
+
return planMigration(applied, target, { allowDestructive: o.allowDestructive ?? false });
|
|
88
|
+
}
|
|
89
|
+
const apply = async (tx) => {
|
|
90
|
+
const applied = await readApplied(tx, true);
|
|
91
|
+
const ops = planMigration(applied, target, { allowDestructive: o.allowDestructive ?? false });
|
|
92
|
+
const sql = renderSql(ops, tx);
|
|
93
|
+
for (const statement of sql)
|
|
94
|
+
await tx.exec(statement);
|
|
95
|
+
await writeApplied(tx, target, (o.now ?? (() => new Date().toISOString()))());
|
|
47
96
|
return ops;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
97
|
+
};
|
|
98
|
+
// DDL and the schema marker are one unit. Without this, a failed later
|
|
99
|
+
// statement leaves earlier columns/indexes in place while the old marker makes
|
|
100
|
+
// a retry replay them and fail on duplicates.
|
|
101
|
+
return adapter.transaction ? apply(adapter) : adapter.tx(apply);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Confirm an application-owned migration after checking the physical database.
|
|
105
|
+
*
|
|
106
|
+
* Call this on the transaction-scoped adapter after the manual DDL and backfill.
|
|
107
|
+
* The migration marker advances in that same transaction only when every modelled
|
|
108
|
+
* table, column type/nullability/primary key, and named index matches `manifest`.
|
|
109
|
+
*/
|
|
110
|
+
export async function confirmManualMigration(adapter, manifest, o = {}) {
|
|
111
|
+
const target = schemaFromManifest(manifest);
|
|
112
|
+
const confirm = async (tx) => {
|
|
113
|
+
const applied = await readApplied(tx, false);
|
|
114
|
+
if (!applied)
|
|
115
|
+
throw new ManualMigrationConfirmationError('no applied-schema marker exists; run migrateOne before confirming a manual transition');
|
|
116
|
+
let manual;
|
|
117
|
+
try {
|
|
118
|
+
const generated = planMigration(applied, target, { allowDestructive: true });
|
|
119
|
+
throw new ManualMigrationConfirmationError(generated.length
|
|
120
|
+
? 'the pending schema difference contains no operation that requires a manual migration'
|
|
121
|
+
: 'the recorded schema already matches the target manifest');
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (!(error instanceof ManualMigrationRequiredError))
|
|
125
|
+
throw error;
|
|
126
|
+
manual = error.ops;
|
|
127
|
+
}
|
|
128
|
+
let issues;
|
|
129
|
+
try {
|
|
130
|
+
issues = await physicalSchemaIssues(tx, applied, target);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
throw new ManualMigrationConfirmationError(error.message);
|
|
134
|
+
}
|
|
135
|
+
if (issues.length)
|
|
136
|
+
throw new ManualMigrationConfirmationError('the physical database does not match the target manifest; the applied-schema marker was not changed', issues);
|
|
137
|
+
await writeApplied(tx, target, (o.now ?? (() => new Date().toISOString()))());
|
|
138
|
+
return manual;
|
|
139
|
+
};
|
|
140
|
+
return adapter.transaction ? confirm(adapter) : adapter.tx(confirm);
|
|
52
141
|
}
|
|
53
142
|
/**
|
|
54
143
|
* Migrate every named database. One failure does not stop the fleet — the result
|
package/dist/data/fleet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/data/fleet.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/data/fleet.ts"],"names":[],"mappings":"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"}
|
package/dist/data/migrate.d.ts
CHANGED
|
@@ -32,6 +32,13 @@ export type MigrationOp = {
|
|
|
32
32
|
column: string;
|
|
33
33
|
def: Column;
|
|
34
34
|
destructive: false;
|
|
35
|
+
} | {
|
|
36
|
+
op: 'ALTER_COLUMN_NULLABILITY';
|
|
37
|
+
table: string;
|
|
38
|
+
column: string;
|
|
39
|
+
from: boolean;
|
|
40
|
+
to: boolean;
|
|
41
|
+
destructive: false;
|
|
35
42
|
} | {
|
|
36
43
|
op: 'CREATE_INDEX';
|
|
37
44
|
table: string;
|
|
@@ -68,6 +75,19 @@ export declare class DestructiveMigrationError extends Error {
|
|
|
68
75
|
ops: MigrationOp[];
|
|
69
76
|
constructor(message: string, ops: MigrationOp[]);
|
|
70
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* A schema difference that cannot be applied safely from the manifest alone.
|
|
80
|
+
*
|
|
81
|
+
* Required columns need a deployment-specific backfill, nullability changes need
|
|
82
|
+
* data inspection (and a table rebuild on SQLite), and type changes need an
|
|
83
|
+
* explicit conversion expression. Treating any of those as applied would make the
|
|
84
|
+
* migration marker disagree with the physical database.
|
|
85
|
+
*/
|
|
86
|
+
export declare class ManualMigrationRequiredError extends Error {
|
|
87
|
+
code: string;
|
|
88
|
+
ops: MigrationOp[];
|
|
89
|
+
constructor(message: string, ops: MigrationOp[]);
|
|
90
|
+
}
|
|
71
91
|
export declare function planMigration(prev: Schema | null, next: Schema, opts?: {
|
|
72
92
|
allowDestructive?: boolean;
|
|
73
93
|
}): MigrationOp[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/data/migrate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,MAAM,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAC3G,MAAM,MAAM,KAAK,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AACrE,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAC/B,CAAA;AACD,MAAM,MAAM,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,KAAK,CAAA;CAAE,GAC1F;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,KAAK,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,KAAK,CAAA;CAAE,GACnF;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GACpE;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GACnF;IAAE,EAAE,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GACvG;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,CAAA;AAE1D,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,MAI9B,CAAA;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/data/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/data/migrate.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Schema is derived from the manifest, never hand-written; migrations are generated
|
|
2
2
|
// as reviewable operations, never applied silently.
|
|
3
3
|
//
|
|
4
|
-
// The
|
|
4
|
+
// The the domain contract lesson encoded as a rule: destructive operations are still generated so
|
|
5
5
|
// you can see them, but refused unless explicitly allowed. "Don't drop fields"
|
|
6
6
|
// stops being discipline someone has to remember and becomes something the tool enforces.
|
|
7
7
|
import { sqlTypeOf } from '../kernel/types.js';
|
|
@@ -9,6 +9,22 @@ export const tableNameFor = (modelKey) => modelKey
|
|
|
9
9
|
.replace('.', '_')
|
|
10
10
|
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')
|
|
11
11
|
.toLowerCase();
|
|
12
|
+
const indexCovers = (indexes, fields) => Object.values(indexes).some((index) => fields.every((field, position) => index.fields[position] === field));
|
|
13
|
+
const autoIndexName = (kind, seed) => {
|
|
14
|
+
let hash = 2166136261;
|
|
15
|
+
for (let index = 0; index < seed.length; index++) {
|
|
16
|
+
hash ^= seed.charCodeAt(index);
|
|
17
|
+
hash = Math.imul(hash, 16777619);
|
|
18
|
+
}
|
|
19
|
+
return `ket_${kind}_${(hash >>> 0).toString(36)}`;
|
|
20
|
+
};
|
|
21
|
+
const addAutoIndex = (indexes, name, fields) => {
|
|
22
|
+
let candidate = name;
|
|
23
|
+
let suffix = 2;
|
|
24
|
+
while (indexes[candidate])
|
|
25
|
+
candidate = `${name}_${suffix++}`;
|
|
26
|
+
indexes[candidate] = { fields, unique: false, by: '(framework)' };
|
|
27
|
+
};
|
|
12
28
|
export function schemaFromManifest(manifest) {
|
|
13
29
|
const tables = {};
|
|
14
30
|
for (const [modelKey, model] of Object.entries(manifest.models)) {
|
|
@@ -22,7 +38,28 @@ export function schemaFromManifest(manifest) {
|
|
|
22
38
|
target: f.target ?? null,
|
|
23
39
|
};
|
|
24
40
|
}
|
|
25
|
-
|
|
41
|
+
const indexes = Object.fromEntries(Object.entries(model.indexes).map(([name, index]) => [name, { ...index, fields: [...index.fields] }]));
|
|
42
|
+
if (model.scope !== 'shared') {
|
|
43
|
+
const fields = model.scope === 'company+branch' ? ['companyId', 'branchId'] : ['companyId'];
|
|
44
|
+
if (!indexCovers(indexes, fields)) {
|
|
45
|
+
addAutoIndex(indexes, autoIndexName('scope', modelKey), fields);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
tables[tableNameFor(modelKey)] = { model: modelKey, owner: model.owner, columns, indexes };
|
|
49
|
+
}
|
|
50
|
+
for (const relations of Object.values(manifest.relations)) {
|
|
51
|
+
for (const relation of Object.values(relations)) {
|
|
52
|
+
if (relation.kind !== 'hasMany')
|
|
53
|
+
continue;
|
|
54
|
+
const target = manifest.models[relation.target];
|
|
55
|
+
const table = tables[tableNameFor(relation.target)];
|
|
56
|
+
if (!target || !table)
|
|
57
|
+
continue;
|
|
58
|
+
const fields = [...new Set([...(target.scope === 'shared' ? [] : ['companyId']), relation.by])];
|
|
59
|
+
if (indexCovers(table.indexes, fields))
|
|
60
|
+
continue;
|
|
61
|
+
addAutoIndex(table.indexes, autoIndexName('relation', `${relation.target}:${relation.by}`), fields);
|
|
62
|
+
}
|
|
26
63
|
}
|
|
27
64
|
return { version: 1, tables };
|
|
28
65
|
}
|
|
@@ -34,6 +71,31 @@ export class DestructiveMigrationError extends Error {
|
|
|
34
71
|
this.ops = ops;
|
|
35
72
|
}
|
|
36
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* A schema difference that cannot be applied safely from the manifest alone.
|
|
76
|
+
*
|
|
77
|
+
* Required columns need a deployment-specific backfill, nullability changes need
|
|
78
|
+
* data inspection (and a table rebuild on SQLite), and type changes need an
|
|
79
|
+
* explicit conversion expression. Treating any of those as applied would make the
|
|
80
|
+
* migration marker disagree with the physical database.
|
|
81
|
+
*/
|
|
82
|
+
export class ManualMigrationRequiredError extends Error {
|
|
83
|
+
code = 'E_MANUAL_MIGRATION_REQUIRED';
|
|
84
|
+
ops;
|
|
85
|
+
constructor(message, ops) {
|
|
86
|
+
super(message);
|
|
87
|
+
this.ops = ops;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const manualMigrationReason = (op) => {
|
|
91
|
+
if (op.op === 'ALTER_COLUMN_TYPE')
|
|
92
|
+
return `${op.table}.${op.column} changes type from ${op.from} to ${op.to}`;
|
|
93
|
+
if (op.op === 'ALTER_COLUMN_NULLABILITY')
|
|
94
|
+
return `${op.table}.${op.column} changes from ${op.from ? 'optional' : 'required'} to ${op.to ? 'optional' : 'required'}`;
|
|
95
|
+
if (op.op === 'ADD_COLUMN' && !op.def.optional)
|
|
96
|
+
return `${op.table}.${op.column} is a required column and existing rows need a backfill`;
|
|
97
|
+
return null;
|
|
98
|
+
};
|
|
37
99
|
export function planMigration(prev, next, opts = {}) {
|
|
38
100
|
const ops = [];
|
|
39
101
|
const prevTables = prev?.tables ?? {};
|
|
@@ -60,6 +122,15 @@ export function planMigration(prev, next, opts = {}) {
|
|
|
60
122
|
to: cd.base,
|
|
61
123
|
destructive: true,
|
|
62
124
|
});
|
|
125
|
+
else if (bc.optional !== cd.optional)
|
|
126
|
+
ops.push({
|
|
127
|
+
op: 'ALTER_COLUMN_NULLABILITY',
|
|
128
|
+
table: t,
|
|
129
|
+
column: c,
|
|
130
|
+
from: bc.optional,
|
|
131
|
+
to: cd.optional,
|
|
132
|
+
destructive: false,
|
|
133
|
+
});
|
|
63
134
|
}
|
|
64
135
|
// Indexes are dropped before the columns and created after them. Postgres
|
|
65
136
|
// drops any index covering a dropped column as part of ALTER TABLE, so a
|
|
@@ -89,6 +160,15 @@ export function planMigration(prev, next, opts = {}) {
|
|
|
89
160
|
if (!next.tables[t])
|
|
90
161
|
ops.push({ op: 'DROP_TABLE', table: t, destructive: true });
|
|
91
162
|
}
|
|
163
|
+
const manual = ops.flatMap((op) => {
|
|
164
|
+
const reason = manualMigrationReason(op);
|
|
165
|
+
return reason ? [{ op, reason }] : [];
|
|
166
|
+
});
|
|
167
|
+
if (manual.length) {
|
|
168
|
+
const list = manual.map(({ reason }) => ` - ${reason}`).join('\n');
|
|
169
|
+
throw new ManualMigrationRequiredError(`migration contains ${manual.length} operation(s) that require a hand-written data migration:\n${list}\n\n` +
|
|
170
|
+
'Apply the DDL and backfill in an application-owned transaction, then call confirmManualMigration(tx, manifest). KetJS will verify the physical schema before recording it.', manual.map(({ op }) => op));
|
|
171
|
+
}
|
|
92
172
|
const destructive = ops.filter((o) => o.destructive);
|
|
93
173
|
if (destructive.length && !opts.allowDestructive) {
|
|
94
174
|
const list = destructive
|
|
@@ -114,6 +194,9 @@ export function renderSql(ops, adapter) {
|
|
|
114
194
|
else if (o.op === 'ADD_COLUMN') {
|
|
115
195
|
out.push(`ALTER TABLE ${q(o.table)} ADD COLUMN ${q(o.column)} ${adapter.columnSql(o.def)}`);
|
|
116
196
|
}
|
|
197
|
+
else if (o.op === 'ALTER_COLUMN_NULLABILITY') {
|
|
198
|
+
throw new ManualMigrationRequiredError(`migration operation ${o.op} ${o.table}.${o.column} requires a hand-written data migration`, [o]);
|
|
199
|
+
}
|
|
117
200
|
else if (o.op === 'CREATE_INDEX') {
|
|
118
201
|
const name = `${o.table}__${o.name}`;
|
|
119
202
|
out.push(`CREATE ${o.def.unique ? 'UNIQUE ' : ''}INDEX ${q(name)} ON ${q(o.table)} (${o.def.fields.map(q).join(', ')})`);
|
|
@@ -125,7 +208,7 @@ export function renderSql(ops, adapter) {
|
|
|
125
208
|
out.push(`ALTER TABLE ${q(o.table)} DROP COLUMN ${q(o.column)}`);
|
|
126
209
|
}
|
|
127
210
|
else if (o.op === 'ALTER_COLUMN_TYPE') {
|
|
128
|
-
|
|
211
|
+
throw new ManualMigrationRequiredError(`migration operation ${o.op} ${o.table}.${o.column} requires a hand-written data migration`, [o]);
|
|
129
212
|
}
|
|
130
213
|
else {
|
|
131
214
|
out.push(`DROP TABLE ${q(o.table)}`);
|
package/dist/data/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/data/migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/data/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Adapter } from '../types.ts';
|
|
2
|
+
import type { Schema } from './migrate.ts';
|
|
3
|
+
/** Return every modelled difference between the physical database and `target`. */
|
|
4
|
+
export declare function physicalSchemaIssues(adapter: Adapter, previous: Schema, target: Schema): Promise<string[]>;
|
|
5
|
+
//# sourceMappingURL=physical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/data/physical.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,cAAc,CAAA;AAqKlD,mFAAmF;AACnF,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAqEnB"}
|