@intentius/sql-yodeler 0.3.0 → 0.5.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/README.md +2 -2
- package/dist/apply-steps/index.d.ts +65 -0
- package/dist/apply-steps/index.js +106 -0
- package/dist/apply-steps/index.js.map +1 -0
- package/dist/approval-mode/index.d.ts +78 -0
- package/dist/approval-mode/index.js +105 -0
- package/dist/approval-mode/index.js.map +1 -0
- package/dist/chant/access.d.ts +84 -0
- package/dist/chant/access.js +155 -0
- package/dist/chant/access.js.map +1 -0
- package/dist/chant/drift.d.ts +17 -1
- package/dist/chant/drift.js +55 -2
- package/dist/chant/drift.js.map +1 -1
- package/dist/chant/plan.d.ts +18 -2
- package/dist/chant/plan.js +21 -3
- package/dist/chant/plan.js.map +1 -1
- package/dist/ci/login.d.ts +78 -0
- package/dist/ci/login.js +199 -0
- package/dist/ci/login.js.map +1 -0
- package/dist/ci/render.d.ts +64 -10
- package/dist/ci/render.js +385 -88
- package/dist/ci/render.js.map +1 -1
- package/dist/cleanup/index.d.ts +92 -0
- package/dist/cleanup/index.js +213 -0
- package/dist/cleanup/index.js.map +1 -0
- package/dist/commands/apply.js +178 -20
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/approve.d.ts +13 -0
- package/dist/commands/approve.js +206 -24
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/ci.js +12 -0
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/cleanup.d.ts +13 -0
- package/dist/commands/cleanup.js +158 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +136 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/drift.js +33 -3
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.js +98 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.js +67 -10
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/new.js +135 -54
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/plan.js +39 -5
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.js +164 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/config/define.d.ts +175 -2
- package/dist/config/define.js +2 -0
- package/dist/config/define.js.map +1 -1
- package/dist/config/load.js +78 -10
- package/dist/config/load.js.map +1 -1
- package/dist/config/settings.d.ts +20 -0
- package/dist/config/settings.js +28 -0
- package/dist/config/settings.js.map +1 -1
- package/dist/credentials.d.ts +119 -0
- package/dist/credentials.js +119 -0
- package/dist/credentials.js.map +1 -0
- package/dist/exit.js +1 -1
- package/dist/exit.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/init/adopt.js +1 -1
- package/dist/init/adopt.js.map +1 -1
- package/dist/init/clickhouse-access.d.ts +64 -0
- package/dist/init/clickhouse-access.js +211 -0
- package/dist/init/clickhouse-access.js.map +1 -0
- package/dist/init/index.d.ts +2 -0
- package/dist/init/index.js +2 -0
- package/dist/init/index.js.map +1 -1
- package/dist/init/live.d.ts +4 -0
- package/dist/init/live.js +16 -0
- package/dist/init/live.js.map +1 -1
- package/dist/init/second.d.ts +70 -0
- package/dist/init/second.js +149 -0
- package/dist/init/second.js.map +1 -0
- package/dist/lint/access.d.ts +18 -0
- package/dist/lint/access.js +34 -0
- package/dist/lint/access.js.map +1 -0
- package/dist/lint/annotations.d.ts +49 -0
- package/dist/lint/annotations.js +82 -0
- package/dist/lint/annotations.js.map +1 -0
- package/dist/lint/check.js +25 -7
- package/dist/lint/check.js.map +1 -1
- package/dist/lint/config.d.ts +7 -1
- package/dist/lint/config.js +11 -5
- package/dist/lint/config.js.map +1 -1
- package/dist/lint/index.d.ts +4 -0
- package/dist/lint/index.js +4 -0
- package/dist/lint/index.js.map +1 -1
- package/dist/lint/naming.d.ts +62 -0
- package/dist/lint/naming.js +138 -0
- package/dist/lint/naming.js.map +1 -0
- package/dist/lint/rules.d.ts +37 -4
- package/dist/lint/rules.js +16 -4
- package/dist/lint/rules.js.map +1 -1
- package/dist/lint/schema-checks.d.ts +63 -0
- package/dist/lint/schema-checks.js +128 -0
- package/dist/lint/schema-checks.js.map +1 -0
- package/dist/lint/statements.d.ts +22 -1
- package/dist/lint/statements.js +40 -1
- package/dist/lint/statements.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.js +1 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/migrations/checkpoint.js +0 -2
- package/dist/migrations/checkpoint.js.map +1 -1
- package/dist/migrations/checks.d.ts +19 -1
- package/dist/migrations/checks.js +15 -0
- package/dist/migrations/checks.js.map +1 -1
- package/dist/migrations/create.d.ts +13 -4
- package/dist/migrations/create.js +24 -9
- package/dist/migrations/create.js.map +1 -1
- package/dist/migrations/routines.d.ts +5 -15
- package/dist/migrations/routines.js +5 -30
- package/dist/migrations/routines.js.map +1 -1
- package/dist/pr/model.d.ts +4 -1
- package/dist/pr/model.js +13 -5
- package/dist/pr/model.js.map +1 -1
- package/dist/pr/render.d.ts +4 -1
- package/dist/pr/render.js +22 -8
- package/dist/pr/render.js.map +1 -1
- package/dist/pr/tenants.d.ts +37 -0
- package/dist/pr/tenants.js +138 -0
- package/dist/pr/tenants.js.map +1 -0
- package/dist/probe.d.ts +27 -0
- package/dist/probe.js +106 -0
- package/dist/probe.js.map +1 -0
- package/dist/project.d.ts +16 -0
- package/dist/project.js +29 -1
- package/dist/project.js.map +1 -1
- package/dist/replay/clickhouse.d.ts +31 -0
- package/dist/replay/clickhouse.js +103 -6
- package/dist/replay/clickhouse.js.map +1 -1
- package/dist/replay/replay.d.ts +5 -2
- package/dist/replay/replay.js.map +1 -1
- package/dist/report/audit.d.ts +1 -1
- package/dist/report/audit.js +20 -3
- package/dist/report/audit.js.map +1 -1
- package/dist/schemas.d.ts +3 -1
- package/dist/schemas.js +2 -0
- package/dist/schemas.js.map +1 -1
- package/dist/sources/ddl.d.ts +15 -20
- package/dist/sources/ddl.js +34 -328
- package/dist/sources/ddl.js.map +1 -1
- package/dist/sources/index.js +2 -2
- package/dist/sources/index.js.map +1 -1
- package/dist/steps/backfill.d.ts +40 -5
- package/dist/steps/backfill.js +128 -8
- package/dist/steps/backfill.js.map +1 -1
- package/dist/steps/index.d.ts +19 -1
- package/dist/steps/index.js +34 -7
- package/dist/steps/index.js.map +1 -1
- package/dist/steps/kinds.d.ts +42 -4
- package/dist/steps/kinds.js +88 -14
- package/dist/steps/kinds.js.map +1 -1
- package/dist/steps/postgres-migration.d.ts +3 -0
- package/dist/steps/postgres-migration.js +7 -3
- package/dist/steps/postgres-migration.js.map +1 -1
- package/dist/steps/rebuild.d.ts +15 -6
- package/dist/steps/rebuild.js +12 -9
- package/dist/steps/rebuild.js.map +1 -1
- package/dist/tenants/index.d.ts +2 -1
- package/dist/tenants/index.js +3 -4
- package/dist/tenants/index.js.map +1 -1
- package/dist/tenants/wave.d.ts +128 -0
- package/dist/tenants/wave.js +254 -0
- package/dist/tenants/wave.js.map +1 -0
- package/dist/testing/define.d.ts +62 -0
- package/dist/testing/define.js +32 -0
- package/dist/testing/define.js.map +1 -0
- package/dist/testing/files.d.ts +5 -0
- package/dist/testing/files.js +18 -0
- package/dist/testing/files.js.map +1 -0
- package/dist/testing/report.d.ts +14 -0
- package/dist/testing/report.js +83 -0
- package/dist/testing/report.js.map +1 -0
- package/dist/testing/run.d.ts +104 -0
- package/dist/testing/run.js +328 -0
- package/dist/testing/run.js.map +1 -0
- package/dist/versioned/approval.d.ts +6 -0
- package/dist/versioned/approval.js +11 -5
- package/dist/versioned/approval.js.map +1 -1
- package/dist/versioned/checks.d.ts +8 -2
- package/dist/versioned/checks.js +34 -13
- package/dist/versioned/checks.js.map +1 -1
- package/dist/versioned/driver.d.ts +2 -2
- package/dist/versioned/engine.d.ts +10 -0
- package/dist/versioned/engine.js +8 -4
- package/dist/versioned/engine.js.map +1 -1
- package/dist/versioned/explain.d.ts +2 -0
- package/dist/versioned/explain.js +3 -1
- package/dist/versioned/explain.js.map +1 -1
- package/dist/versioned/op.d.ts +4 -0
- package/dist/versioned/op.js +5 -2
- package/dist/versioned/op.js.map +1 -1
- package/dist/versioned/state.js +1 -1
- package/dist/versioned/state.js.map +1 -1
- package/dist/waves/index.d.ts +58 -13
- package/dist/waves/index.js +109 -24
- package/dist/waves/index.js.map +1 -1
- package/dist/waves/record.d.ts +10 -0
- package/dist/waves/record.js.map +1 -1
- package/package.json +8 -7
- package/schemas/apply.schema.json +1 -1
- package/schemas/cleanup.schema.json +40 -0
- package/schemas/init.schema.json +51 -22
- package/schemas/lint-rules.schema.json +4 -0
- package/schemas/new.schema.json +41 -3
- package/schemas/plan.schema.json +39 -0
- package/schemas/report.schema.json +1 -1
- package/schemas/test.schema.json +41 -0
package/dist/lint/statements.js
CHANGED
|
@@ -5,9 +5,18 @@
|
|
|
5
5
|
*
|
|
6
6
|
* - `destructive`: a statement marked destructive (a table or column drop),
|
|
7
7
|
* or an Op step one of whose changes is.
|
|
8
|
+
* - `pg-access`: a Postgres statement that takes access away (#45): a
|
|
9
|
+
* privilege revoked (SQLPG297), a policy dropped (SQLPG292), row-level
|
|
10
|
+
* security turned off or no longer forced (SQLPG293). A revoke on an
|
|
11
|
+
* object the same migration creates (`REVOKE EXECUTE ... FROM PUBLIC` on
|
|
12
|
+
* a new function) takes nothing from anyone and is left out.
|
|
8
13
|
* - `ch-mutation`: a ClickHouse statement of class `rewrite`, or one that
|
|
9
14
|
* waits for its mutation (a column type or TTL change).
|
|
10
15
|
* - `ch-rebuild`: a `ClickHouseRebuildOp` step.
|
|
16
|
+
* - `ch-access`: a ClickHouse statement that takes access away (#46): a
|
|
17
|
+
* privilege or role revoked (SQLCH274). ClickHouse takes no `REVOKE`
|
|
18
|
+
* declaration, so each one revokes what a grantee holds and no
|
|
19
|
+
* declaration grants any more.
|
|
11
20
|
* - `pg-rewrite`: a Postgres statement of class `rewrite` (ACCESS EXCLUSIVE
|
|
12
21
|
* for a rewrite or a full scan).
|
|
13
22
|
* - `pg-lock`: a Postgres statement that blocks writes for a whole build or
|
|
@@ -17,6 +26,12 @@
|
|
|
17
26
|
* foreign key or domain constraint validated in place rather than added
|
|
18
27
|
* `NOT VALID` (SQLPG219, SQLPG262).
|
|
19
28
|
*
|
|
29
|
+
* - `data-dependent`: a Postgres statement chant marks as able to fail on
|
|
30
|
+
* the rows already there (its `precheck`: a unique index over
|
|
31
|
+
* duplicates, SET NOT NULL over NULLs, a check or foreign key a row
|
|
32
|
+
* breaks). The finding shows the pre-check, which yodel apply runs before
|
|
33
|
+
* the migration's first statement and refuses on when it is not 0.
|
|
34
|
+
*
|
|
20
35
|
* `COMMENT ON` statements are skipped: chant writes one after a `CREATE`
|
|
21
36
|
* with the same rule, and a comment is catalog only.
|
|
22
37
|
*
|
|
@@ -27,6 +42,7 @@
|
|
|
27
42
|
import { CLASSIFIER_RULES } from "@intentius/chant-lexicon-sql/clickhouse/plan/rules";
|
|
28
43
|
import { PG_CLASSIFIER_RULES } from "@intentius/chant-lexicon-sql/postgres/plan/rules";
|
|
29
44
|
import { planStep, REBUILD_OP } from "../steps/kinds.js";
|
|
45
|
+
import { takesAccessAway } from "../chant/access.js";
|
|
30
46
|
const catalog = (dialect) => (dialect === "clickhouse" ? CLASSIFIER_RULES : PG_CLASSIFIER_RULES);
|
|
31
47
|
/** The classifier rule's id and title, e.g. `SQLCH202 Drop a column`. */
|
|
32
48
|
function titled(dialect, rule) {
|
|
@@ -77,8 +93,21 @@ export function unreadableStep(dialect, step) {
|
|
|
77
93
|
}
|
|
78
94
|
return undefined;
|
|
79
95
|
}
|
|
96
|
+
const CREATE = /^\s*CREATE\b/i;
|
|
97
|
+
const REVOKE_ON = /\bON\s+(?:TABLE|SEQUENCE|FUNCTION|PROCEDURE|ROUTINE|SCHEMA)\s+(.+?)\s+FROM\b/is;
|
|
98
|
+
/** The objects a migration's statements create, by the name each step carries. */
|
|
99
|
+
export function createdObjects(steps) {
|
|
100
|
+
return new Set(steps.flatMap((s) => (s.kind === "statement" && s.class === "create" && CREATE.test(s.sql) ? [s.name.replace(/\s+/g, "")] : [])));
|
|
101
|
+
}
|
|
102
|
+
/** A REVOKE on an object `created` holds: nobody had the privilege before the migration. */
|
|
103
|
+
function revokesOnNew(step, created) {
|
|
104
|
+
if (step.rule !== "SQLPG297" || !created || created.size === 0)
|
|
105
|
+
return false;
|
|
106
|
+
const on = REVOKE_ON.exec(step.sql)?.[1];
|
|
107
|
+
return on !== undefined && on.split(",").every((n) => created.has(n.replace(/\s+/g, "")));
|
|
108
|
+
}
|
|
80
109
|
/** The statement-rule findings for one step, before levels and silences. */
|
|
81
|
-
export function stepFindings(dialect, step) {
|
|
110
|
+
export function stepFindings(dialect, step, context = {}) {
|
|
82
111
|
const out = [];
|
|
83
112
|
if (step.kind === "statement") {
|
|
84
113
|
if (COMMENT.test(step.sql))
|
|
@@ -89,6 +118,11 @@ export function stepFindings(dialect, step) {
|
|
|
89
118
|
if (dialect === "clickhouse" && (step.class === "rewrite" || step.waitsForMutation === true)) {
|
|
90
119
|
out.push({ rule: "ch-mutation", message: `${what}: a mutation that rewrites existing parts in the background, with no rollback` });
|
|
91
120
|
}
|
|
121
|
+
if (dialect === "clickhouse") {
|
|
122
|
+
const away = takesAccessAway(step);
|
|
123
|
+
if (away)
|
|
124
|
+
out.push({ rule: "ch-access", message: `${what}: ${away}, which changes what a user or role can do: ${step.sql.split("\n")[0] ?? ""}` });
|
|
125
|
+
}
|
|
92
126
|
if (dialect === "postgres") {
|
|
93
127
|
if (step.class === "rewrite") {
|
|
94
128
|
const r = catalog(dialect)[step.rule];
|
|
@@ -97,6 +131,11 @@ export function stepFindings(dialect, step) {
|
|
|
97
131
|
const lock = pgLock(step);
|
|
98
132
|
if (lock)
|
|
99
133
|
out.push({ rule: "pg-lock", message: `${what}: ${lock}` });
|
|
134
|
+
if (step.precheck)
|
|
135
|
+
out.push({ rule: "data-dependent", message: `${what}: can fail on the rows already there (${step.precheck.detail}); yodel apply runs this pre-check before the migration's first statement and refuses when it is not 0: ${step.precheck.sql}` });
|
|
136
|
+
const away = takesAccessAway(step);
|
|
137
|
+
if (away && !revokesOnNew(step, context.created))
|
|
138
|
+
out.push({ rule: "pg-access", message: `${what}: ${away}, which changes what a role can do: ${step.sql.split("\n")[0] ?? ""}` });
|
|
100
139
|
}
|
|
101
140
|
return out;
|
|
102
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../src/lint/statements.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../src/lint/statements.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { SCHEMA_VERSION } from "../schemas.js";
|
|
|
11
11
|
/** The only verbs a tool may run, and only with the flags {@link runVerb} allows. */
|
|
12
12
|
export declare const READ_VERBS: Readonly<Record<string, Command>>;
|
|
13
13
|
/** Never a tool, and never run by one: each writes to a database, a history, the migrations directory or the gate ledger. */
|
|
14
|
-
export declare const WRITE_VERBS: readonly ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init"];
|
|
14
|
+
export declare const WRITE_VERBS: readonly ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init", "test"];
|
|
15
15
|
export interface ToolEnvelope {
|
|
16
16
|
schema: typeof SCHEMA_VERSION;
|
|
17
17
|
tool: string;
|
package/dist/mcp/tools.js
CHANGED
|
@@ -17,7 +17,7 @@ import { status } from "../commands/status.js";
|
|
|
17
17
|
/** The only verbs a tool may run, and only with the flags {@link runVerb} allows. */
|
|
18
18
|
export const READ_VERBS = { status, plan, lint, drift };
|
|
19
19
|
/** Never a tool, and never run by one: each writes to a database, a history, the migrations directory or the gate ledger. */
|
|
20
|
-
export const WRITE_VERBS = ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init"];
|
|
20
|
+
export const WRITE_VERBS = ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init", "test"];
|
|
21
21
|
/** Flags that make a read verb write: a replay database, a checksum, a forge comment, the Op's Apply step. */
|
|
22
22
|
const WRITE_FLAGS = ["--replay", "--reset", "--reset-shared", "--keep", "--update-checksum", "--comment", "--execute"];
|
|
23
23
|
/** Throws when any tool could write: a write verb by name, a verb outside {@link READ_VERBS}, or no read-only annotation. */
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAsC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAE3F,6HAA6H;AAC7H,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,6 @@ import { YodelError } from "../project.js";
|
|
|
23
23
|
import { computeChecksum } from "./checksum.js";
|
|
24
24
|
import { emptyBuild, migrationId, refusedSteps, renderMigrationSql } from "./create.js";
|
|
25
25
|
import { MIGRATION_FORMAT, serializeDocument, sortKeys } from "./document.js";
|
|
26
|
-
import { relabelTriggerCreates } from "./routines.js";
|
|
27
26
|
/** `sha256:<hex>` of a recorded schema, over its JSON with every object's keys sorted. */
|
|
28
27
|
export function schemaSha(schema) {
|
|
29
28
|
return `sha256:${createHash("sha256").update(JSON.stringify(sortKeys(schema)), "utf8").digest("hex")}`;
|
|
@@ -54,7 +53,6 @@ export function createCheckpoint(options) {
|
|
|
54
53
|
catch (e) {
|
|
55
54
|
throw new YodelError(e instanceof Error ? e.message : String(e));
|
|
56
55
|
}
|
|
57
|
-
statements = relabelTriggerCreates(statements, before, schema);
|
|
58
56
|
const refused = refusedSteps(statements.steps);
|
|
59
57
|
if (refused.length > 0) {
|
|
60
58
|
throw new YodelError(`${parent.id}'s recorded schema cannot be created by statements alone (${refused.map((s) => `${s.object}: ${s.kind} step`).join(", ")}); a checkpoint holds statements only`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/migrations/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAyB,MAAM,mDAAmD,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAA+C,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/migrations/checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,26 @@
|
|
|
7
7
|
* the plan digest: editing, adding or removing one moves the digest, and an
|
|
8
8
|
* approval given before does not carry over.
|
|
9
9
|
*/
|
|
10
|
-
import type { MigrationCheck } from "./document.js";
|
|
10
|
+
import type { MigrationCheck, MigrationDocument } from "./document.js";
|
|
11
11
|
export type { MigrationCheck };
|
|
12
|
+
/**
|
|
13
|
+
* A check a migration runs before its first statement: one of its own
|
|
14
|
+
* `checks`, or a statement's pre-check (#51). chant marks a Postgres
|
|
15
|
+
* statement that can fail on the rows already there (a unique index over
|
|
16
|
+
* duplicates, SET NOT NULL over NULLs, a check or foreign key a row breaks)
|
|
17
|
+
* with a query counting those rows; it must return 0. `migration.json`
|
|
18
|
+
* records it on the step, so it is in the checksum like a check.
|
|
19
|
+
*/
|
|
20
|
+
export interface RunnableCheck extends MigrationCheck {
|
|
21
|
+
/** Set on a statement's pre-check: the step, its statement, and what the count is of. */
|
|
22
|
+
step?: {
|
|
23
|
+
index: number;
|
|
24
|
+
sql: string;
|
|
25
|
+
detail: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** The checks run before a migration's first statement: its `checks`, then each statement's pre-check, named `precheck-<step>`. */
|
|
29
|
+
export declare function migrationChecks(doc: Pick<MigrationDocument, "checks" | "steps">): RunnableCheck[];
|
|
12
30
|
/** What is wrong with a `checks` value read from `migration.json`, or `undefined` when it is well formed. */
|
|
13
31
|
export declare function checksProblem(value: unknown): string | undefined;
|
|
14
32
|
/** What a check expects, in words. */
|
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
* the plan digest: editing, adding or removing one moves the digest, and an
|
|
8
8
|
* approval given before does not carry over.
|
|
9
9
|
*/
|
|
10
|
+
/** The checks run before a migration's first statement: its `checks`, then each statement's pre-check, named `precheck-<step>`. */
|
|
11
|
+
export function migrationChecks(doc) {
|
|
12
|
+
const own = [...(doc.checks ?? [])];
|
|
13
|
+
const taken = new Set(own.map((c) => c.name));
|
|
14
|
+
doc.steps.forEach((s, index) => {
|
|
15
|
+
if (s.kind !== "statement" || !s.precheck)
|
|
16
|
+
return;
|
|
17
|
+
let name = `precheck-${String(index)}`;
|
|
18
|
+
while (taken.has(name))
|
|
19
|
+
name = `${name}-statement`;
|
|
20
|
+
taken.add(name);
|
|
21
|
+
own.push({ name, sql: s.precheck.sql, expect: { max: 0 }, step: { index, sql: s.sql, detail: s.precheck.detail } });
|
|
22
|
+
});
|
|
23
|
+
return own;
|
|
24
|
+
}
|
|
10
25
|
const NAME = /^[a-z0-9][a-z0-9_-]*$/;
|
|
11
26
|
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
12
27
|
/** What is wrong with a `checks` value read from `migration.json`, or `undefined` when it is well formed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/migrations/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/migrations/checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import { type DiffStatementsOptions, type SchemaStatements } from "@intentius/ch
|
|
|
11
11
|
import type { BuildOutput } from "../chant/build.js";
|
|
12
12
|
import { type MigrationCheck, type MigrationDocument, type MigrationFiles, type MigrationStep } from "./document.js";
|
|
13
13
|
import { type Migration } from "./directory.js";
|
|
14
|
+
import { type BackfillForm } from "../steps/kinds.js";
|
|
14
15
|
export interface CreateMigrationOptions {
|
|
15
16
|
/** The migration's name, the part of its id after the timestamp. */
|
|
16
17
|
name: string;
|
|
@@ -27,15 +28,23 @@ export interface CreateMigrationOptions {
|
|
|
27
28
|
/** Postgres: the schema a bare name means. Default: chant's, `public`. */
|
|
28
29
|
defaultSchema?: string;
|
|
29
30
|
/**
|
|
30
|
-
* A backfill step to end the migration with (#12):
|
|
31
|
-
*
|
|
32
|
-
* and counted in its checksum.
|
|
33
|
-
* build has no schema change.
|
|
31
|
+
* A backfill step to end the migration with (#12): a form, written as
|
|
32
|
+
* the step's options, or a module's text, written into the migration's
|
|
33
|
+
* directory as `file` (default `backfill.ts`) and counted in its checksum.
|
|
34
|
+
* With one, a migration is made even when the build has no schema change.
|
|
34
35
|
*/
|
|
35
36
|
backfill?: {
|
|
36
37
|
text: string;
|
|
37
38
|
file?: string;
|
|
39
|
+
} | {
|
|
40
|
+
form: BackfillForm;
|
|
38
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* How long a `PostgresMigrationOp` step keeps the old column, or a
|
|
44
|
+
* `ClickHouseRebuildOp` step the old table, after the switch: written
|
|
45
|
+
* into each such step's options (`retain`).
|
|
46
|
+
*/
|
|
47
|
+
retain?: string;
|
|
39
48
|
/** Pre-migration checks (#52), written to `migration.json`. */
|
|
40
49
|
checks?: MigrationCheck[];
|
|
41
50
|
}
|
|
@@ -12,9 +12,8 @@ import { YodelError } from "../project.js";
|
|
|
12
12
|
import { computeChecksum } from "./checksum.js";
|
|
13
13
|
import { MIGRATION_FORMAT, serializeDocument } from "./document.js";
|
|
14
14
|
import { MIGRATION_NAME } from "./directory.js";
|
|
15
|
-
import { asBackfill, BACKFILL_FILE } from "../steps/kinds.js";
|
|
16
|
-
import { backfillStep } from "../steps/backfill.js";
|
|
17
|
-
import { relabelTriggerCreates } from "./routines.js";
|
|
15
|
+
import { asBackfill, BACKFILL_FILE, describeForm, PG_MIGRATION_OP, REBUILD_OP } from "../steps/kinds.js";
|
|
16
|
+
import { backfillFormStep, backfillStep, describeFormSql } from "../steps/backfill.js";
|
|
18
17
|
/** `YYYYMMDDTHHMM` in UTC. */
|
|
19
18
|
export function migrationTimestamp(now) {
|
|
20
19
|
const iso = now.toISOString(); // 2026-10-09T14:12:34.567Z
|
|
@@ -44,8 +43,11 @@ export function emptyBuild(like) {
|
|
|
44
43
|
export const refusedSteps = (steps) => steps.filter((s) => s.kind !== "statement");
|
|
45
44
|
function describeRefused(s) {
|
|
46
45
|
const backfill = asBackfill(s);
|
|
47
|
-
if (backfill)
|
|
46
|
+
if (backfill) {
|
|
47
|
+
if (!("file" in backfill.options))
|
|
48
|
+
return `a backfill of ${describeForm(backfill.options)}, its batches resumable from their receipts`;
|
|
48
49
|
return `a backfill: the Op ${backfill.options.file} exports, its effect() batches resumable from their receipts`;
|
|
50
|
+
}
|
|
49
51
|
const rules = s.changes.map((c) => c.rule).join(", ");
|
|
50
52
|
return s.kind === "op"
|
|
51
53
|
? `${s.op} for ${s.object} (${s.name}), ${rules}: not SQL; migration.json holds its declaration`
|
|
@@ -65,12 +67,24 @@ export function renderMigrationSql(doc, statements) {
|
|
|
65
67
|
const body = statements.steps
|
|
66
68
|
.map((s) => {
|
|
67
69
|
const backfill = asBackfill(s);
|
|
68
|
-
|
|
70
|
+
if (!backfill)
|
|
71
|
+
return renderStatements({ ...statements, steps: [s] });
|
|
72
|
+
if ("file" in backfill.options)
|
|
73
|
+
return `-- ${backfill.object} (${backfill.name}): made by the Op ${backfill.options.file} exports, not a statement\n`;
|
|
74
|
+
const sql = describeFormSql(backfill.options).split("\n").map((l) => `-- ${l}`);
|
|
75
|
+
return `-- ${backfill.object} (${backfill.name}): a backfill of ${describeForm(backfill.options)}, not a statement; each batch runs:\n${sql.join("\n")}\n`;
|
|
69
76
|
})
|
|
70
77
|
.join("\n")
|
|
71
78
|
.replace(/\n+$/, "");
|
|
72
79
|
return `${head.join("\n")}\n\n${body}\n`;
|
|
73
80
|
}
|
|
81
|
+
/** `step` with `retain` in its options (and its declaration) when it is a column migration or a rebuild. */
|
|
82
|
+
function withRetain(step, retain) {
|
|
83
|
+
if (step.kind !== "op" || ![PG_MIGRATION_OP, REBUILD_OP].includes(step.op))
|
|
84
|
+
return step;
|
|
85
|
+
const declaration = /\s*\}\);?\s*$/.test(step.declaration) ? step.declaration.replace(/\s*\}\)(;?)\s*$/, `, retain: ${JSON.stringify(retain)} })$1`) : step.declaration;
|
|
86
|
+
return { ...step, options: { ...step.options, retain }, declaration };
|
|
87
|
+
}
|
|
74
88
|
/**
|
|
75
89
|
* The next migration, or a {@link NoChange} when the build declares the
|
|
76
90
|
* schema the previous migration recorded. Throws a YodelError when the
|
|
@@ -91,10 +105,11 @@ export function createMigration(options) {
|
|
|
91
105
|
catch (e) {
|
|
92
106
|
throw new YodelError(e instanceof Error ? e.message : String(e));
|
|
93
107
|
}
|
|
94
|
-
|
|
108
|
+
if (options.retain !== undefined)
|
|
109
|
+
statements = { ...statements, steps: statements.steps.map((s) => withRetain(s, options.retain)) };
|
|
95
110
|
if (options.backfill) {
|
|
96
|
-
const
|
|
97
|
-
statements = { ...statements, refused: true, steps: [...statements.steps,
|
|
111
|
+
const step = "form" in options.backfill ? backfillFormStep(options.name, options.backfill.form) : backfillStep(options.name, options.backfill.file ?? BACKFILL_FILE);
|
|
112
|
+
statements = { ...statements, refused: true, steps: [...statements.steps, step] };
|
|
98
113
|
}
|
|
99
114
|
if (statements.steps.length === 0)
|
|
100
115
|
return { id: undefined, statements };
|
|
@@ -115,7 +130,7 @@ export function createMigration(options) {
|
|
|
115
130
|
schema: options.build,
|
|
116
131
|
};
|
|
117
132
|
const sql = renderMigrationSql(unsigned, statements);
|
|
118
|
-
const extra = options.backfill ? { [options.backfill.file ?? BACKFILL_FILE]: options.backfill.text } : undefined;
|
|
133
|
+
const extra = options.backfill && "text" in options.backfill ? { [options.backfill.file ?? BACKFILL_FILE]: options.backfill.text } : undefined;
|
|
119
134
|
const document = { ...unsigned, checksum: computeChecksum({ sql, json: unsigned, extra }) };
|
|
120
135
|
return { id, document, files: { sql, json: serializeDocument(document), ...(extra ? { extra } : {}) }, statements };
|
|
121
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/migrations/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAqD,MAAM,mDAAmD,CAAC;AACxJ,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAwF,MAAM,eAAe,CAAC;AAC1J,OAAO,EAAE,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/migrations/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Postgres functions, procedures and triggers in a migration (#44)
|
|
2
|
+
* Postgres functions, procedures and triggers in a migration (#44): the
|
|
3
|
+
* objects of a Postgres build as chant's plan reads them, for lint.
|
|
3
4
|
*
|
|
4
|
-
* chant
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* create, as if the table were new. A plan policy or a reviewer reading
|
|
8
|
-
* `create` would take it for a statement that blocks nobody, so `yodel new`
|
|
9
|
-
* gives those statements the change's rule and class.
|
|
5
|
+
* chant labels a trigger created on a table that already exists SQLPG283
|
|
6
|
+
* (metadata: SHARE ROW EXCLUSIVE on the table) itself, and one created
|
|
7
|
+
* with its table SQLPG200 create.
|
|
10
8
|
*/
|
|
11
|
-
import type { SchemaStatements } from "@intentius/chant-lexicon-sql/migration-statements";
|
|
12
9
|
import type { BuildOutput } from "../chant/build.js";
|
|
13
|
-
export declare const PG_TRIGGER = "Postgres::Trigger";
|
|
14
10
|
/** A Postgres build's objects as chant's plan reads them: kind, schema-qualified names, a trigger's table and function. */
|
|
15
11
|
export interface PgObject {
|
|
16
12
|
export: string;
|
|
@@ -23,9 +19,3 @@ export interface PgObject {
|
|
|
23
19
|
}
|
|
24
20
|
/** The objects of a Postgres build, canonical; `[]` for a build the lexicon cannot read (lint reports that on its own). */
|
|
25
21
|
export declare function pgObjects(build: BuildOutput, defaultSchema?: string): PgObject[];
|
|
26
|
-
/**
|
|
27
|
-
* The statements with each `CREATE TRIGGER` on a table `before` already
|
|
28
|
-
* declares (and its `COMMENT ON TRIGGER`) labelled SQLPG283, the rule the
|
|
29
|
-
* diff gave the change, in place of SQLPG200 create.
|
|
30
|
-
*/
|
|
31
|
-
export declare function relabelTriggerCreates(statements: SchemaStatements, before: BuildOutput, after: BuildOutput): SchemaStatements;
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Postgres functions, procedures and triggers in a migration (#44)
|
|
2
|
+
* Postgres functions, procedures and triggers in a migration (#44): the
|
|
3
|
+
* objects of a Postgres build as chant's plan reads them, for lint.
|
|
3
4
|
*
|
|
4
|
-
* chant
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* create, as if the table were new. A plan policy or a reviewer reading
|
|
8
|
-
* `create` would take it for a statement that blocks nobody, so `yodel new`
|
|
9
|
-
* gives those statements the change's rule and class.
|
|
5
|
+
* chant labels a trigger created on a table that already exists SQLPG283
|
|
6
|
+
* (metadata: SHARE ROW EXCLUSIVE on the table) itself, and one created
|
|
7
|
+
* with its table SQLPG200 create.
|
|
10
8
|
*/
|
|
11
|
-
import { PG_CLASSIFIER_RULES } from "@intentius/chant-lexicon-sql/postgres/plan/rules";
|
|
12
9
|
import { pgSchemaFromBuildOutput } from "@intentius/chant-lexicon-sql/postgres/plan/schema";
|
|
13
|
-
export const PG_TRIGGER = "Postgres::Trigger";
|
|
14
10
|
/** The objects of a Postgres build, canonical; `[]` for a build the lexicon cannot read (lint reports that on its own). */
|
|
15
11
|
export function pgObjects(build, defaultSchema = "public") {
|
|
16
12
|
if (build.dialect !== "postgres" || !Array.isArray(build.objects))
|
|
@@ -31,25 +27,4 @@ export function pgObjects(build, defaultSchema = "public") {
|
|
|
31
27
|
return [];
|
|
32
28
|
}
|
|
33
29
|
}
|
|
34
|
-
/**
|
|
35
|
-
* The statements with each `CREATE TRIGGER` on a table `before` already
|
|
36
|
-
* declares (and its `COMMENT ON TRIGGER`) labelled SQLPG283, the rule the
|
|
37
|
-
* diff gave the change, in place of SQLPG200 create.
|
|
38
|
-
*/
|
|
39
|
-
export function relabelTriggerCreates(statements, before, after) {
|
|
40
|
-
if (statements.dialect !== "postgres")
|
|
41
|
-
return statements;
|
|
42
|
-
const schema = statements.defaultSchema ?? "public";
|
|
43
|
-
const tables = new Set(pgObjects(before, schema).filter((o) => o.kind === "table").map((o) => o.qualified));
|
|
44
|
-
if (tables.size === 0)
|
|
45
|
-
return statements;
|
|
46
|
-
const onExisting = new Set(pgObjects(after, schema)
|
|
47
|
-
.filter((o) => o.kind === "trigger" && tables.has(String(o.fields.table)))
|
|
48
|
-
.map((o) => o.export));
|
|
49
|
-
if (onExisting.size === 0)
|
|
50
|
-
return statements;
|
|
51
|
-
const rule = PG_CLASSIFIER_RULES.SQLPG283;
|
|
52
|
-
const steps = statements.steps.map((s) => s.kind === "statement" && s.type === PG_TRIGGER && s.rule === "SQLPG200" && s.class === "create" && onExisting.has(s.object) ? { ...s, rule: rule.id, class: rule.class } : s);
|
|
53
|
-
return { ...statements, steps };
|
|
54
|
-
}
|
|
55
30
|
//# sourceMappingURL=routines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routines.js","sourceRoot":"","sources":["../../src/migrations/routines.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routines.js","sourceRoot":"","sources":["../../src/migrations/routines.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAc5F,2HAA2H;AAC3H,MAAM,UAAU,SAAS,CAAC,KAAkB,EAAE,aAAa,GAAG,QAAQ;IACpE,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7E,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG;gBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9F,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/pr/model.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* no ledger entry.
|
|
11
11
|
*/
|
|
12
12
|
import type { MigrationStep } from "@intentius/chant-lexicon-sql/migration-statements";
|
|
13
|
+
import { type EnvironmentApprovalMode } from "../approval-mode/index.js";
|
|
13
14
|
import type { GateLedgerPort } from "@intentius/chant/op/gate";
|
|
14
15
|
import { type Environment, type Project, type SqlDialect } from "../project.js";
|
|
15
16
|
import { type MigrationCheck } from "../migrations/index.js";
|
|
@@ -36,7 +37,7 @@ export interface PendingView {
|
|
|
36
37
|
outOfOrder: boolean;
|
|
37
38
|
/** Where a migration that ran part way resumes. */
|
|
38
39
|
resumeAt?: number | undefined;
|
|
39
|
-
/** Its pre-migration checks (#52), run before its first statement. */
|
|
40
|
+
/** Its pre-migration checks (#52) and its statements' pre-checks (#51), run before its first statement. */
|
|
40
41
|
checks?: MigrationCheck[] | undefined;
|
|
41
42
|
steps: StepView[];
|
|
42
43
|
}
|
|
@@ -55,6 +56,8 @@ export type ApprovalView = {
|
|
|
55
56
|
}) | undefined;
|
|
56
57
|
/** Why the ledger was not read. */
|
|
57
58
|
ledgerNote?: string | undefined;
|
|
59
|
+
/** Which approvals of the gate count (#48), as yodel.config.ts at the base commit has it; absent, `ledger`. */
|
|
60
|
+
mode?: EnvironmentApprovalMode | undefined;
|
|
58
61
|
};
|
|
59
62
|
export interface VersionedPlan {
|
|
60
63
|
environment: string;
|