@vibeorm/migrate 2.0.0-alpha.7 → 2.0.0-alpha.8
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/dist/ddl/render.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +4 -4
- package/package.json +3 -3
package/dist/ddl/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ddl/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ddl/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,MAAM,EAAE,CAsBX"}
|
package/dist/index.js
CHANGED
|
@@ -1771,6 +1771,8 @@ function columnDefSql3(params) {
|
|
|
1771
1771
|
});
|
|
1772
1772
|
}
|
|
1773
1773
|
let def = `${name} ${mysqlColumnTypeSql({ field, enums })}`;
|
|
1774
|
+
if (field.collation !== undefined)
|
|
1775
|
+
def += ` COLLATE ${field.collation}`;
|
|
1774
1776
|
if (!field.isOptional)
|
|
1775
1777
|
def += " NOT NULL";
|
|
1776
1778
|
if (autoincrement)
|
|
@@ -4086,4 +4088,4 @@ export {
|
|
|
4086
4088
|
MIGRATIONS_TABLE_NAME
|
|
4087
4089
|
};
|
|
4088
4090
|
|
|
4089
|
-
//# debugId=
|
|
4091
|
+
//# debugId=70C1B35231C75DF864756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"/**\n * Postgres DDL renderer: migration steps → SQL statements.\n *\n * Every identifier is quoted through `postgresDialect.quoteIdent` — the ONE\n * quoting decision point (@vibeorm/sql). Choices, each pinned by a renderer\n * test:\n *\n * - autoincrement renders as `GENERATED BY DEFAULT AS IDENTITY` (SQL-standard,\n * no sequence-name coupling; postgres ≥10 and pglite both support it) — not\n * SERIAL. The introspector maps identity columns back to autoincrement.\n * - `DROP TABLE ... CASCADE`: inbound FK constraints drop with the table.\n * - scalar→array type changes carry the LEARNINGS `USING CASE WHEN col IS NULL\n * THEN NULL ELSE ARRAY[col] END` repair clause (postgres cannot implicit-cast).\n * - `ALTER TYPE ... ADD VALUE IF NOT EXISTS` appends at the end of the enum\n * (no BEFORE/AFTER positioning); fine inside a transaction on postgres ≥12.\n * - Unsupported columns render their `nativeType` verbatim and migrate like\n * any other column.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { FieldIR } from \"@vibeorm/schema\";\nimport { postgresDialect } from \"@vibeorm/sql\";\nimport {\n CASCADE_ACTION_SQL,\n columnTypeSql,\n defaultSql,\n isIdentityColumn,\n quotePgString,\n} from \"../postgres-types.ts\";\nimport type { MigrationStep } from \"../types.ts\";\n\n// ─── Public API ───────────────────────────────────────────────────\n\n/** Render migration steps to postgres SQL (one string per statement, in order). */\nexport function renderPostgresSteps(params: { steps: readonly MigrationStep[] }): string[] {\n return params.steps.flatMap((step) => renderStep({ step }));\n}\n\n// ─── Per-step rendering ───────────────────────────────────────────\n\nfunction renderStep(params: { step: MigrationStep }): string[] {\n const { step } = params;\n switch (step.kind) {\n case \"createEnum\": {\n const name = step.enumDef.dbName ?? step.enumDef.name;\n const values = step.enumDef.values.map((value) => quotePgString({ value })).join(\", \");\n return [`CREATE TYPE ${q(name)} AS ENUM (${values});`];\n }\n case \"dropEnum\":\n return [`DROP TYPE ${q(step.enumName)};`];\n case \"addEnumValue\":\n return [\n `ALTER TYPE ${q(step.enumName)} ADD VALUE IF NOT EXISTS ${quotePgString({ value: step.value })};`,\n ];\n case \"createTable\": {\n const lines = step.columns.map((column) => ` ${columnDefSql({ field: column })}`);\n if (step.primaryKey.length > 0) {\n const pkCols = step.primaryKey.map((column) => q(column)).join(\", \");\n lines.push(` CONSTRAINT ${q(`${step.table}_pkey`)} PRIMARY KEY (${pkCols})`);\n }\n for (const check of step.checks ?? []) {\n lines.push(` CONSTRAINT ${q(check.name)} CHECK (${check.expression})`);\n }\n return [`CREATE TABLE ${q(step.table)} (\\n${lines.join(\",\\n\")}\\n);`];\n }\n case \"dropTable\":\n case \"dropJoinTable\":\n return [`DROP TABLE ${q(step.table)} CASCADE;`];\n case \"dropView\":\n // No CASCADE: a view-on-view dependency fails LOUDLY instead of silently\n // taking a surviving dependent view with it (#26).\n return [`DROP VIEW IF EXISTS ${q(step.table)};`];\n case \"addColumn\":\n return [`ALTER TABLE ${q(step.table)} ADD COLUMN ${columnDefSql({ field: step.column })};`];\n case \"dropColumn\":\n return [`ALTER TABLE ${q(step.table)} DROP COLUMN ${q(step.column)};`];\n case \"alterColumn\":\n return renderAlterColumn({ step });\n case \"createIndex\": {\n const unique = step.unique ? \"UNIQUE \" : \"\";\n const using = !step.unique && step.indexKind !== \"btree\" ? ` USING ${step.indexKind}` : \"\";\n const cols = step.columns\n .map((column) => `${q(column.name)}${column.desc ? \" DESC\" : \"\"}`)\n .join(\", \");\n // pg 15+ clause; the flag sits between the column list and WHERE.\n const nulls = step.nullsNotDistinct === true ? \" NULLS NOT DISTINCT\" : \"\";\n const where = step.where === undefined ? \"\" : ` WHERE ${step.where}`;\n return [\n `CREATE ${unique}INDEX ${q(step.name)} ON ${q(step.table)}${using} (${cols})${nulls}${where};`,\n ];\n }\n case \"dropIndex\":\n return [`DROP INDEX ${q(step.name)};`];\n case \"addCheck\":\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.name)} CHECK (${step.expression});`,\n ];\n case \"dropCheck\":\n return [`ALTER TABLE ${q(step.table)} DROP CONSTRAINT ${q(step.name)};`];\n case \"addForeignKey\": {\n const cols = step.columns.map((column) => q(column)).join(\", \");\n const refCols = step.refColumns.map((column) => q(column)).join(\", \");\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.constraintName)} FOREIGN KEY (${cols}) REFERENCES ${q(step.refTable)} (${refCols}) ON DELETE ${CASCADE_ACTION_SQL[step.onDelete]} ON UPDATE ${CASCADE_ACTION_SQL[step.onUpdate]};`,\n ];\n }\n case \"dropForeignKey\":\n return [`ALTER TABLE ${q(step.table)} DROP CONSTRAINT ${q(step.constraintName)};`];\n case \"createJoinTable\": {\n // Prisma's implicit join-table shape: columns \"A\"/\"B\", a unique index on\n // (A, B), an index on B, both FKs cascading (see @vibeorm/schema m2m.ts).\n const aType = columnTypeSql({ field: { ...step.a.field, isList: false } });\n const bType = columnTypeSql({ field: { ...step.b.field, isList: false } });\n return [\n `CREATE TABLE ${q(step.table)} (\\n \"A\" ${aType} NOT NULL,\\n \"B\" ${bType} NOT NULL\\n);`,\n `CREATE UNIQUE INDEX ${q(`${step.table}_AB_unique`)} ON ${q(step.table)} (\"A\", \"B\");`,\n `CREATE INDEX ${q(`${step.table}_B_index`)} ON ${q(step.table)} (\"B\");`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_A_fkey`)} FOREIGN KEY (\"A\") REFERENCES ${q(step.a.table)} (${q(step.a.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_B_fkey`)} FOREIGN KEY (\"B\") REFERENCES ${q(step.b.table)} (${q(step.b.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n ];\n }\n case \"addPrimaryKey\": {\n const cols = step.columns.map((column) => q(column)).join(\", \");\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_pkey`)} PRIMARY KEY (${cols});`,\n ];\n }\n case \"dropPrimaryKey\":\n return [`ALTER TABLE ${q(step.table)} DROP CONSTRAINT ${q(`${step.table}_pkey`)};`];\n }\n}\n\n// ─── Column pieces ────────────────────────────────────────────────\n\nfunction columnDefSql(params: { field: FieldIR }): string {\n const { field } = params;\n const name = q(field.dbName ?? field.name);\n\n if (field.default?.kind === \"autoincrement\" && !isIdentityColumn({ field })) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `autoincrement default on \"${field.name}\" requires a non-list Int or BigInt column`,\n meta: { field: field.name },\n });\n }\n\n let def = `${name} ${columnTypeSql({ field })}`;\n if (isIdentityColumn({ field })) def += \" GENERATED BY DEFAULT AS IDENTITY\";\n if (!field.isOptional) def += \" NOT NULL\";\n const defaultExpr = defaultSql({ field });\n if (defaultExpr !== undefined) def += ` DEFAULT ${defaultExpr}`;\n return def;\n}\n\nfunction renderAlterColumn(params: {\n step: Extract<MigrationStep, { kind: \"alterColumn\" }>;\n}): string[] {\n const { step } = params;\n const statements: string[] = [];\n const column = q(step.column);\n const alterPrefix = `ALTER TABLE ${q(step.table)} ALTER COLUMN ${column}`;\n\n if (step.changes.includes(\"type\")) {\n // LEARNINGS: scalar→array of the same base type needs a USING repair —\n // postgres cannot implicit-cast a scalar into a one-element array.\n const scalarToArray =\n step.to.isList && !step.from.isList\n ? ` USING CASE WHEN ${column} IS NULL THEN NULL ELSE ARRAY[${column}] END`\n : \"\";\n statements.push(\n `${alterPrefix} SET DATA TYPE ${columnTypeSql({ field: step.to })}${scalarToArray};`,\n );\n }\n\n if (step.changes.includes(\"nullability\")) {\n statements.push(`${alterPrefix} ${step.to.isOptional ? \"DROP\" : \"SET\"} NOT NULL;`);\n }\n\n if (step.changes.includes(\"default\")) {\n if (step.to.default?.kind === \"autoincrement\") {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `cannot add autoincrement to existing column \"${step.table}\".\"${step.column}\" — drop and recreate the column instead`,\n meta: { table: step.table, column: step.column },\n });\n }\n const defaultExpr = defaultSql({ field: step.to });\n statements.push(\n defaultExpr === undefined\n ? `${alterPrefix} DROP DEFAULT;`\n : `${alterPrefix} SET DEFAULT ${defaultExpr};`,\n );\n }\n\n return statements;\n}\n\n// ─── Quoting ──────────────────────────────────────────────────────\n\nfunction q(name: string): string {\n return postgresDialect.quoteIdent({ name });\n}\n",
|
|
14
14
|
"/**\n * SQLite DDL renderer: migration steps → SQL statements, including THE TABLE\n * REBUILD — sqlite has no ALTER COLUMN, cannot add/drop constraints, and its\n * DROP COLUMN is heavily restricted, so any such step compiles to the\n * documented 12-step recipe (https://sqlite.org/lang_altertable.html §7),\n * emitted as an ordered, self-contained statement block:\n *\n * PRAGMA foreign_keys=OFF;\n * BEGIN;\n * CREATE TABLE \"T_new\" (…target shape: columns, PK, FKs, enum CHECKs…);\n * INSERT INTO \"T_new\" (common cols) SELECT common cols FROM \"T\";\n * DROP TABLE \"T\";\n * ALTER TABLE \"T_new\" RENAME TO \"T\";\n * CREATE …INDEX… (every index of the target table);\n * PRAGMA foreign_key_check;\n * COMMIT;\n * PRAGMA foreign_keys=ON;\n *\n * Because the block manages its own transaction (PRAGMA foreign_keys is a\n * no-op inside one), callers must NOT wrap scripts containing it — push and\n * the runner detect this via `usesSelfManagedTransactions` (execute.ts).\n * Rebuild blocks are emitted AFTER all other statements so a rebuilt table's\n * new FKs can reference tables created earlier in the same script.\n *\n * Cheap paths are preferred wherever sqlite's plain ALTER suffices:\n * `ADD COLUMN` (unless the column is required without a literal default, or\n * defaults to CURRENT_TIMESTAMP / an expression — both forbidden in ADD\n * COLUMN) and `DROP COLUMN` (unless the column is in the PK, any index or\n * partial-index predicate, an FK on either side, or carries an enum CHECK).\n *\n * Column-value transfer on rebuild: dropped columns are omitted, added\n * columns take their default (or NULL), type-changed columns are a PLAIN COPY\n * — sqlite's flexible typing keeps the stored values as-is, so e.g. non-numeric\n * TEXT survives verbatim inside an INTEGER column (documented lossy-ness:\n * nothing is coerced, nothing is validated beyond the new CHECK constraints).\n *\n * Other pinned choices:\n * - autoincrement renders `INTEGER PRIMARY KEY AUTOINCREMENT` (monotonic ids,\n * Prisma parity) — plain `INTEGER PRIMARY KEY` would reuse rowids after\n * deletes. The `PRIMARY KEY AUTOINCREMENT` text is also the introspection\n * marker. Costs the `sqlite_sequence` bookkeeping table (skipped on pull).\n * - Composite / non-autoincrement PKs render as an unnamed table-level\n * `PRIMARY KEY (…)` (sqlite keeps constraint names only as noise).\n * - Enums render TEXT + a NAMED column-level CHECK (see sqlite-types.ts) —\n * the name (`<table>_<column>_enum_<Enum>`) is how pull recovers the enum.\n * - `DROP TABLE` has no CASCADE on sqlite; table drops are topologically\n * ordered (referencing tables first) using the `from` schema.\n * - Index kinds other than btree/unique throw VIBE_UNSUPPORTED_CAPABILITY.\n */\n\nimport { VibeError, isEnumType, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { EnumIR, FieldIR, SchemaIR } from \"@vibeorm/schema\";\nimport { sqliteDialect } from \"@vibeorm/sql\";\nimport { resolveEnumValues } from \"../enum-values.ts\";\nimport { orderDropsChildrenFirst } from \"./drop-order.ts\";\nimport { normalizeSchema } from \"../normalize.ts\";\nimport type { NormalizedSchema, NormalizedTable } from \"../normalize.ts\";\nimport { CASCADE_ACTION_SQL, quotePgString } from \"../postgres-types.ts\";\nimport {\n sqliteDefaultSql,\n sqliteEnumCheckName,\n sqliteStorageType,\n} from \"../sqlite-types.ts\";\nimport { describeStep } from \"../types.ts\";\nimport type { IndexColumn, MigrationStep } from \"../types.ts\";\n\n// ─── Public API ───────────────────────────────────────────────────\n\n/**\n * Render migration steps to sqlite SQL. `from`/`to` (the schemas that produced\n * the steps) are required whenever a step triggers a table rebuild or renders\n * an enum column — `generateMigration` and `push` always pass them.\n */\nexport function renderSqliteSteps(params: {\n steps: readonly MigrationStep[];\n from?: SchemaIR;\n to?: SchemaIR;\n}): string[] {\n const { steps } = params;\n const fromNorm = params.from === undefined\n ? undefined\n : normalizeSchema({ schema: params.from, dialect: \"sqlite\" });\n const toNorm = params.to === undefined\n ? undefined\n : normalizeSchema({ schema: params.to, dialect: \"sqlite\" });\n const enums: ReadonlyMap<string, EnumIR> = toNorm?.enums ?? new Map();\n\n // ── Classification: which tables need the rebuild recipe? ──\n const createdTables = new Set<string>();\n for (const step of steps) {\n if (step.kind === \"createTable\" || step.kind === \"createJoinTable\") {\n createdTables.add(step.table);\n }\n }\n\n const foldedFks = new Map<string, Extract<MigrationStep, { kind: \"addForeignKey\" }>[]>();\n const rebuildTables: string[] = []; // Insertion order = deterministic block order.\n const markRebuild = (table: string): void => {\n if (!rebuildTables.includes(table)) rebuildTables.push(table);\n };\n\n for (const step of steps) {\n switch (step.kind) {\n case \"alterColumn\":\n case \"dropForeignKey\":\n case \"addPrimaryKey\":\n case \"dropPrimaryKey\":\n // sqlite has no ALTER for CHECK constraints — both directions rebuild.\n case \"addCheck\":\n case \"dropCheck\":\n markRebuild(step.table);\n break;\n case \"addColumn\":\n if (!isCheapAddColumn({ field: step.column })) markRebuild(step.table);\n break;\n case \"dropColumn\":\n if (!canCheapDropColumn({ table: step.table, column: step.column, fromNorm })) {\n markRebuild(step.table);\n }\n break;\n case \"addForeignKey\":\n if (createdTables.has(step.table)) {\n const list = foldedFks.get(step.table);\n if (list === undefined) foldedFks.set(step.table, [step]);\n else list.push(step);\n } else {\n markRebuild(step.table);\n }\n break;\n default:\n break;\n }\n }\n const rebuildSet = new Set(rebuildTables);\n\n // ── Topological drop order (referencing tables first — no CASCADE). ──\n const dropNames = steps\n .filter((step) => step.kind === \"dropTable\" || step.kind === \"dropJoinTable\")\n .map((step) => (step as Extract<MigrationStep, { kind: \"dropTable\" }>).table);\n const orderedDrops = orderDropsChildrenFirst({ names: dropNames, fromNorm });\n let dropCursor = 0;\n\n // ── Emission: step order, rebuild-triggering steps absorbed. ──\n const statements: string[] = [];\n for (const step of steps) {\n switch (step.kind) {\n case \"createEnum\":\n case \"dropEnum\":\n case \"addEnumValue\":\n break; // No standalone enum objects on sqlite — enums live in columns.\n case \"createTable\":\n statements.push(\n createTableSql({\n table: step.table,\n constraintTable: step.table,\n columns: step.columns,\n primaryKey: step.primaryKey,\n checks: step.checks ?? [],\n fks: (foldedFks.get(step.table) ?? []).map((fk) => ({\n constraintName: fk.constraintName,\n columns: fk.columns,\n refTable: fk.refTable,\n refColumns: fk.refColumns,\n onDelete: CASCADE_ACTION_SQL[fk.onDelete],\n onUpdate: CASCADE_ACTION_SQL[fk.onUpdate],\n })),\n enums,\n }),\n );\n break;\n case \"addCheck\":\n case \"dropCheck\":\n break; // Absorbed by the table rebuild classified above.\n case \"createJoinTable\": {\n const aType = sqliteStorageType({ field: { ...step.a.field, isList: false } });\n const bType = sqliteStorageType({ field: { ...step.b.field, isList: false } });\n statements.push(\n `CREATE TABLE ${q(step.table)} (\\n \"A\" ${aType} NOT NULL,\\n \"B\" ${bType} NOT NULL,\\n CONSTRAINT ${q(`${step.table}_A_fkey`)} FOREIGN KEY (\"A\") REFERENCES ${q(step.a.table)} (${q(step.a.column)}) ON DELETE CASCADE ON UPDATE CASCADE,\\n CONSTRAINT ${q(`${step.table}_B_fkey`)} FOREIGN KEY (\"B\") REFERENCES ${q(step.b.table)} (${q(step.b.column)}) ON DELETE CASCADE ON UPDATE CASCADE\\n);`,\n `CREATE UNIQUE INDEX ${q(`${step.table}_AB_unique`)} ON ${q(step.table)} (\"A\", \"B\");`,\n `CREATE INDEX ${q(`${step.table}_B_index`)} ON ${q(step.table)} (\"B\");`,\n );\n break;\n }\n case \"addColumn\":\n if (!rebuildSet.has(step.table)) {\n statements.push(\n `ALTER TABLE ${q(step.table)} ADD COLUMN ${columnDefSql({\n field: step.column,\n constraintTable: step.table,\n enums,\n inlinePkAutoincrement: false,\n })};`,\n );\n }\n break;\n case \"dropColumn\":\n if (!rebuildSet.has(step.table)) {\n statements.push(`ALTER TABLE ${q(step.table)} DROP COLUMN ${q(step.column)};`);\n }\n break;\n case \"createIndex\":\n if (!rebuildSet.has(step.table)) {\n statements.push(\n createIndexSql({\n table: step.table,\n name: step.name,\n unique: step.unique,\n kind: step.indexKind,\n columns: step.columns,\n where: step.where,\n nullsNotDistinct: step.nullsNotDistinct,\n }),\n );\n }\n break;\n case \"dropIndex\":\n // Always emitted — dropping an index of a soon-rebuilt table early is\n // harmless (the rebuild recreates the target set) and keeps the\n // GLOBAL index namespace clean for later creates.\n statements.push(`DROP INDEX ${q(step.name)};`);\n break;\n case \"dropTable\":\n case \"dropJoinTable\":\n statements.push(`DROP TABLE ${q(orderedDrops[dropCursor] as string)};`);\n dropCursor += 1;\n break;\n case \"dropView\":\n // Ordered first by the differ (#26) — a leftover view would otherwise\n // block the column drops (or rebuilds) beneath it.\n statements.push(`DROP VIEW IF EXISTS ${q(step.table)};`);\n break;\n case \"alterColumn\":\n case \"addForeignKey\":\n case \"dropForeignKey\":\n case \"addPrimaryKey\":\n case \"dropPrimaryKey\":\n if (\n (step.kind === \"addForeignKey\" && createdTables.has(step.table)) ||\n !rebuildSet.has(step.table)\n ) {\n break; // Folded into CREATE TABLE, or absorbed by that table's rebuild.\n }\n requireSchemas({ step, fromNorm, toNorm });\n break;\n }\n }\n\n // ── Rebuild blocks last (new FK targets already exist by now). ──\n for (const table of rebuildTables) {\n const step = steps.find(\n (candidate) => \"table\" in candidate && candidate.table === table,\n ) as MigrationStep;\n requireSchemas({ step, fromNorm, toNorm });\n statements.push(\n ...renderTableRebuild({\n table,\n from: fromNorm as NormalizedSchema,\n to: toNorm as NormalizedSchema,\n }),\n );\n }\n\n return statements;\n}\n\n// ─── The table rebuild ────────────────────────────────────────────\n\nfunction renderTableRebuild(params: {\n table: string;\n from: NormalizedSchema;\n to: NormalizedSchema;\n}): string[] {\n const { table, from, to } = params;\n const source = from.tables.get(table);\n const target = to.tables.get(table);\n if (source === undefined || target === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `cannot rebuild \"${table}\" — the table is missing from the ${source === undefined ? \"from\" : \"to\"} schema`,\n meta: { table },\n });\n }\n\n const tmp = `${table}_new`;\n const statements: string[] = [\"PRAGMA foreign_keys=OFF;\", \"BEGIN;\"];\n\n statements.push(\n createTableSql({\n table: tmp,\n // CHECK-constraint names carry the FINAL table name so introspection\n // recovers enums after the RENAME.\n constraintTable: table,\n columns: [...target.columns.values()].map((column) => column.field),\n primaryKey: target.pk,\n checks: [...target.checks].map(([name, expression]) => ({ name, expression })),\n fks: [...target.fks.values()].map((fk) => ({\n constraintName: fk.constraintName,\n columns: fk.columns,\n refTable: fk.refTable,\n refColumns: fk.refColumns,\n onDelete: CASCADE_ACTION_SQL[fk.onDelete],\n onUpdate: CASCADE_ACTION_SQL[fk.onUpdate],\n })),\n enums: to.enums,\n }),\n );\n\n // Transfer: target-order intersection of the two column sets. Dropped\n // columns are omitted; added columns take their default/NULL; type changes\n // copy values verbatim (see module doc for the lossy-ness contract).\n const common = [...target.columns.keys()].filter((name) => source.columns.has(name));\n if (common.length > 0) {\n const cols = common.map((name) => q(name)).join(\", \");\n statements.push(`INSERT INTO ${q(tmp)} (${cols}) SELECT ${cols} FROM ${q(table)};`);\n }\n\n statements.push(`DROP TABLE ${q(table)};`, `ALTER TABLE ${q(tmp)} RENAME TO ${q(table)};`);\n\n for (const index of target.indexes.values()) {\n statements.push(\n createIndexSql({\n table,\n name: index.name,\n unique: index.unique,\n kind: index.kind,\n columns: index.columns,\n where: index.where,\n nullsNotDistinct: index.nullsNotDistinct,\n }),\n );\n }\n\n statements.push(\"PRAGMA foreign_key_check;\", \"COMMIT;\", \"PRAGMA foreign_keys=ON;\");\n return statements;\n}\n\n// ─── Cheap-path detection ─────────────────────────────────────────\n\n/**\n * `ALTER TABLE … ADD COLUMN` suffices unless sqlite forbids the shape: the\n * new column may not default to CURRENT_* or an expression, and a NOT NULL\n * column needs a literal default (app-level id generators provide none).\n */\nfunction isCheapAddColumn(params: { field: FieldIR }): boolean {\n const { field } = params;\n const kind = field.default?.kind;\n if (kind === \"autoincrement\" || kind === \"now\" || kind === \"dbgenerated\") return false;\n const hasLiteralDefault = kind === \"literal\" || kind === \"enumValue\";\n if (!field.isOptional && !hasLiteralDefault) return false;\n return true;\n}\n\n/**\n * `ALTER TABLE … DROP COLUMN` works only when nothing references the column:\n * not the PK, no index (or partial-index predicate), no FK on either side, no\n * enum CHECK. Without the `from` schema the answer is unknowable → rebuild.\n */\nfunction canCheapDropColumn(params: {\n table: string;\n column: string;\n fromNorm: NormalizedSchema | undefined;\n}): boolean {\n const { table, column, fromNorm } = params;\n if (fromNorm === undefined) return false;\n const fromTable = fromNorm.tables.get(table);\n if (fromTable === undefined) return false;\n\n if (fromTable.pk.includes(column)) return false;\n const normalized = fromTable.columns.get(column);\n if (normalized !== undefined && isEnumType(normalized.field.type)) return false;\n for (const index of fromTable.indexes.values()) {\n if (index.columns.some((indexColumn) => indexColumn.name === column)) return false;\n if (index.where !== undefined && index.where.includes(column)) return false;\n }\n for (const fk of fromTable.fks.values()) {\n if (fk.columns.includes(column)) return false;\n }\n for (const other of fromNorm.tables.values()) {\n for (const fk of other.fks.values()) {\n if (fk.refTable === table && fk.refColumns.includes(column)) return false;\n }\n }\n return true;\n}\n\n// ─── Table & column pieces ────────────────────────────────────────\n\ntype InlineFk = {\n readonly constraintName: string;\n readonly columns: readonly string[];\n readonly refTable: string;\n readonly refColumns: readonly string[];\n readonly onDelete: string;\n readonly onUpdate: string;\n};\n\nfunction createTableSql(params: {\n table: string;\n /** Table name used in CHECK-constraint names (the FINAL name on rebuilds). */\n constraintTable: string;\n columns: readonly FieldIR[];\n primaryKey: readonly string[];\n /** User-declared named CHECK constraints (raw expressions, verbatim). */\n checks: readonly { readonly name: string; readonly expression: string }[];\n fks: readonly InlineFk[];\n enums: ReadonlyMap<string, EnumIR>;\n}): string {\n const { table, constraintTable, columns, primaryKey, fks, enums } = params;\n\n const autoincrementPk = autoincrementPkColumn({ columns, primaryKey });\n const lines = columns.map(\n (field) =>\n ` ${columnDefSql({\n field,\n constraintTable,\n enums,\n inlinePkAutoincrement: (field.dbName ?? field.name) === autoincrementPk,\n })}`,\n );\n\n if (primaryKey.length > 0 && autoincrementPk === undefined) {\n lines.push(` PRIMARY KEY (${primaryKey.map((column) => q(column)).join(\", \")})`);\n }\n for (const check of params.checks) {\n lines.push(` CONSTRAINT ${q(check.name)} CHECK (${check.expression})`);\n }\n for (const fk of fks) {\n lines.push(\n ` CONSTRAINT ${q(fk.constraintName)} FOREIGN KEY (${fk.columns.map((column) => q(column)).join(\", \")}) REFERENCES ${q(fk.refTable)} (${fk.refColumns.map((column) => q(column)).join(\", \")}) ON DELETE ${fk.onDelete} ON UPDATE ${fk.onUpdate}`,\n );\n }\n\n return `CREATE TABLE ${q(table)} (\\n${lines.join(\",\\n\")}\\n);`;\n}\n\n/**\n * The db name of the single autoincrement Int/BigInt PK column — the one\n * column rendered inline as `INTEGER PRIMARY KEY AUTOINCREMENT` — or\n * undefined when the table has no such PK.\n */\nfunction autoincrementPkColumn(params: {\n columns: readonly FieldIR[];\n primaryKey: readonly string[];\n}): string | undefined {\n const { columns, primaryKey } = params;\n if (primaryKey.length !== 1) return undefined;\n const pkName = primaryKey[0] as string;\n const field = columns.find((candidate) => (candidate.dbName ?? candidate.name) === pkName);\n if (field === undefined) return undefined;\n const eligible =\n field.default?.kind === \"autoincrement\" &&\n !field.isList &&\n !isEnumType(field.type) &&\n (field.type === \"Int\" || field.type === \"BigInt\");\n return eligible ? pkName : undefined;\n}\n\nfunction columnDefSql(params: {\n field: FieldIR;\n constraintTable: string;\n enums: ReadonlyMap<string, EnumIR>;\n inlinePkAutoincrement: boolean;\n}): string {\n const { field, constraintTable, enums, inlinePkAutoincrement } = params;\n const name = field.dbName ?? field.name;\n\n if (field.default?.kind === \"autoincrement\" && !inlinePkAutoincrement) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `autoincrement on sqlite requires \"${field.name}\" to be the single-column Int or BigInt primary key`,\n meta: { field: field.name },\n });\n }\n if (inlinePkAutoincrement) {\n return `${q(name)} INTEGER PRIMARY KEY AUTOINCREMENT`;\n }\n\n let def = `${q(name)} ${sqliteStorageType({ field })}`;\n if (!field.isOptional) def += \" NOT NULL\";\n const defaultExpr = sqliteDefaultSql({ field });\n if (defaultExpr !== undefined) def += ` DEFAULT ${defaultExpr}`;\n\n if (isEnumType(field.type) && field.isUnsupported !== true) {\n const enumName = field.type.enum;\n const values = resolveEnumValues({ name: enumName, enums });\n if (values === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `enum \"${enumName}\" on column \"${field.name}\" is not declared in the schema — sqlite rendering needs the target schema's enums for the CHECK constraint`,\n meta: { field: field.name, enum: enumName },\n });\n }\n const check = sqliteEnumCheckName({ table: constraintTable, column: name, enumName });\n def += ` CONSTRAINT ${q(check)} CHECK (${q(name)} IN (${values\n .map((value) => quotePgString({ value }))\n .join(\", \")}))`;\n }\n\n return def;\n}\n\nfunction createIndexSql(params: {\n table: string;\n name: string;\n unique: boolean;\n kind: string;\n columns: readonly IndexColumn[];\n where: string | undefined;\n nullsNotDistinct?: boolean | undefined;\n}): string {\n const { table, name, unique, kind, columns, where } = params;\n if (params.nullsNotDistinct === true) {\n throw unsupportedCapability({\n dialect: \"sqlite\",\n feature: `UNIQUE NULLS NOT DISTINCT (index \"${name}\")`,\n hint: \"sqlite treats NULLs as distinct in unique indexes and has no switch — gate the flag per dialect\",\n });\n }\n if (!unique && kind !== \"btree\") {\n throw unsupportedCapability({\n dialect: \"sqlite\",\n feature: `index kind \"${kind}\" (index \"${name}\")`,\n hint: \"sqlite indexes are btree only; use an extension-specific virtual table for others\",\n });\n }\n // SQLITE-2: a Decimal column stores as TEXT and every compare/order site\n // reads CAST(col AS REAL) (B4) — a plain-column index can never serve those\n // (EQP-proven SCAN with the index present). Index the same expression, so\n // sqlite's expression-index matching kicks in.\n const cols = columns\n .map(\n (column) =>\n `${column.decimal === true ? `CAST(${q(column.name)} AS REAL)` : q(column.name)}${column.desc ? \" DESC\" : \"\"}`,\n )\n .join(\", \");\n const whereClause = where === undefined ? \"\" : ` WHERE ${where}`;\n return `CREATE ${unique ? \"UNIQUE \" : \"\"}INDEX ${q(name)} ON ${q(table)} (${cols})${whereClause};`;\n}\n\n// ─── Drop ordering ────────────────────────────────────────────────\n\n\n// ─── Context guard & quoting ──────────────────────────────────────\n\nfunction requireSchemas(params: {\n step: MigrationStep;\n fromNorm: NormalizedSchema | undefined;\n toNorm: NormalizedSchema | undefined;\n}): void {\n const { step, fromNorm, toNorm } = params;\n if (fromNorm !== undefined && toNorm !== undefined) return;\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `sqlite step \"${describeStep({ step })}\" requires a table rebuild — renderSteps needs the { from, to } schemas to construct it`,\n meta: { step: step.kind },\n });\n}\n\nfunction q(name: string): string {\n return sqliteDialect.quoteIdent({ name });\n}\n",
|
|
15
15
|
"/**\n * Topological ordering for DROP TABLE statements — children (referencing\n * tables) first.\n *\n * postgres never needs this: `DROP TABLE … CASCADE` takes inbound FK\n * constraints with it. sqlite and mysql have no working cascade for inbound\n * foreign keys — mysql refuses outright (errno 3730\n * `ER_FK_CANNOT_DROP_PARENT`, observed live on 8.4 when a fixture switch\n * dropped `Project` while the also-being-dropped `ProjectMember` still\n * referenced it). ONE shared implementation, consumed by both renderers —\n * the LEARNINGS rule: a structural rule is never re-implemented per consumer.\n */\n\nimport type { NormalizedSchema } from \"../normalize.ts\";\n\n/**\n * Order the tables in `names` so that no table is dropped while another\n * to-be-dropped table still references it. Tables unknown to `fromNorm` (or a\n * missing `fromNorm`, or a reference cycle) fall back to the given order —\n * rendering proceeds and the server reports what it cannot do (dialect\n * honesty beats silently dropping statements).\n */\nexport function orderDropsChildrenFirst(params: {\n names: readonly string[];\n fromNorm: NormalizedSchema | undefined;\n}): string[] {\n const { names, fromNorm } = params;\n if (fromNorm === undefined || names.length < 2) return [...names];\n\n const references = new Map<string, ReadonlySet<string>>();\n for (const name of names) {\n const table = fromNorm.tables.get(name);\n if (table !== undefined) {\n references.set(name, new Set([...table.fks.values()].map((fk) => fk.refTable)));\n continue;\n }\n const joinTable = fromNorm.joinTables.get(name);\n if (joinTable !== undefined) {\n references.set(name, new Set([joinTable.a.table, joinTable.b.table]));\n continue;\n }\n references.set(name, new Set());\n }\n\n const remaining = new Set(names);\n const result: string[] = [];\n while (remaining.size > 0) {\n let progressed = false;\n for (const name of names) {\n if (!remaining.has(name)) continue;\n const stillReferenced = [...remaining].some(\n (other) => other !== name && (references.get(other) ?? new Set()).has(name),\n );\n if (!stillReferenced) {\n result.push(name);\n remaining.delete(name);\n progressed = true;\n }\n }\n if (!progressed) {\n for (const name of names) if (remaining.has(name)) result.push(name);\n break;\n }\n }\n return result;\n}\n",
|
|
16
|
-
"/**\n * MySQL DDL renderer: migration steps → SQL statements.\n *\n * Every identifier is backtick-quoted through `mysqlDialect.quoteIdent` — the\n * ONE quoting decision point. Pinned choices:\n *\n * - String → varchar(191): utf8mb4 × 4 bytes keeps indexed String columns\n * inside the 767-byte legacy InnoDB index-key limit (`@db.Text` opts out —\n * TEXT columns are never indexed by us; indexing one would need a prefix\n * length we do not emit).\n * - autoincrement renders `AUTO_INCREMENT` (the column must be a key — the\n * PRIMARY KEY clause in the same CREATE TABLE satisfies that; ALTERing one\n * onto an existing column is refused, pg parity).\n * - Enums are inline `ENUM('A', 'B')` column types; the standalone enum steps\n * (createEnum/dropEnum/addEnumValue) render NOTHING — value changes arrive\n * as alterColumn steps (value-based type keys) and render as MODIFY COLUMN\n * with the widened list.\n * - alterColumn type/nullability → one `MODIFY COLUMN` with the full target\n * definition (mysql redefines the column wholesale); default-only changes\n * use `ALTER COLUMN … SET/DROP DEFAULT`.\n * - No partial indexes on mysql → VIBE_UNSUPPORTED_CAPABILITY naming the\n * index. Index kinds other than btree are refused the same way.\n * - `DROP INDEX … ON table` needs the table — the differ's dropIndex steps\n * carry it; a step without one is a VIBE_MIGRATION error.\n * - `DROP TABLE` has no cascade (mysql parses `CASCADE` and ignores it), and\n * dropping a parent still referenced by another to-be-dropped table fails\n * with errno 3730 `ER_FK_CANNOT_DROP_PARENT` (observed live on 8.4). FK\n * drops on SURVIVING tables come from the differ's bucket order; drops of\n * whole dependent groups are topologically reordered children-first here\n * (the shared `orderDropsChildrenFirst`, same rule as sqlite).\n */\n\nimport { VibeError, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { EnumIR, FieldIR, SchemaIR } from \"@vibeorm/schema\";\nimport { mysqlDialect } from \"@vibeorm/sql\";\nimport { orderDropsChildrenFirst } from \"./drop-order.ts\";\nimport { normalizeSchema } from \"../normalize.ts\";\nimport { CASCADE_ACTION_SQL } from \"../postgres-types.ts\";\nimport { mysqlColumnTypeSql, mysqlDefaultSql } from \"../mysql-types.ts\";\nimport type { MigrationStep } from \"../types.ts\";\n\n// ─── Public API ───────────────────────────────────────────────────\n\n/**\n * Render migration steps to mysql SQL. `to` (the target schema) is required\n * whenever an enum column is rendered — the inline `ENUM(…)` type needs the\n * enum's values, which live on the schema, not the step. `from` enables the\n * topological drop order (children before referenced parents); without it,\n * drops render in step order.\n */\nexport function renderMysqlSteps(params: {\n steps: readonly MigrationStep[];\n from?: SchemaIR;\n to?: SchemaIR;\n}): string[] {\n const enums = new Map<string, EnumIR>();\n for (const enumDef of params.to?.enums ?? []) {\n enums.set(enumDef.dbName ?? enumDef.name, enumDef);\n }\n\n // Topological drop order — mysql refuses to drop a parent that another\n // to-be-dropped table still references (no cascade; see module doc).\n const dropNames = params.steps\n .filter((step) => step.kind === \"dropTable\" || step.kind === \"dropJoinTable\")\n .map((step) => (step as Extract<MigrationStep, { kind: \"dropTable\" }>).table);\n const fromNorm =\n params.from === undefined ? undefined : normalizeSchema({ schema: params.from, dialect: \"mysql\" });\n const orderedDrops = orderDropsChildrenFirst({ names: dropNames, fromNorm });\n let dropCursor = 0;\n\n return params.steps.flatMap((step) => {\n if (step.kind === \"dropTable\" || step.kind === \"dropJoinTable\") {\n const table = orderedDrops[dropCursor] as string;\n dropCursor += 1;\n return [`DROP TABLE ${q(table)};`];\n }\n return renderStep({ step, enums });\n });\n}\n\n// ─── Per-step rendering ───────────────────────────────────────────\n\nfunction renderStep(params: {\n step: MigrationStep;\n enums: ReadonlyMap<string, EnumIR>;\n}): string[] {\n const { step, enums } = params;\n switch (step.kind) {\n case \"createEnum\":\n case \"dropEnum\":\n case \"addEnumValue\":\n return []; // Enums are inline column types on mysql.\n case \"createTable\": {\n const lines = step.columns.map((column) => ` ${columnDefSql({ field: column, enums })}`);\n if (step.primaryKey.length > 0) {\n lines.push(` PRIMARY KEY (${step.primaryKey.map((column) => q(column)).join(\", \")})`);\n }\n for (const check of step.checks ?? []) {\n lines.push(` CONSTRAINT ${q(check.name)} CHECK (${check.expression})`);\n }\n return [`CREATE TABLE ${q(step.table)} (\\n${lines.join(\",\\n\")}\\n);`];\n }\n case \"dropTable\":\n case \"dropJoinTable\":\n return [`DROP TABLE ${q(step.table)};`];\n case \"dropView\":\n return [`DROP VIEW IF EXISTS ${q(step.table)};`];\n case \"addColumn\":\n return [\n `ALTER TABLE ${q(step.table)} ADD COLUMN ${columnDefSql({ field: step.column, enums })};`,\n ];\n case \"dropColumn\":\n return [`ALTER TABLE ${q(step.table)} DROP COLUMN ${q(step.column)};`];\n case \"alterColumn\":\n return renderAlterColumn({ step, enums });\n case \"createIndex\": {\n if (step.where !== undefined) {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `partial index \"${step.name}\"`,\n hint: \"mysql has no partial indexes — drop the WHERE predicate or gate the index per dialect\",\n });\n }\n if (step.nullsNotDistinct === true) {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `UNIQUE NULLS NOT DISTINCT (index \"${step.name}\")`,\n hint: \"mysql treats NULLs as distinct in unique indexes and has no switch — gate the flag per dialect\",\n });\n }\n if (!step.unique && step.indexKind !== \"btree\") {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `index kind \"${step.indexKind}\" (index \"${step.name}\")`,\n hint: \"mysql secondary indexes are btree only\",\n });\n }\n const cols = step.columns\n .map((column) => `${q(column.name)}${column.desc ? \" DESC\" : \"\"}`)\n .join(\", \");\n return [\n `CREATE ${step.unique ? \"UNIQUE \" : \"\"}INDEX ${q(step.name)} ON ${q(step.table)} (${cols});`,\n ];\n }\n case \"addCheck\":\n // MySQL 8.0.16+ parses AND enforces CHECK constraints.\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.name)} CHECK (${step.expression});`,\n ];\n case \"dropCheck\":\n return [`ALTER TABLE ${q(step.table)} DROP CHECK ${q(step.name)};`];\n case \"dropIndex\": {\n if (step.table === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `dropIndex \"${step.name}\" carries no table — mysql's DROP INDEX requires one`,\n meta: { index: step.name },\n });\n }\n return [`DROP INDEX ${q(step.name)} ON ${q(step.table)};`];\n }\n case \"addForeignKey\": {\n const cols = step.columns.map((column) => q(column)).join(\", \");\n const refCols = step.refColumns.map((column) => q(column)).join(\", \");\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.constraintName)} FOREIGN KEY (${cols}) REFERENCES ${q(step.refTable)} (${refCols}) ON DELETE ${CASCADE_ACTION_SQL[step.onDelete]} ON UPDATE ${CASCADE_ACTION_SQL[step.onUpdate]};`,\n ];\n }\n case \"dropForeignKey\":\n return [`ALTER TABLE ${q(step.table)} DROP FOREIGN KEY ${q(step.constraintName)};`];\n case \"createJoinTable\": {\n const aType = mysqlColumnTypeSql({ field: { ...step.a.field, isList: false }, enums });\n const bType = mysqlColumnTypeSql({ field: { ...step.b.field, isList: false }, enums });\n return [\n `CREATE TABLE ${q(step.table)} (\\n \\`A\\` ${aType} NOT NULL,\\n \\`B\\` ${bType} NOT NULL\\n);`,\n `CREATE UNIQUE INDEX ${q(`${step.table}_AB_unique`)} ON ${q(step.table)} (\\`A\\`, \\`B\\`);`,\n `CREATE INDEX ${q(`${step.table}_B_index`)} ON ${q(step.table)} (\\`B\\`);`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_A_fkey`)} FOREIGN KEY (\\`A\\`) REFERENCES ${q(step.a.table)} (${q(step.a.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_B_fkey`)} FOREIGN KEY (\\`B\\`) REFERENCES ${q(step.b.table)} (${q(step.b.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n ];\n }\n case \"addPrimaryKey\":\n return [\n `ALTER TABLE ${q(step.table)} ADD PRIMARY KEY (${step.columns.map((column) => q(column)).join(\", \")});`,\n ];\n case \"dropPrimaryKey\":\n return [`ALTER TABLE ${q(step.table)} DROP PRIMARY KEY;`];\n }\n}\n\n// ─── Column pieces ────────────────────────────────────────────────\n\nfunction columnDefSql(params: { field: FieldIR; enums: ReadonlyMap<string, EnumIR> }): string {\n const { field, enums } = params;\n const name = q(field.dbName ?? field.name);\n\n const autoincrement = field.default?.kind === \"autoincrement\";\n if (autoincrement && field.type !== \"Int\" && field.type !== \"BigInt\") {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `autoincrement default on \"${field.name}\" requires a non-list Int or BigInt column`,\n meta: { field: field.name },\n });\n }\n\n let def = `${name} ${mysqlColumnTypeSql({ field, enums })}`;\n if (!field.isOptional) def += \" NOT NULL\";\n if (autoincrement) def += \" AUTO_INCREMENT\";\n const defaultExpr = mysqlDefaultSql({ field });\n if (defaultExpr !== undefined) def += ` DEFAULT ${defaultExpr}`;\n return def;\n}\n\nfunction renderAlterColumn(params: {\n step: Extract<MigrationStep, { kind: \"alterColumn\" }>;\n enums: ReadonlyMap<string, EnumIR>;\n}): string[] {\n const { step, enums } = params;\n\n if (step.to.default?.kind === \"autoincrement\" && step.from.default?.kind !== \"autoincrement\") {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `cannot add autoincrement to existing column \"${step.table}\".\"${step.column}\" — drop and recreate the column instead`,\n meta: { table: step.table, column: step.column },\n });\n }\n\n // Type or nullability changes redefine the whole column (MODIFY COLUMN\n // carries type + nullability + default in one definition).\n if (step.changes.includes(\"type\") || step.changes.includes(\"nullability\")) {\n return [\n `ALTER TABLE ${q(step.table)} MODIFY COLUMN ${columnDefSql({ field: step.to, enums })};`,\n ];\n }\n\n // Default-only change.\n const defaultExpr = mysqlDefaultSql({ field: step.to });\n return [\n defaultExpr === undefined\n ? `ALTER TABLE ${q(step.table)} ALTER COLUMN ${q(step.column)} DROP DEFAULT;`\n : `ALTER TABLE ${q(step.table)} ALTER COLUMN ${q(step.column)} SET DEFAULT ${defaultExpr};`,\n ];\n}\n\n// ─── Quoting ──────────────────────────────────────────────────────\n\nfunction q(name: string): string {\n return mysqlDialect.quoteIdent({ name });\n}\n",
|
|
17
|
-
"/**\n * Dialect dispatcher for DDL rendering — the ONE public entry point. Routes to\n * the per-dialect renderers (ddl/postgres.ts, ddl/sqlite.ts, ddl/mysql.ts) so\n * every SQL-text decision stays in exactly one dialect module.\n */\n\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { renderPostgresSteps } from \"./postgres.ts\";\nimport { renderSqliteSteps } from \"./sqlite.ts\";\nimport { renderMysqlSteps } from \"./mysql.ts\";\nimport type { MigrationStep } from \"../types.ts\";\n\n/**\n * Render migration steps to SQL statements (one string per statement, in\n * order) for a dialect.\n *\n * `from`/`to` — the schemas the steps were diffed from — are OPTIONAL for\n * postgres (ignored) but needed by sqlite whenever a step compiles to the\n * table-rebuild recipe (the target table shape lives on the schema, not the\n * step) and by sqlite/mysql for enum columns (CHECK / inline ENUM values).\n * `generateMigration` and `push` always pass them; direct callers rendering\n * rebuild-free, enum-free steps may omit them.\n */\nexport function renderSteps(params: {\n steps: readonly MigrationStep[];\n dialect: Dialect;\n from?: SchemaIR;\n to?: SchemaIR;\n}): string[] {\n const { steps, dialect, from, to } = params;\n switch (dialect) {\n case \"postgres\":\n return renderPostgresSteps({ steps });\n case \"sqlite\":\n return renderSqliteSteps({\n steps,\n ...(from === undefined ? {} : { from }),\n ...(to === undefined ? {} : { to }),\n });\n case \"mysql\":\n return renderMysqlSteps({\n steps,\n ...(from === undefined ? {} : { from }),\n ...(to === undefined ? {} : { to }),\n });\n }\n}\n",
|
|
16
|
+
"/**\n * MySQL DDL renderer: migration steps → SQL statements.\n *\n * Every identifier is backtick-quoted through `mysqlDialect.quoteIdent` — the\n * ONE quoting decision point. Pinned choices:\n *\n * - String → varchar(191): utf8mb4 × 4 bytes keeps indexed String columns\n * inside the 767-byte legacy InnoDB index-key limit (`@db.Text` opts out —\n * TEXT columns are never indexed by us; indexing one would need a prefix\n * length we do not emit).\n * - autoincrement renders `AUTO_INCREMENT` (the column must be a key — the\n * PRIMARY KEY clause in the same CREATE TABLE satisfies that; ALTERing one\n * onto an existing column is refused, pg parity).\n * - Enums are inline `ENUM('A', 'B')` column types; the standalone enum steps\n * (createEnum/dropEnum/addEnumValue) render NOTHING — value changes arrive\n * as alterColumn steps (value-based type keys) and render as MODIFY COLUMN\n * with the widened list.\n * - alterColumn type/nullability → one `MODIFY COLUMN` with the full target\n * definition (mysql redefines the column wholesale); default-only changes\n * use `ALTER COLUMN … SET/DROP DEFAULT`.\n * - No partial indexes on mysql → VIBE_UNSUPPORTED_CAPABILITY naming the\n * index. Index kinds other than btree are refused the same way.\n * - `DROP INDEX … ON table` needs the table — the differ's dropIndex steps\n * carry it; a step without one is a VIBE_MIGRATION error.\n * - `DROP TABLE` has no cascade (mysql parses `CASCADE` and ignores it), and\n * dropping a parent still referenced by another to-be-dropped table fails\n * with errno 3730 `ER_FK_CANNOT_DROP_PARENT` (observed live on 8.4). FK\n * drops on SURVIVING tables come from the differ's bucket order; drops of\n * whole dependent groups are topologically reordered children-first here\n * (the shared `orderDropsChildrenFirst`, same rule as sqlite).\n */\n\nimport { VibeError, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { EnumIR, FieldIR, SchemaIR } from \"@vibeorm/schema\";\nimport { mysqlDialect } from \"@vibeorm/sql\";\nimport { orderDropsChildrenFirst } from \"./drop-order.ts\";\nimport { normalizeSchema } from \"../normalize.ts\";\nimport { CASCADE_ACTION_SQL } from \"../postgres-types.ts\";\nimport { mysqlColumnTypeSql, mysqlDefaultSql } from \"../mysql-types.ts\";\nimport type { MigrationStep } from \"../types.ts\";\n\n// ─── Public API ───────────────────────────────────────────────────\n\n/**\n * Render migration steps to mysql SQL. `to` (the target schema) is required\n * whenever an enum column is rendered — the inline `ENUM(…)` type needs the\n * enum's values, which live on the schema, not the step. `from` enables the\n * topological drop order (children before referenced parents); without it,\n * drops render in step order.\n */\nexport function renderMysqlSteps(params: {\n steps: readonly MigrationStep[];\n from?: SchemaIR;\n to?: SchemaIR;\n}): string[] {\n const enums = new Map<string, EnumIR>();\n for (const enumDef of params.to?.enums ?? []) {\n enums.set(enumDef.dbName ?? enumDef.name, enumDef);\n }\n\n // Topological drop order — mysql refuses to drop a parent that another\n // to-be-dropped table still references (no cascade; see module doc).\n const dropNames = params.steps\n .filter((step) => step.kind === \"dropTable\" || step.kind === \"dropJoinTable\")\n .map((step) => (step as Extract<MigrationStep, { kind: \"dropTable\" }>).table);\n const fromNorm =\n params.from === undefined ? undefined : normalizeSchema({ schema: params.from, dialect: \"mysql\" });\n const orderedDrops = orderDropsChildrenFirst({ names: dropNames, fromNorm });\n let dropCursor = 0;\n\n return params.steps.flatMap((step) => {\n if (step.kind === \"dropTable\" || step.kind === \"dropJoinTable\") {\n const table = orderedDrops[dropCursor] as string;\n dropCursor += 1;\n return [`DROP TABLE ${q(table)};`];\n }\n return renderStep({ step, enums });\n });\n}\n\n// ─── Per-step rendering ───────────────────────────────────────────\n\nfunction renderStep(params: {\n step: MigrationStep;\n enums: ReadonlyMap<string, EnumIR>;\n}): string[] {\n const { step, enums } = params;\n switch (step.kind) {\n case \"createEnum\":\n case \"dropEnum\":\n case \"addEnumValue\":\n return []; // Enums are inline column types on mysql.\n case \"createTable\": {\n const lines = step.columns.map((column) => ` ${columnDefSql({ field: column, enums })}`);\n if (step.primaryKey.length > 0) {\n lines.push(` PRIMARY KEY (${step.primaryKey.map((column) => q(column)).join(\", \")})`);\n }\n for (const check of step.checks ?? []) {\n lines.push(` CONSTRAINT ${q(check.name)} CHECK (${check.expression})`);\n }\n return [`CREATE TABLE ${q(step.table)} (\\n${lines.join(\",\\n\")}\\n);`];\n }\n case \"dropTable\":\n case \"dropJoinTable\":\n return [`DROP TABLE ${q(step.table)};`];\n case \"dropView\":\n return [`DROP VIEW IF EXISTS ${q(step.table)};`];\n case \"addColumn\":\n return [\n `ALTER TABLE ${q(step.table)} ADD COLUMN ${columnDefSql({ field: step.column, enums })};`,\n ];\n case \"dropColumn\":\n return [`ALTER TABLE ${q(step.table)} DROP COLUMN ${q(step.column)};`];\n case \"alterColumn\":\n return renderAlterColumn({ step, enums });\n case \"createIndex\": {\n if (step.where !== undefined) {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `partial index \"${step.name}\"`,\n hint: \"mysql has no partial indexes — drop the WHERE predicate or gate the index per dialect\",\n });\n }\n if (step.nullsNotDistinct === true) {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `UNIQUE NULLS NOT DISTINCT (index \"${step.name}\")`,\n hint: \"mysql treats NULLs as distinct in unique indexes and has no switch — gate the flag per dialect\",\n });\n }\n if (!step.unique && step.indexKind !== \"btree\") {\n throw unsupportedCapability({\n dialect: \"mysql\",\n feature: `index kind \"${step.indexKind}\" (index \"${step.name}\")`,\n hint: \"mysql secondary indexes are btree only\",\n });\n }\n const cols = step.columns\n .map((column) => `${q(column.name)}${column.desc ? \" DESC\" : \"\"}`)\n .join(\", \");\n return [\n `CREATE ${step.unique ? \"UNIQUE \" : \"\"}INDEX ${q(step.name)} ON ${q(step.table)} (${cols});`,\n ];\n }\n case \"addCheck\":\n // MySQL 8.0.16+ parses AND enforces CHECK constraints.\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.name)} CHECK (${step.expression});`,\n ];\n case \"dropCheck\":\n return [`ALTER TABLE ${q(step.table)} DROP CHECK ${q(step.name)};`];\n case \"dropIndex\": {\n if (step.table === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `dropIndex \"${step.name}\" carries no table — mysql's DROP INDEX requires one`,\n meta: { index: step.name },\n });\n }\n return [`DROP INDEX ${q(step.name)} ON ${q(step.table)};`];\n }\n case \"addForeignKey\": {\n const cols = step.columns.map((column) => q(column)).join(\", \");\n const refCols = step.refColumns.map((column) => q(column)).join(\", \");\n return [\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(step.constraintName)} FOREIGN KEY (${cols}) REFERENCES ${q(step.refTable)} (${refCols}) ON DELETE ${CASCADE_ACTION_SQL[step.onDelete]} ON UPDATE ${CASCADE_ACTION_SQL[step.onUpdate]};`,\n ];\n }\n case \"dropForeignKey\":\n return [`ALTER TABLE ${q(step.table)} DROP FOREIGN KEY ${q(step.constraintName)};`];\n case \"createJoinTable\": {\n const aType = mysqlColumnTypeSql({ field: { ...step.a.field, isList: false }, enums });\n const bType = mysqlColumnTypeSql({ field: { ...step.b.field, isList: false }, enums });\n return [\n `CREATE TABLE ${q(step.table)} (\\n \\`A\\` ${aType} NOT NULL,\\n \\`B\\` ${bType} NOT NULL\\n);`,\n `CREATE UNIQUE INDEX ${q(`${step.table}_AB_unique`)} ON ${q(step.table)} (\\`A\\`, \\`B\\`);`,\n `CREATE INDEX ${q(`${step.table}_B_index`)} ON ${q(step.table)} (\\`B\\`);`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_A_fkey`)} FOREIGN KEY (\\`A\\`) REFERENCES ${q(step.a.table)} (${q(step.a.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n `ALTER TABLE ${q(step.table)} ADD CONSTRAINT ${q(`${step.table}_B_fkey`)} FOREIGN KEY (\\`B\\`) REFERENCES ${q(step.b.table)} (${q(step.b.column)}) ON DELETE CASCADE ON UPDATE CASCADE;`,\n ];\n }\n case \"addPrimaryKey\":\n return [\n `ALTER TABLE ${q(step.table)} ADD PRIMARY KEY (${step.columns.map((column) => q(column)).join(\", \")});`,\n ];\n case \"dropPrimaryKey\":\n return [`ALTER TABLE ${q(step.table)} DROP PRIMARY KEY;`];\n }\n}\n\n// ─── Column pieces ────────────────────────────────────────────────\n\nfunction columnDefSql(params: { field: FieldIR; enums: ReadonlyMap<string, EnumIR> }): string {\n const { field, enums } = params;\n const name = q(field.dbName ?? field.name);\n\n const autoincrement = field.default?.kind === \"autoincrement\";\n if (autoincrement && field.type !== \"Int\" && field.type !== \"BigInt\") {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `autoincrement default on \"${field.name}\" requires a non-list Int or BigInt column`,\n meta: { field: field.name },\n });\n }\n\n let def = `${name} ${mysqlColumnTypeSql({ field, enums })}`;\n if (field.collation !== undefined) def += ` COLLATE ${field.collation}`;\n if (!field.isOptional) def += \" NOT NULL\";\n if (autoincrement) def += \" AUTO_INCREMENT\";\n const defaultExpr = mysqlDefaultSql({ field });\n if (defaultExpr !== undefined) def += ` DEFAULT ${defaultExpr}`;\n return def;\n}\n\nfunction renderAlterColumn(params: {\n step: Extract<MigrationStep, { kind: \"alterColumn\" }>;\n enums: ReadonlyMap<string, EnumIR>;\n}): string[] {\n const { step, enums } = params;\n\n if (step.to.default?.kind === \"autoincrement\" && step.from.default?.kind !== \"autoincrement\") {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `cannot add autoincrement to existing column \"${step.table}\".\"${step.column}\" — drop and recreate the column instead`,\n meta: { table: step.table, column: step.column },\n });\n }\n\n // Type or nullability changes redefine the whole column (MODIFY COLUMN\n // carries type + nullability + default in one definition).\n if (step.changes.includes(\"type\") || step.changes.includes(\"nullability\")) {\n return [\n `ALTER TABLE ${q(step.table)} MODIFY COLUMN ${columnDefSql({ field: step.to, enums })};`,\n ];\n }\n\n // Default-only change.\n const defaultExpr = mysqlDefaultSql({ field: step.to });\n return [\n defaultExpr === undefined\n ? `ALTER TABLE ${q(step.table)} ALTER COLUMN ${q(step.column)} DROP DEFAULT;`\n : `ALTER TABLE ${q(step.table)} ALTER COLUMN ${q(step.column)} SET DEFAULT ${defaultExpr};`,\n ];\n}\n\n// ─── Quoting ──────────────────────────────────────────────────────\n\nfunction q(name: string): string {\n return mysqlDialect.quoteIdent({ name });\n}\n",
|
|
17
|
+
"/**\n * Dialect dispatcher for DDL rendering — the ONE public entry point. Routes to\n * the per-dialect renderers (ddl/postgres.ts, ddl/sqlite.ts, ddl/mysql.ts) so\n * every SQL-text decision stays in exactly one dialect module.\n */\n\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { renderPostgresSteps } from \"./postgres.ts\";\nimport { renderSqliteSteps } from \"./sqlite.ts\";\nimport { renderMysqlSteps } from \"./mysql.ts\";\nimport type { MigrationStep } from \"../types.ts\";\n\n/**\n * Render migration steps to SQL statements (one string per statement, in\n * order) for a dialect.\n *\n * `from`/`to` — the schemas the steps were diffed from — are OPTIONAL for\n * postgres (ignored) but needed by sqlite whenever a step compiles to the\n * table-rebuild recipe (the target table shape lives on the schema, not the\n * step) and by sqlite/mysql for enum columns (CHECK / inline ENUM values).\n * `generateMigration` and `push` always pass them; direct callers rendering\n * rebuild-free, enum-free steps may omit them.\n */\nexport function renderSteps(params: {\n steps: readonly MigrationStep[];\n dialect: Dialect;\n from?: SchemaIR;\n to?: SchemaIR;\n}): string[] {\n const { steps, dialect, from, to } = params;\n // @collation (board #36) follows the @db.* native-type precedent: a\n // dialect-specific column annotation, rendered where it has meaning (mysql)\n // and inert elsewhere — NOT a capability refusal, so one portable schema\n // can carry it across the dialect matrix.\n switch (dialect) {\n case \"postgres\":\n return renderPostgresSteps({ steps });\n case \"sqlite\":\n return renderSqliteSteps({\n steps,\n ...(from === undefined ? {} : { from }),\n ...(to === undefined ? {} : { to }),\n });\n case \"mysql\":\n return renderMysqlSteps({\n steps,\n ...(from === undefined ? {} : { from }),\n ...(to === undefined ? {} : { to }),\n });\n }\n}\n",
|
|
18
18
|
"/**\n * Migration runner: generate named migrations from IR diffs, apply them with\n * bookkeeping in `_vibe_migrations`, report status, and repair records.\n *\n * Concurrency: `applyMigrations` and `rollbackMigration` take an advisory lock\n * for the whole run — `pg_advisory_lock(1447645253)` on postgres (\"VIBE\" in\n * ASCII, blocking, released in a finally), `GET_LOCK('vibeorm_migrate', 60)`\n * on mysql (throws VIBE_MIGRATION on timeout). sqlite needs none: it is\n * single-writer and `BEGIN` serializes. Locks are session-scoped — the\n * SqlExecutor contract (types.ts) requires one session for the whole\n * operation.\n *\n * Lock ORDER matters: the lock is taken BEFORE `ensureMigrationsTable`, never\n * after. Two concurrent first-time runs against a fresh postgres database\n * would otherwise both issue `CREATE TABLE IF NOT EXISTS _vibe_migrations`,\n * which is a catalog race on postgres (a duplicate-key error on\n * `pg_type_typname_nsp_index`, not a no-op). `migrationStatus` and\n * `resolveMigration` deliberately take NO lock — wrapping reads in the\n * migration lock would make `status` block behind a running migrate — so two\n * concurrent FIRST-EVER `status`/`resolve` calls on a fresh database can still\n * hit that race; retrying either is enough, since the table then exists.\n *\n * Execution strategy per dialect (`DIALECT_CAPABILITIES[dialect]`) AND per\n * script:\n *\n * - transactionalDdl (postgres, sqlite): each migration runs inside\n * BEGIN/COMMIT with its bookkeeping INSERT — atomic.\n * - EXCEPT sqlite scripts containing a table-rebuild block, which manage their\n * own transactions (execute.ts `usesSelfManagedTransactions`) and therefore\n * cannot be wrapped. Those take the SAME per-statement bookkeeping as mysql\n * (below). They are NOT simply \"re-runnable\": a pure rebuild block is\n * effectively idempotent, but any plain statement in the same script\n * auto-commits on its own, so without a recorded statement_index a crash\n * wedged the migration forever (every later run replayed statements that had\n * already run). Resuming into a rebuild block rewinds to that block's\n * `PRAGMA foreign_keys=OFF` (execute.ts `selfManagedResumeStart`): the block\n * is transactional, so nothing of it survived, and the pragma is\n * session-scoped and gone after a crash.\n * - mysql (transactionalDdl: false — DDL auto-commits): the runner records\n * PER-STATEMENT progress instead. The row is inserted up front\n * (statement_index 0), advanced after every statement, and on failure the\n * error lands in the `error` column. Re-running RESUMES from the recorded\n * statement_index — and REFUSES if the migration's checksum changed since\n * the partial application. A row is \"complete\" when its statement_index\n * reaches the statement count (or its checksum is empty — resolveMigration\n * records, which store statement_index 2147483647).\n *\n * `usesStatementBookkeeping` is the ONE predicate deciding which of the two\n * regimes a (dialect, script) pair is in; apply, status and rollback all read\n * it, so they can never disagree about whether a record is complete.\n *\n * Checksums (sha256 over the joined SQL) pin a migration's content:\n * re-applying a renamed-or-edited migration is a VIBE_MIGRATION error, never\n * a silent divergence.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR, VibeExtension } from \"@vibeorm/schema\";\nimport { DIALECT_CAPABILITIES, getSqlDialect } from \"@vibeorm/sql\";\nimport { diffSchemas } from \"./differ.ts\";\nimport { renderSteps } from \"./ddl/render.ts\";\nimport {\n artifactCreateSql,\n collectExtensionArtifacts,\n planMissingArtifacts,\n stripExtensionArtifacts,\n} from \"./extensions.ts\";\nimport {\n cleanupSelfManagedFailure,\n executeStatement,\n selfManagedResumeStart,\n usesSelfManagedTransactions,\n} from \"./execute.ts\";\nimport type { AppliedResult, MigrationFile, MigrationStatus, SqlExecutor } from \"./types.ts\";\n\n// ─── Bookkeeping table ────────────────────────────────────────────\n\n/** Name of the migrations bookkeeping table (skipped by introspection). */\nexport const MIGRATIONS_TABLE_NAME: string = \"_vibe_migrations\";\n\n/** Advisory-lock key for postgres — \"VIBE\" as a big-endian ASCII int32. */\nconst PG_ADVISORY_LOCK_KEY = 1447645253;\nconst MYSQL_LOCK_NAME = \"vibeorm_migrate\";\nconst MYSQL_LOCK_TIMEOUT_SECONDS = 60;\n\n/** statement_index recorded by resolveMigration — \"complete, content unseen\". */\nconst RESOLVED_STATEMENT_INDEX = 2147483647;\n\nconst CREATE_TABLE_SQL: Readonly<Record<Dialect, string>> = {\n postgres: `CREATE TABLE IF NOT EXISTS \"${MIGRATIONS_TABLE_NAME}\" (\n \"id\" integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n \"name\" text NOT NULL UNIQUE,\n \"checksum\" text NOT NULL,\n \"applied_at\" timestamptz(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,\n \"statement_index\" integer NOT NULL DEFAULT 0,\n \"error\" text\n);`,\n sqlite: `CREATE TABLE IF NOT EXISTS \"${MIGRATIONS_TABLE_NAME}\" (\n \"id\" INTEGER PRIMARY KEY AUTOINCREMENT,\n \"name\" TEXT NOT NULL UNIQUE,\n \"checksum\" TEXT NOT NULL,\n \"applied_at\" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n \"statement_index\" INTEGER NOT NULL DEFAULT 0,\n \"error\" TEXT\n);`,\n mysql: `CREATE TABLE IF NOT EXISTS \\`${MIGRATIONS_TABLE_NAME}\\` (\n \\`id\\` int NOT NULL AUTO_INCREMENT,\n \\`name\\` varchar(191) NOT NULL UNIQUE,\n \\`checksum\\` text NOT NULL,\n \\`applied_at\\` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n \\`statement_index\\` int NOT NULL DEFAULT 0,\n \\`error\\` text,\n PRIMARY KEY (\\`id\\`)\n);`,\n};\n\n/** Create the bookkeeping table when missing. */\nexport async function ensureMigrationsTable(params: {\n executor: SqlExecutor;\n dialect?: Dialect;\n}): Promise<void> {\n await params.executor({ text: CREATE_TABLE_SQL[params.dialect ?? \"postgres\"] });\n}\n\n/** sha256 hex over the migration's statements — its identity across runs. */\nexport function migrationChecksum(params: { sql: readonly string[] }): string {\n return createHash(\"sha256\").update(params.sql.join(\"\\n\")).digest(\"hex\");\n}\n\n// ─── Generate ─────────────────────────────────────────────────────\n\n/**\n * Diff two IRs and render a named migration for a dialect (postgres if\n * omitted). `destructive` aggregates the steps' flags so callers can gate\n * confirmation before applying.\n */\nexport function generateMigration(params: {\n from: SchemaIR;\n to: SchemaIR;\n name: string;\n /** Rendering dialect; postgres if omitted. */\n dialect?: Dialect;\n /** Configured extension instances — their artifacts land in the migration. */\n extensions?: readonly VibeExtension[];\n}): MigrationFile {\n const { from, to, name } = params;\n const dialect = params.dialect ?? \"postgres\";\n\n const artifacts = collectExtensionArtifacts({\n schema: to,\n dialect,\n extensions: params.extensions ?? [],\n });\n const allArtifacts = [...artifacts.setup, ...artifacts.objects];\n const strippedFrom = stripExtensionArtifacts({ schema: from, artifacts: allArtifacts });\n\n const steps = diffSchemas({ from: strippedFrom, to, dialect });\n const coreSql = renderSteps({ steps, dialect, from: strippedFrom, to });\n const missing = planMissingArtifacts({ introspected: from, artifacts: allArtifacts });\n const sql = [\n ...artifactCreateSql({\n artifacts: missing.filter((artifact) => artifact.owns.kind === \"postgresExtension\"),\n }),\n ...coreSql,\n ...artifactCreateSql({\n artifacts: missing.filter((artifact) => artifact.owns.kind !== \"postgresExtension\"),\n }),\n ];\n return {\n name,\n sql,\n destructive: steps.some((step) => step.destructive),\n };\n}\n\n// ─── Apply ────────────────────────────────────────────────────────\n\n/**\n * Apply migrations in order under an advisory lock (see module doc).\n * Already-recorded migrations are checksum-verified and skipped; a mismatch\n * throws VIBE_MIGRATION (a recorded migration whose SQL changed is\n * corruption, not drift to paper over). Where progress is recorded per\n * statement (mysql, and self-managed sqlite scripts), a partially-applied\n * migration RESUMES from its recorded statement_index. Records created by\n * `resolveMigration` (empty checksum) skip verification.\n */\nexport async function applyMigrations(params: {\n executor: SqlExecutor;\n migrations: readonly MigrationFile[];\n /** Execution dialect; postgres if omitted. */\n dialect?: Dialect;\n}): Promise<AppliedResult> {\n const { executor, migrations } = params;\n const dialect = params.dialect ?? \"postgres\";\n\n // Lock FIRST, bookkeeping table second (module doc): concurrent first-time\n // runs racing on CREATE TABLE IF NOT EXISTS is a postgres catalog error, not\n // a no-op. The creation sits inside the try so a failure still unlocks.\n await acquireLock({ executor, dialect });\n\n try {\n await ensureMigrationsTable({ executor, dialect });\n const recorded = await recordedRows({ executor, dialect });\n\n const applied: string[] = [];\n const skipped: string[] = [];\n\n for (const migration of migrations) {\n const stored = recorded.get(migration.name);\n if (stored !== undefined) {\n // Negative statement_index = a mysql rollback started but did not\n // finish (see rollbackMigration). Applying over it would corrupt both\n // directions — finish or repair first.\n if (stored.statementIndex < 0) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" is mid-rollback (${-stored.statementIndex - 1} down statement(s) done) — finish it with \\`migrate down\\` or repair with resolveMigration before applying`,\n meta: { migration: migration.name, statementIndex: stored.statementIndex },\n });\n }\n if (isCompleteRecord({ dialect, migration, stored })) {\n assertChecksumMatches({ migration, stored: stored.checksum });\n skipped.push(migration.name);\n continue;\n }\n // Partial row (mysql, or a self-managed sqlite script) → resume, but\n // only for unchanged content.\n assertResumable({ migration, stored });\n await runNonTransactional({\n executor,\n dialect,\n migration,\n start: stored.statementIndex,\n insertRecord: false,\n });\n applied.push(migration.name);\n continue;\n }\n\n if (usesStatementBookkeeping({ dialect, sql: migration.sql })) {\n await runNonTransactional({ executor, dialect, migration, start: 0, insertRecord: true });\n } else {\n await runTransactional({ executor, dialect, migration });\n }\n applied.push(migration.name);\n }\n\n return { applied, skipped };\n } finally {\n await releaseLock({ executor, dialect });\n }\n}\n\n// ─── Status ───────────────────────────────────────────────────────\n\n/** Compare known migrations against the bookkeeping table. */\nexport async function migrationStatus(params: {\n executor: SqlExecutor;\n migrations: readonly MigrationFile[];\n /** Bookkeeping dialect; postgres if omitted. */\n dialect?: Dialect;\n}): Promise<MigrationStatus> {\n const { executor, migrations } = params;\n const dialect = params.dialect ?? \"postgres\";\n // No lock on purpose (module doc): status must never block behind a migrate.\n await ensureMigrationsTable({ executor, dialect });\n const recorded = await recordedRows({ executor, dialect });\n\n const applied: string[] = [];\n const pending: string[] = [];\n const mismatched: string[] = [];\n const rollingBack: string[] = [];\n\n for (const migration of migrations) {\n const stored = recorded.get(migration.name);\n if (stored === undefined) {\n pending.push(migration.name);\n continue;\n }\n if (stored.statementIndex < 0) {\n rollingBack.push(migration.name);\n continue;\n }\n if (stored.checksum === \"\") {\n applied.push(migration.name);\n continue;\n }\n if (stored.checksum !== migrationChecksum({ sql: migration.sql })) {\n mismatched.push(migration.name);\n continue;\n }\n // A partial row re-applies (resumes) — report it as pending. The SAME\n // predicate apply uses: reporting a partial self-managed sqlite record as\n // \"applied\" while apply would resume it is a lie about the database.\n if (isCompleteRecord({ dialect, migration, stored })) applied.push(migration.name);\n else pending.push(migration.name);\n }\n\n return { applied, pending, mismatched, rollingBack };\n}\n\n// ─── Resolve (repair) ─────────────────────────────────────────────\n\n/**\n * Repair the bookkeeping table without running SQL: mark a migration as\n * `\"applied\"` (upsert its record; pass `checksum` to also pin its content —\n * omitted, the record stores an empty checksum and later runs skip\n * verification for it) or `\"rolled-back\"` (delete its record).\n */\nexport async function resolveMigration(params: {\n executor: SqlExecutor;\n name: string;\n as: \"applied\" | \"rolled-back\";\n checksum?: string;\n /** Bookkeeping dialect; postgres if omitted. */\n dialect?: Dialect;\n}): Promise<void> {\n const { executor, name } = params;\n const dialect = params.dialect ?? \"postgres\";\n await ensureMigrationsTable({ executor, dialect });\n\n if (params.as === \"applied\") {\n const insert = `INSERT INTO ${q(dialect, MIGRATIONS_TABLE_NAME)} (${q(dialect, \"name\")}, ${q(dialect, \"checksum\")}, ${q(dialect, \"statement_index\")}) VALUES (${ph(dialect, 1)}, ${ph(dialect, 2)}, ${RESOLVED_STATEMENT_INDEX})`;\n const upsert =\n dialect === \"mysql\"\n ? `${insert} ON DUPLICATE KEY UPDATE \\`checksum\\` = VALUES(\\`checksum\\`), \\`statement_index\\` = VALUES(\\`statement_index\\`), \\`error\\` = NULL`\n : `${insert} ON CONFLICT (\"name\") DO UPDATE SET \"checksum\" = EXCLUDED.\"checksum\", \"statement_index\" = EXCLUDED.\"statement_index\"`;\n await executor({ text: upsert, values: [name, params.checksum ?? \"\"] });\n return;\n }\n await executor({\n text: `DELETE FROM ${q(dialect, MIGRATIONS_TABLE_NAME)} WHERE ${q(dialect, \"name\")} = ${ph(dialect, 1)}`,\n values: [name],\n });\n}\n\n// ─── Rollback ─────────────────────────────────────────────────────\n\n/**\n * Roll back ONE applied migration by executing its `downSql` and deleting its\n * bookkeeping row, under the same advisory lock as `applyMigrations`.\n *\n * Guards, in order: the migration must carry `downSql` (older migrations\n * predate down-migration support), must be recorded as applied, and — when\n * the record pins a checksum — its up SQL must still match (rolling back with\n * drifted files would run a down that no longer mirrors what was applied).\n *\n * Dialect behavior mirrors apply exactly (same `usesStatementBookkeeping`\n * predicate, read over the DOWN script): postgres/sqlite run the down inside\n * BEGIN/COMMIT with the bookkeeping DELETE (atomic). mysql DDL auto-commits,\n * and a sqlite down containing a table-rebuild block cannot be wrapped, so\n * both record progress per-statement in the existing `statement_index`\n * column, NEGATIVE to mark the rollback direction: after k down statements,\n * the row stores -(k+1). A failed rollback resumes from the recorded\n * statement on the next call; `applyMigrations` refuses a mid-rollback record\n * (that check reads the sign only, so it holds for every dialect). A\n * partially APPLIED migration cannot be rolled back — its down mirrors the\n * full up; finish applying (apply resumes) or repair with `resolveMigration`.\n */\nexport async function rollbackMigration(params: {\n executor: SqlExecutor;\n migration: MigrationFile;\n /** Execution dialect; postgres if omitted. */\n dialect?: Dialect;\n}): Promise<void> {\n const { executor, migration } = params;\n const dialect = params.dialect ?? \"postgres\";\n\n const downSql = migration.downSql;\n if (downSql === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" has no down.sql — it predates down-migration support; roll it back manually, then repair with resolveMigration (as: \"rolled-back\")`,\n meta: { migration: migration.name },\n });\n }\n\n // Lock FIRST, bookkeeping table second — same catalog race as apply.\n await acquireLock({ executor, dialect });\n\n try {\n await ensureMigrationsTable({ executor, dialect });\n const recorded = await recordedRows({ executor, dialect });\n const stored = recorded.get(migration.name);\n if (stored === undefined) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" is not recorded as applied — nothing to roll back`,\n meta: { migration: migration.name },\n });\n }\n\n const resumingDown = stored.statementIndex < 0;\n // Verify the up content still matches before trusting its down.\n assertChecksumMatches({ migration, stored: stored.checksum });\n if (!resumingDown) {\n // Same completeness rule as apply/status — a self-managed sqlite up can\n // be partial too, and running its full down over a half-applied up is\n // exactly the corruption this guard exists to prevent.\n const partialUp = !isCompleteRecord({ dialect, migration, stored });\n if (partialUp) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" is only partially applied (${stored.statementIndex} of ${migration.sql.length} statement(s)) — its down migration mirrors the FULL up; re-run applyMigrations to finish it (it resumes), or repair with resolveMigration`,\n meta: { migration: migration.name, statementIndex: stored.statementIndex },\n });\n }\n }\n\n if (usesStatementBookkeeping({ dialect, sql: downSql })) {\n const start = resumingDown ? -stored.statementIndex - 1 : 0;\n await runNonTransactionalDown({ executor, dialect, migration, downSql, start });\n } else {\n await runTransactionalDown({ executor, dialect, migration, downSql });\n }\n } finally {\n await releaseLock({ executor, dialect });\n }\n}\n\n/** Atomic down path (postgres, sqlite): statements + record DELETE in one tx. */\nasync function runTransactionalDown(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n migration: MigrationFile;\n downSql: readonly string[];\n}): Promise<void> {\n const { executor, dialect, migration, downSql } = params;\n const selfManaged = dialect === \"sqlite\" && usesSelfManagedTransactions({ sql: downSql });\n const wrap = !selfManaged;\n\n if (wrap) await executor({ text: \"BEGIN\" });\n try {\n for (const statement of downSql) {\n await executeStatement({ executor, statement, dialect });\n }\n await executor({\n text: `DELETE FROM ${q(dialect, MIGRATIONS_TABLE_NAME)} WHERE ${q(dialect, \"name\")} = ${ph(dialect, 1)}`,\n values: [migration.name],\n });\n if (wrap) await executor({ text: \"COMMIT\" });\n } catch (error) {\n if (wrap) {\n try {\n await executor({ text: \"ROLLBACK\" });\n } catch {\n // Rollback is best-effort; the original failure matters more.\n }\n } else {\n await cleanupSelfManagedFailure({ executor });\n }\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `rollback of \"${migration.name}\" failed: ${error instanceof Error ? error.message : String(error)}`,\n meta: { migration: migration.name },\n cause: error,\n });\n }\n}\n\n/**\n * Per-statement down path (mysql, and self-managed sqlite down scripts):\n * progress in `statement_index`, stored NEGATIVE (-(completed + 1)) so\n * apply/status can tell the direction apart.\n */\nasync function runNonTransactionalDown(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n migration: MigrationFile;\n downSql: readonly string[];\n start: number;\n}): Promise<void> {\n const { executor, dialect, migration, downSql } = params;\n const table = q(dialect, MIGRATIONS_TABLE_NAME);\n const selfManaged = dialect === \"sqlite\" && usesSelfManagedTransactions({ sql: downSql });\n // A recorded index can point INSIDE a rebuild block, one past its\n // session-scoped pragma — rewind to the block's start (see execute.ts).\n const start = selfManaged\n ? selfManagedResumeStart({ sql: downSql, start: params.start })\n : params.start;\n\n const recordProgress = async (completed: number): Promise<void> => {\n await executor({\n text: `UPDATE ${table} SET ${q(dialect, \"statement_index\")} = ${ph(dialect, 1)}, ${q(dialect, \"error\")} = NULL WHERE ${q(dialect, \"name\")} = ${ph(dialect, 2)}`,\n values: [-(completed + 1), migration.name],\n });\n };\n\n // Mark the rollback as started before the first statement runs, so a crash\n // between statements can never be mistaken for a completed apply.\n if (start === 0) await recordProgress(0);\n\n for (let index = start; index < downSql.length; index += 1) {\n try {\n await executeStatement({ executor, statement: downSql[index] as string, dialect });\n } catch (error) {\n // Self-managed scripts fail INSIDE their own transaction: close it first\n // or the error UPDATE below is rolled back with it (see the apply path).\n if (selfManaged) await cleanupSelfManagedFailure({ executor });\n try {\n await executor({\n text: `UPDATE ${table} SET ${q(dialect, \"error\")} = ${ph(dialect, 1)} WHERE ${q(dialect, \"name\")} = ${ph(dialect, 2)}`,\n values: [error instanceof Error ? error.message : String(error), migration.name],\n });\n } catch {\n // Progress row update is best-effort; the original failure matters more.\n }\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `rollback of \"${migration.name}\" failed at down statement ${index + 1} of ${downSql.length}: ${error instanceof Error ? error.message : String(error)} — progress is recorded; re-running the rollback resumes from this statement`,\n meta: { migration: migration.name, statementIndex: index },\n cause: error,\n });\n }\n await recordProgress(index + 1);\n }\n\n await executor({\n text: `DELETE FROM ${table} WHERE ${q(dialect, \"name\")} = ${ph(dialect, 1)}`,\n values: [migration.name],\n });\n}\n\n// ─── Execution paths ──────────────────────────────────────────────\n\n/** Transactional path (postgres, sqlite) — see module doc. */\nasync function runTransactional(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n migration: MigrationFile;\n}): Promise<void> {\n const { executor, dialect, migration } = params;\n // sqlite rebuild scripts manage their own transactions — never wrap them.\n const selfManaged = dialect === \"sqlite\" && usesSelfManagedTransactions({ sql: migration.sql });\n const wrap = !selfManaged;\n\n if (wrap) await executor({ text: \"BEGIN\" });\n try {\n let statementIndex = 0;\n for (const statement of migration.sql) {\n await executeStatement({ executor, statement, dialect });\n statementIndex += 1;\n }\n await executor({\n text: `INSERT INTO ${q(dialect, MIGRATIONS_TABLE_NAME)} (${q(dialect, \"name\")}, ${q(dialect, \"checksum\")}, ${q(dialect, \"statement_index\")}) VALUES (${ph(dialect, 1)}, ${ph(dialect, 2)}, ${ph(dialect, 3)})`,\n values: [migration.name, migrationChecksum({ sql: migration.sql }), statementIndex],\n });\n if (wrap) await executor({ text: \"COMMIT\" });\n } catch (error) {\n if (wrap) {\n try {\n await executor({ text: \"ROLLBACK\" });\n } catch {\n // Rollback is best-effort; the original failure matters more.\n }\n } else {\n await cleanupSelfManagedFailure({ executor });\n }\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" failed: ${error instanceof Error ? error.message : String(error)}`,\n meta: { migration: migration.name },\n cause: error,\n });\n }\n}\n\n/**\n * Per-statement path (mysql — DDL auto-commits — and self-managed sqlite\n * scripts, which cannot be wrapped): per-statement progress in the\n * bookkeeping row; failures record the error and later runs resume.\n */\nasync function runNonTransactional(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n migration: MigrationFile;\n start: number;\n insertRecord: boolean;\n}): Promise<void> {\n const { executor, dialect, migration, insertRecord } = params;\n const table = q(dialect, MIGRATIONS_TABLE_NAME);\n const selfManaged = dialect === \"sqlite\" && usesSelfManagedTransactions({ sql: migration.sql });\n // A recorded index can point INSIDE a rebuild block, one past its\n // session-scoped `PRAGMA foreign_keys=OFF` — resuming there would replay the\n // rebuild (DROP TABLE included) with foreign keys ON. Rewind to the block.\n const start = selfManaged\n ? selfManagedResumeStart({ sql: migration.sql, start: params.start })\n : params.start;\n\n if (insertRecord) {\n await executor({\n text: `INSERT INTO ${table} (${q(dialect, \"name\")}, ${q(dialect, \"checksum\")}, ${q(dialect, \"statement_index\")}) VALUES (${ph(dialect, 1)}, ${ph(dialect, 2)}, 0)`,\n values: [migration.name, migrationChecksum({ sql: migration.sql })],\n });\n }\n\n for (let index = start; index < migration.sql.length; index += 1) {\n try {\n await executeStatement({ executor, statement: migration.sql[index] as string, dialect });\n } catch (error) {\n // A self-managed script fails INSIDE its own BEGIN, with foreign_keys\n // OFF. Close that transaction FIRST: otherwise the error UPDATE below\n // joins it and is rolled back with it, and the session keeps running\n // inside a stale transaction (every later statement on this connection).\n if (selfManaged) await cleanupSelfManagedFailure({ executor });\n // Record the failure (best-effort) — statement_index already points at\n // the failed statement, so a re-run resumes exactly here.\n try {\n await executor({\n text: `UPDATE ${table} SET ${q(dialect, \"error\")} = ${ph(dialect, 1)} WHERE ${q(dialect, \"name\")} = ${ph(dialect, 2)}`,\n values: [error instanceof Error ? error.message : String(error), migration.name],\n });\n } catch {\n // Progress row update is best-effort; the original failure matters more.\n }\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" failed at statement ${index + 1} of ${migration.sql.length}: ${error instanceof Error ? error.message : String(error)} — progress is recorded; re-running applyMigrations resumes from this statement`,\n meta: { migration: migration.name, statementIndex: index },\n cause: error,\n });\n }\n await executor({\n text: `UPDATE ${table} SET ${q(dialect, \"statement_index\")} = ${ph(dialect, 1)}, ${q(dialect, \"error\")} = NULL WHERE ${q(dialect, \"name\")} = ${ph(dialect, 2)}`,\n values: [index + 1, migration.name],\n });\n }\n}\n\n// ─── Advisory locks ───────────────────────────────────────────────\n\nasync function acquireLock(params: { executor: SqlExecutor; dialect: Dialect }): Promise<void> {\n const { executor, dialect } = params;\n if (dialect === \"postgres\") {\n await executor({ text: `SELECT pg_advisory_lock(${PG_ADVISORY_LOCK_KEY})` });\n return;\n }\n if (dialect === \"mysql\") {\n // values: [] forces the row-returning executor path (adapter contract:\n // value-less text may run as a row-less batch statement).\n const rows = await executor({\n text: `SELECT GET_LOCK('${MYSQL_LOCK_NAME}', ${MYSQL_LOCK_TIMEOUT_SECONDS}) AS \\`vibe_lock\\``,\n values: [],\n });\n const acquired = Number(rows[0]?.vibe_lock) === 1;\n if (!acquired) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `could not acquire the migration lock ('${MYSQL_LOCK_NAME}') within ${MYSQL_LOCK_TIMEOUT_SECONDS}s — another migration run is in progress`,\n meta: { lock: MYSQL_LOCK_NAME },\n });\n }\n }\n // sqlite: single-writer; BEGIN serializes — no advisory lock needed.\n}\n\nasync function releaseLock(params: { executor: SqlExecutor; dialect: Dialect }): Promise<void> {\n const { executor, dialect } = params;\n try {\n if (dialect === \"postgres\") {\n await executor({ text: `SELECT pg_advisory_unlock(${PG_ADVISORY_LOCK_KEY})` });\n } else if (dialect === \"mysql\") {\n await executor({ text: `SELECT RELEASE_LOCK('${MYSQL_LOCK_NAME}')` });\n }\n } catch {\n // Releasing is best-effort — the session dropping releases it anyway.\n }\n}\n\n// ─── Internals ────────────────────────────────────────────────────\n\ntype RecordedRow = { checksum: string; statementIndex: number };\n\n/**\n * Which bookkeeping regime a (dialect, script) pair runs in: `true` when\n * progress is recorded PER STATEMENT — mysql (DDL auto-commits) and sqlite\n * scripts that manage their own transactions — `false` when the migration and\n * its record are one atomic unit.\n *\n * ONE predicate on purpose. Spelled per call site it was wrong in three places\n * at once: status called a partial self-managed record \"applied\", rollback's\n * partial-up guard went blind on sqlite, and apply wedged the migration.\n */\nfunction usesStatementBookkeeping(params: {\n dialect: Dialect;\n sql: readonly string[];\n}): boolean {\n const { dialect, sql } = params;\n if (!DIALECT_CAPABILITIES[dialect].transactionalDdl) return true;\n return dialect === \"sqlite\" && usesSelfManagedTransactions({ sql });\n}\n\n/**\n * Is a bookkeeping row a COMPLETE application of its migration?\n *\n * Atomic regime: the row exists at all ⇒ the whole migration ran. Per-statement\n * regime: only once `statement_index` reached the statement count. An empty\n * checksum is a `resolveMigration` repair — complete by definition, content\n * unseen.\n *\n * Backward compatible with rows written before per-statement bookkeeping\n * covered self-managed sqlite scripts: `runTransactional` records\n * `statement_index = sql.length`, so those rows satisfy the last clause and\n * are never falsely resumed.\n */\nfunction isCompleteRecord(params: {\n dialect: Dialect;\n migration: MigrationFile;\n stored: RecordedRow;\n}): boolean {\n const { dialect, migration, stored } = params;\n if (stored.checksum === \"\") return true;\n if (!usesStatementBookkeeping({ dialect, sql: migration.sql })) return true;\n return stored.statementIndex >= migration.sql.length;\n}\n\nasync function recordedRows(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n}): Promise<Map<string, RecordedRow>> {\n const { executor, dialect } = params;\n // values: [] forces the row-returning executor path (adapter contract:\n // value-less text may run as a row-less multi-statement batch on sqlite).\n const rows = await executor({\n text: `SELECT ${q(dialect, \"name\")}, ${q(dialect, \"checksum\")}, ${q(dialect, \"statement_index\")} FROM ${q(dialect, MIGRATIONS_TABLE_NAME)} ORDER BY ${q(dialect, \"id\")}`,\n values: [],\n });\n const result = new Map<string, RecordedRow>();\n for (const row of rows) {\n const rawIndex = Number(row.statement_index);\n result.set(row.name as string, {\n checksum: row.checksum as string,\n statementIndex: Number.isNaN(rawIndex) ? RESOLVED_STATEMENT_INDEX : rawIndex,\n });\n }\n return result;\n}\n\nfunction assertChecksumMatches(params: { migration: MigrationFile; stored: string }): void {\n const { migration, stored } = params;\n if (stored === \"\") return; // resolveMigration record — content unknown by design.\n const actual = migrationChecksum({ sql: migration.sql });\n if (stored === actual) return;\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `checksum mismatch for migration \"${migration.name}\" — its SQL changed after it was applied (recorded ${stored.slice(0, 12)}…, current ${actual.slice(0, 12)}…)`,\n meta: { migration: migration.name, recorded: stored, current: actual },\n });\n}\n\nfunction assertResumable(params: { migration: MigrationFile; stored: RecordedRow }): void {\n const { migration, stored } = params;\n const actual = migrationChecksum({ sql: migration.sql });\n if (stored.checksum === actual) return;\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `migration \"${migration.name}\" is partially applied (${stored.statementIndex} statement(s) done) and its SQL has CHANGED since — refusing to resume; restore the original SQL or repair with resolveMigration`,\n meta: {\n migration: migration.name,\n statementIndex: stored.statementIndex,\n recorded: stored.checksum,\n current: actual,\n },\n });\n}\n\n// ─── Quoting / placeholders ───────────────────────────────────────\n\nfunction q(dialect: Dialect, name: string): string {\n return getSqlDialect({ dialect }).quoteIdent({ name });\n}\n\nfunction ph(dialect: Dialect, index: number): string {\n return getSqlDialect({ dialect }).placeholder({ index });\n}\n",
|
|
19
19
|
"/**\n * Extension artifacts in the migrate pipeline (extensions.md §3 migrate plane).\n *\n * Extensions own database objects the core differ does not model: CREATE\n * EXTENSION, generated tsvector columns, FTS5 shadow tables + triggers,\n * specialty indexes (gin_trgm_ops, hnsw, bm25, FULLTEXT). The contract:\n *\n * 1. `collectExtensionArtifacts` asks each configured extension for its\n * artifacts (dialect-correct, idempotent SQL + a structured owner).\n * 2. `stripExtensionArtifacts` removes owned objects from the INTROSPECTED\n * IR before diffing, so the core differ never schedules their drop —\n * the introspector-representation-is-the-contract rule (LEARNINGS).\n * 3. `planMissingArtifacts` decides which artifacts must be created, by\n * checking the introspected IR for their owners (columns, indexes,\n * tables by name); non-introspectable owners (postgres extensions,\n * triggers) rely on their idempotent IF NOT EXISTS forms and always run.\n *\n * Removing a declaration does NOT auto-drop its artifacts (mirrors the v1\n * phantom-join-table precedent) — `drop` SQL is carried for tooling, not\n * scheduled by push.\n */\n\nimport { extensionDeclarations } from \"@vibeorm/schema\";\nimport type {\n Dialect,\n ExtensionArtifact,\n ModelIR,\n SchemaIR,\n VibeExtension,\n} from \"@vibeorm/schema\";\n\n// ─── Collection ───────────────────────────────────────────────────\n\n/** Artifacts of every configured extension for this schema, in order. */\nexport type CollectedArtifacts = {\n /** CREATE EXTENSION-class artifacts — run BEFORE the core diff SQL. */\n readonly setup: readonly ExtensionArtifact[];\n /** Object artifacts (columns, indexes, shadow tables, triggers) — run AFTER. */\n readonly objects: readonly ExtensionArtifact[];\n};\n\nexport function collectExtensionArtifacts(params: {\n schema: SchemaIR;\n dialect: Dialect;\n extensions: readonly VibeExtension[];\n}): CollectedArtifacts {\n const { schema, dialect, extensions } = params;\n const setup: ExtensionArtifact[] = [];\n const objects: ExtensionArtifact[] = [];\n\n for (const extension of extensions) {\n const artifactsHook = extension.migrate?.artifacts;\n if (artifactsHook === undefined) continue;\n const declarations = extensionDeclarations({ schema, name: extension.name });\n // A configured extension with no schema presence contributes nothing —\n // unless it is a config-only (replication-class) extension.\n if (Object.keys(declarations).length === 0 && extension.schema?.configOnly !== true) continue;\n\n for (const artifact of artifactsHook({\n schema,\n dialect,\n provider: schema.datasource.provider,\n options: extension.options,\n declarations,\n })) {\n (artifact.owns.kind === \"postgresExtension\" ? setup : objects).push(artifact);\n }\n }\n return { setup, objects };\n}\n\n// ─── Introspection filtering ──────────────────────────────────────\n\nfunction ownedTableNames(params: { artifacts: readonly ExtensionArtifact[] }): {\n exact: Set<string>;\n prefixes: string[];\n} {\n const exact = new Set<string>();\n const prefixes: string[] = [];\n for (const artifact of params.artifacts) {\n if (artifact.owns.kind !== \"table\") continue;\n exact.add(artifact.owns.name);\n prefixes.push(...(artifact.owns.auxiliaryPrefixes ?? []));\n }\n return { exact, prefixes };\n}\n\n/**\n * Remove extension-owned objects from an INTROSPECTED SchemaIR so the core\n * differ never sees them (they are neither dropped nor re-created by it).\n */\nexport function stripExtensionArtifacts(params: {\n schema: SchemaIR;\n artifacts: readonly ExtensionArtifact[];\n}): SchemaIR {\n const { schema, artifacts } = params;\n if (artifacts.length === 0) return schema;\n\n const tables = ownedTableNames({ artifacts });\n const ownedColumns = new Map<string, Set<string>>();\n const ownedIndexes = new Map<string, Set<string>>();\n for (const artifact of artifacts) {\n if (artifact.owns.kind === \"column\") {\n const set = ownedColumns.get(artifact.owns.table) ?? new Set<string>();\n set.add(artifact.owns.column);\n ownedColumns.set(artifact.owns.table, set);\n } else if (artifact.owns.kind === \"index\") {\n const set = ownedIndexes.get(artifact.owns.table) ?? new Set<string>();\n set.add(artifact.owns.name);\n ownedIndexes.set(artifact.owns.table, set);\n }\n }\n\n const models: ModelIR[] = [];\n for (const model of schema.models) {\n const tableName = model.dbName ?? model.name;\n if (tables.exact.has(tableName) || tables.prefixes.some((prefix) => tableName.startsWith(prefix))) {\n continue;\n }\n const columns = ownedColumns.get(tableName);\n const indexes = ownedIndexes.get(tableName);\n if (columns === undefined && indexes === undefined) {\n models.push(model);\n continue;\n }\n models.push({\n ...model,\n fields: model.fields.filter((field) => !(columns?.has(field.dbName ?? field.name) ?? false)),\n indexes: model.indexes.filter(\n (index) => !(index.name !== undefined && (indexes?.has(index.name) ?? false)),\n ),\n });\n }\n\n return { ...schema, models };\n}\n\n// ─── Presence planning ────────────────────────────────────────────\n\n/** Owner presence the IR cannot answer, probed live by push (both optional). */\nexport type InstalledExtensionState = {\n /** `SELECT extname FROM pg_extension` — postgres only. */\n readonly pgExtensions?: ReadonlySet<string>;\n /** `sqlite_master WHERE type='trigger'` names — sqlite only. */\n readonly triggers?: ReadonlySet<string>;\n};\n\n/**\n * The artifacts whose owner is missing from the introspected IR (must be\n * created). Owners the IR cannot see — postgres extensions and triggers —\n * consult the live-probed `installed` state when given, else always plan;\n * their `create` SQL is idempotent (IF NOT EXISTS) so replays converge.\n */\nexport function planMissingArtifacts(params: {\n introspected: SchemaIR;\n artifacts: readonly ExtensionArtifact[];\n installed?: InstalledExtensionState;\n}): ExtensionArtifact[] {\n const { introspected, artifacts, installed } = params;\n if (artifacts.length === 0) return [];\n\n const modelByTable = new Map<string, ModelIR>();\n for (const model of introspected.models) {\n modelByTable.set(model.dbName ?? model.name, model);\n }\n\n return artifacts.filter((artifact) => {\n const owner = artifact.owns;\n switch (owner.kind) {\n case \"postgresExtension\":\n return installed?.pgExtensions === undefined ? true : !installed.pgExtensions.has(owner.name);\n case \"trigger\":\n return installed?.triggers === undefined ? true : !installed.triggers.has(owner.name);\n case \"table\":\n return !modelByTable.has(owner.name);\n case \"column\": {\n const model = modelByTable.get(owner.table);\n if (model === undefined) return true;\n return !model.fields.some((field) => (field.dbName ?? field.name) === owner.column);\n }\n case \"index\": {\n const model = modelByTable.get(owner.table);\n if (model === undefined) return true;\n return !model.indexes.some((index) => index.name === owner.name);\n }\n }\n });\n}\n\n/** Probe live owner state the IR cannot carry (used by push before planning). */\nexport async function probeInstalledExtensionState(params: {\n executor: (execParams: { text: string; values?: unknown[] }) => Promise<Record<string, unknown>[]>;\n dialect: Dialect;\n artifacts: readonly ExtensionArtifact[];\n}): Promise<InstalledExtensionState> {\n const { executor, dialect, artifacts } = params;\n const state: { pgExtensions?: ReadonlySet<string>; triggers?: ReadonlySet<string> } = {};\n\n if (dialect === \"postgres\" && artifacts.some((artifact) => artifact.owns.kind === \"postgresExtension\")) {\n const rows = await executor({ text: \"SELECT extname FROM pg_extension\" });\n state.pgExtensions = new Set(rows.map((row) => String(row[\"extname\"])));\n }\n if (dialect === \"sqlite\" && artifacts.some((artifact) => artifact.owns.kind === \"trigger\")) {\n // `values: []` is the adapter-sqlite READ contract on the raw path.\n const rows = await executor({\n text: \"SELECT name FROM sqlite_master WHERE type = 'trigger'\",\n values: [],\n });\n state.triggers = new Set(rows.map((row) => String(row[\"name\"])));\n }\n return state;\n}\n\n/** Flatten artifacts to their create statements, in order. */\nexport function artifactCreateSql(params: {\n artifacts: readonly ExtensionArtifact[];\n}): string[] {\n return params.artifacts.flatMap((artifact) => [...artifact.create]);\n}\n",
|
|
20
20
|
"/**\n * Statement-execution helpers shared by push and the migration runner.\n *\n * Two sqlite realities live here:\n *\n * - SELF-MANAGED SCRIPTS: the table-rebuild recipe (ddl/sqlite.ts) carries its\n * own `PRAGMA foreign_keys=OFF; BEGIN; … COMMIT; PRAGMA foreign_keys=ON;`\n * sequence, because `PRAGMA foreign_keys` is a no-op inside a transaction.\n * Callers must NOT wrap such scripts in an outer BEGIN/COMMIT —\n * `usesSelfManagedTransactions` detects them. Plain statements in a\n * self-managed script auto-commit individually (documented sqlite\n * limitation: a mixed script is not atomic as a whole; each rebuild block\n * is). Because of that, the migration runner records per-statement progress\n * for these scripts and resumes with `selfManagedResumeStart`, which rewinds\n * INTO the enclosing block so the session-scoped `PRAGMA foreign_keys=OFF`\n * is re-issued before the block replays.\n * - `PRAGMA foreign_key_check` RETURNS VIOLATION ROWS instead of failing —\n * `executeStatement` runs it row-returning (`values: []`, the adapter-sqlite\n * contract for reads) and throws VIBE_MIGRATION when any come back.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { Dialect } from \"@vibeorm/schema\";\nimport type { SqlExecutor } from \"./types.ts\";\n\n/** Marker statement opening a self-managed sqlite script (rebuild recipe). */\nconst SELF_MANAGED_MARKER = \"PRAGMA foreign_keys=OFF\";\n\n/** Marker statement CLOSING a self-managed block (restores FK enforcement). */\nconst SELF_MANAGED_RESTORE_MARKER = \"PRAGMA foreign_keys=ON\";\n\nconst FK_CHECK_PREFIX = \"PRAGMA foreign_key_check\";\n\n/** True when the script manages its own transactions (sqlite rebuilds). */\nexport function usesSelfManagedTransactions(params: { sql: readonly string[] }): boolean {\n return params.sql.some((statement) => statement.startsWith(SELF_MANAGED_MARKER));\n}\n\n/**\n * Where a resume of a self-managed sqlite script must actually restart.\n *\n * A recorded statement_index can point INSIDE a rebuild block: the progress\n * UPDATE issued after `PRAGMA foreign_keys=OFF;` auto-commits (no transaction\n * is open yet), while every UPDATE after the block's `BEGIN;` is rolled back\n * with the crash — so the persisted index lands on the block's `BEGIN;`, one\n * past a pragma that is SESSION-scoped and gone in the new session. Resuming\n * there would run the rebuild — `DROP TABLE` of a possibly-referenced parent\n * included — with foreign keys ON.\n *\n * This rewinds `start` to the nearest preceding `PRAGMA foreign_keys=OFF` that\n * is not already closed by a `PRAGMA foreign_keys=ON`. Replaying from a\n * block's start is safe: the block is transactional (nothing of it survived a\n * crash) and re-running a COMPLETED block is the idempotence the recipe\n * already relies on. Scripts with no marker before `start` are returned\n * unchanged.\n */\nexport function selfManagedResumeStart(params: {\n sql: readonly string[];\n start: number;\n}): number {\n const { sql, start } = params;\n for (let index = start - 1; index >= 0; index -= 1) {\n const statement = sql[index] as string;\n // Nearest marker wins: a restore means the block above is closed.\n if (statement.startsWith(SELF_MANAGED_RESTORE_MARKER)) return start;\n if (statement.startsWith(SELF_MANAGED_MARKER)) return index;\n }\n return start;\n}\n\n/**\n * Execute one migration statement. On sqlite, `PRAGMA foreign_key_check` is\n * executed row-returning and its violations become a VIBE_MIGRATION error.\n */\nexport async function executeStatement(params: {\n executor: SqlExecutor;\n statement: string;\n dialect: Dialect;\n}): Promise<void> {\n const { executor, statement, dialect } = params;\n if (dialect === \"sqlite\" && statement.startsWith(FK_CHECK_PREFIX)) {\n const rows = await executor({ text: statement, values: [] });\n if (rows.length > 0) {\n const sample = rows\n .slice(0, 5)\n .map((row) => `${String(row.table)} rowid ${String(row.rowid)} → ${String(row.parent)}`)\n .join(\"; \");\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `foreign key check failed after table rebuild: ${rows.length} violation(s) — ${sample}`,\n meta: { violations: rows },\n });\n }\n return;\n }\n await executor({ text: statement });\n}\n\n/**\n * Best-effort cleanup after a failed self-managed sqlite script: roll back a\n * possibly-open rebuild transaction and restore FK enforcement. Never throws\n * — the original failure matters more.\n */\nexport async function cleanupSelfManagedFailure(params: { executor: SqlExecutor }): Promise<void> {\n try {\n await params.executor({ text: \"ROLLBACK;\" });\n } catch {\n // No transaction was open — fine.\n }\n try {\n await params.executor({ text: \"PRAGMA foreign_keys=ON;\" });\n } catch {\n // Restoring the pragma is best-effort.\n }\n}\n",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"/**\n * Down-migration generation: the REVERSE diff of an up migration, with v1's\n * two rollback rules baked in (LEARNINGS / issue #15):\n *\n * 1. RE-ADDED COLUMNS COME BACK NULLABLE. The reverse of `dropColumn` is\n * `addColumn`, but the dropped column's data is gone — re-adding it\n * NOT NULL would fail on any populated table. Every `addColumn` step in a\n * down migration is therefore forced optional (its default, when present,\n * is kept). Whole-table re-creates (`createTable`) keep their NOT NULLs:\n * the re-created table is empty.\n * 2. IRREVERSIBLE UP-STEPS ARE SKIPPED, NOT THROWN. An up migration that\n * added an enum value has no reverse — postgres cannot drop enum values,\n * and sqlite/mysql refuse narrowing an inline enum whose rows may hold the\n * value. The rollback target keeps those values and the skip is reported\n * in `skipped`, so \"undo the last migration\" still works (v1's\n * `isReversible: false` behavior).\n *\n * Extension artifacts: object artifacts the up migration created (columns,\n * indexes, shadow tables, triggers) are dropped by the down migration via\n * their own `drop` SQL. `CREATE EXTENSION`-class artifacts are never dropped\n * — other database objects may depend on the extension — and are reported in\n * `skipped` instead.\n */\n\nimport type { Dialect, EnumIR, SchemaIR, VibeExtension } from \"@vibeorm/schema\";\nimport { diffSchemas } from \"./differ.ts\";\nimport { renderSteps } from \"./ddl/render.ts\";\nimport {\n collectExtensionArtifacts,\n planMissingArtifacts,\n stripExtensionArtifacts,\n} from \"./extensions.ts\";\nimport type { MigrationStep } from \"./types.ts\";\n\n// ─── Result shape ─────────────────────────────────────────────────\n\n/** A generated down migration: reverse SQL plus what could NOT be reversed. */\nexport type DownMigrationFile = {\n readonly name: string;\n /** One SQL string per statement, in execution order. */\n readonly sql: readonly string[];\n /** True when any reverse step can lose data (e.g. dropping an up-added column). */\n readonly destructive: boolean;\n /**\n * Human descriptions of up-changes this down migration cannot reverse\n * (added enum values, installed postgres extensions). Empty = full reverse.\n */\n readonly skipped: readonly string[];\n};\n\n// ─── Rollback target construction ─────────────────────────────────\n\n/**\n * Build the schema the down migration returns the database to. It is `from`\n * (the pre-migration shape) EXCEPT that enum values the up migration added\n * are retained — no dialect can remove an enum value a row may already hold —\n * with one `skipped` entry per retained value.\n */\nfunction buildRollbackTarget(params: {\n from: SchemaIR;\n to: SchemaIR;\n dialect: Dialect;\n}): { target: SchemaIR; skipped: string[] } {\n const { from, to, dialect } = params;\n const skipped: string[] = [];\n\n const toEnumsByKey = new Map<string, EnumIR>();\n for (const enumDef of to.enums) {\n toEnumsByKey.set(enumDef.dbName ?? enumDef.name, enumDef);\n }\n\n let patched = false;\n const enums: EnumIR[] = from.enums.map((enumDef) => {\n const key = enumDef.dbName ?? enumDef.name;\n const after = toEnumsByKey.get(key);\n if (after === undefined) return enumDef; // Enum dropped by up — reverse re-creates it.\n\n const before = new Set(enumDef.values);\n const added = after.values.filter((value) => !before.has(value));\n if (added.length === 0) return enumDef;\n\n for (const value of added) {\n skipped.push(\n `enum \"${key}\": value \"${value}\" added by the up migration is kept — ${dialect} cannot drop enum values`,\n );\n }\n patched = true;\n return { ...enumDef, values: [...enumDef.values, ...added] };\n });\n\n return { target: patched ? { ...from, enums } : from, skipped };\n}\n\n/** Rule 1: every re-added column comes back nullable (see module doc). */\nfunction forceReAddedColumnsNullable(params: {\n steps: readonly MigrationStep[];\n}): MigrationStep[] {\n return params.steps.map((step) => {\n if (step.kind !== \"addColumn\" || step.column.isOptional) return step;\n return { ...step, column: { ...step.column, isOptional: true } };\n });\n}\n\n// ─── Public API ───────────────────────────────────────────────────\n\n/**\n * Generate the DOWN migration for an up migration described by the same\n * `from`/`to` pair handed to `generateMigration`: `from` is the current\n * database shape, `to` the schema the up migration moves to. The down\n * migration transforms `to` back into `from` (modulo the skipped\n * irreversibles), so callers write it alongside the up file and apply it\n * newest-first to roll back.\n */\nexport function generateDownMigration(params: {\n from: SchemaIR;\n to: SchemaIR;\n name: string;\n /** Rendering dialect; postgres if omitted. */\n dialect?: Dialect;\n /** Configured extension instances — their up-created artifacts are dropped. */\n extensions?: readonly VibeExtension[];\n}): DownMigrationFile {\n const { from, to, name } = params;\n const dialect = params.dialect ?? \"postgres\";\n\n const artifacts = collectExtensionArtifacts({\n schema: to,\n dialect,\n extensions: params.extensions ?? [],\n });\n const allArtifacts = [...artifacts.setup, ...artifacts.objects];\n const strippedFrom = stripExtensionArtifacts({ schema: from, artifacts: allArtifacts });\n\n const { target, skipped } = buildRollbackTarget({ from: strippedFrom, to, dialect });\n\n // Rule 2 for views (#26): an up migration that DROPPED a view has no\n // reverse — the IR does not store view definitions (views are created\n // out-of-band in this wave), so the down migration cannot re-create it.\n const toViewNames = new Set(\n to.models.filter((model) => model.isView).map((model) => model.dbName ?? model.name),\n );\n for (const model of target.models) {\n if (!model.isView) continue;\n const name = model.dbName ?? model.name;\n if (!toViewNames.has(name)) {\n skipped.push(\n `view \"${name}\" dropped by the up migration is not re-created — its definition is not stored in the schema; re-create it manually`,\n );\n }\n }\n\n const steps = forceReAddedColumnsNullable({\n steps: diffSchemas({ from: to, to: target, dialect }),\n });\n const coreSql = renderSteps({ steps, dialect, from: to, to: target });\n\n // Drop the artifacts the up migration created (mirrors generateMigration's\n // planning), object artifacts first. CREATE EXTENSION is never reversed.\n const created = planMissingArtifacts({ introspected: from, artifacts: allArtifacts });\n const artifactDropSql: string[] = [];\n for (const artifact of [...created].reverse()) {\n if (artifact.owns.kind === \"postgresExtension\") {\n skipped.push(\n `extension \"${artifact.owns.name}\" stays installed — other objects may depend on it (drop it manually if intended)`,\n );\n continue;\n }\n artifactDropSql.push(...artifact.drop);\n }\n\n return {\n name,\n sql: [...artifactDropSql, ...coreSql],\n destructive: steps.some((step) => step.destructive),\n skipped,\n };\n}\n",
|
|
26
26
|
"/**\n * `db push` / `db pull` at library level (the CLI wires these).\n *\n * push = introspect → diff → render → apply, routed per dialect\n * (`providerToDialect(schema.datasource.provider)`):\n *\n * - postgres/pglite: all statements in ONE transaction (transactional DDL).\n * - sqlite: transactional too, UNLESS the script contains a table-rebuild\n * block — those manage their own `PRAGMA foreign_keys` + BEGIN/COMMIT\n * sequence (ddl/sqlite.ts) and run unwrapped; `PRAGMA foreign_key_check`\n * violations become VIBE_MIGRATION errors (execute.ts).\n * - mysql: DDL auto-commits — statements run sequentially, no wrap.\n *\n * Destructive steps are REFUSED unless `acceptDataLoss` is set — the error\n * lists every destructive step, loudly (dialect honesty: never silently drop\n * data).\n */\n\nimport { VibeError, assertValidSchemaIR, providerToDialect } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR, VibeExtension } from \"@vibeorm/schema\";\nimport { DIALECT_CAPABILITIES } from \"@vibeorm/sql\";\nimport { diffSchemas } from \"./differ.ts\";\nimport { renderSteps } from \"./ddl/render.ts\";\nimport {\n artifactCreateSql,\n collectExtensionArtifacts,\n planMissingArtifacts,\n probeInstalledExtensionState,\n stripExtensionArtifacts,\n} from \"./extensions.ts\";\nimport {\n cleanupSelfManagedFailure,\n executeStatement,\n usesSelfManagedTransactions,\n} from \"./execute.ts\";\nimport { introspectPostgres } from \"./introspect/postgres.ts\";\nimport { introspectSqlite } from \"./introspect/sqlite.ts\";\nimport { introspectMysql } from \"./introspect/mysql.ts\";\nimport { describeStep } from \"./types.ts\";\nimport type { PushResult, SqlExecutor } from \"./types.ts\";\n\n/**\n * Make the live database match `schema`. Returns the steps that were applied\n * and the SQL executed (both empty when the database already matched — pushing\n * twice is a no-op by the differ's round-trip property).\n *\n * @throws VibeError VIBE_SCHEMA_INVALID when the target schema fails validation.\n * @throws VibeError VIBE_UNSUPPORTED_CAPABILITY for dialect-impossible constructs\n * (scalar lists on sqlite/mysql, partial indexes on mysql, enum-value removal).\n * @throws VibeError VIBE_MIGRATION when destructive steps exist and `acceptDataLoss` is not set.\n */\nexport async function push(params: {\n executor: SqlExecutor;\n schema: SchemaIR;\n acceptDataLoss?: boolean;\n /** Configured extension instances — their artifacts apply with the diff. */\n extensions?: readonly VibeExtension[];\n}): Promise<PushResult> {\n const { executor, schema } = params;\n\n assertValidSchemaIR({ schema });\n\n const dialect = providerToDialect({ provider: schema.datasource.provider });\n\n // Extension artifacts (extensions.md §3): collected BEFORE introspection so\n // an impossible declaration (vector on sqlite) fails before touching the DB.\n const artifacts = collectExtensionArtifacts({\n schema,\n dialect,\n extensions: params.extensions ?? [],\n });\n const allArtifacts = [...artifacts.setup, ...artifacts.objects];\n\n const introspected = await introspectDialect({ executor, dialect });\n // Owned objects leave the diff entirely: the differ neither drops nor\n // re-creates what an extension manages.\n const from = stripExtensionArtifacts({ schema: introspected, artifacts: allArtifacts });\n const steps = diffSchemas({ from, to: schema, dialect });\n\n const destructive = steps.filter((step) => step.destructive);\n if (destructive.length > 0 && params.acceptDataLoss !== true) {\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `push refused: ${destructive.length} destructive step(s) would lose data — pass acceptDataLoss: true to proceed:\\n${destructive\n .map((step) => ` - ${describeStep({ step })}`)\n .join(\"\\n\")}`,\n meta: { destructive: destructive.map((step) => describeStep({ step })) },\n });\n }\n\n const installed = await probeInstalledExtensionState({\n executor,\n dialect,\n artifacts: allArtifacts,\n });\n const missing = planMissingArtifacts({ introspected, artifacts: allArtifacts, installed });\n const setupSql = artifactCreateSql({\n artifacts: missing.filter((artifact) => artifact.owns.kind === \"postgresExtension\"),\n });\n const objectSql = artifactCreateSql({\n artifacts: missing.filter((artifact) => artifact.owns.kind !== \"postgresExtension\"),\n });\n\n const coreSql = renderSteps({ steps, dialect, from, to: schema });\n const sql = [...setupSql, ...coreSql, ...objectSql];\n if (sql.length === 0) return { steps, applied: [] };\n\n const wrap =\n DIALECT_CAPABILITIES[dialect].transactionalDdl && !usesSelfManagedTransactions({ sql });\n\n if (wrap) await executor({ text: \"BEGIN\" });\n try {\n for (const statement of sql) {\n await executeStatement({ executor, statement, dialect });\n }\n if (wrap) await executor({ text: \"COMMIT\" });\n } catch (error) {\n if (wrap) {\n try {\n await executor({ text: \"ROLLBACK\" });\n } catch {\n // Rollback is best-effort; the original failure matters more.\n }\n } else if (dialect === \"sqlite\") {\n await cleanupSelfManagedFailure({ executor });\n }\n throw new VibeError({\n code: \"VIBE_MIGRATION\",\n message: `push failed while applying schema changes: ${error instanceof Error ? error.message : String(error)}`,\n meta: { statements: sql },\n cause: error,\n });\n }\n\n return { steps, applied: sql };\n}\n\n/**\n * Introspect the live database into SchemaIR (the CLI's `db pull`).\n * `dialect` selects the introspector — postgres if omitted (back-compat).\n */\nexport async function pull(params: {\n executor: SqlExecutor;\n dialect?: Dialect;\n}): Promise<SchemaIR> {\n return introspectDialect({ executor: params.executor, dialect: params.dialect ?? \"postgres\" });\n}\n\n// ─── Dialect routing ──────────────────────────────────────────────\n\nasync function introspectDialect(params: {\n executor: SqlExecutor;\n dialect: Dialect;\n}): Promise<SchemaIR> {\n const { executor, dialect } = params;\n switch (dialect) {\n case \"postgres\":\n return introspectPostgres({ executor });\n case \"sqlite\":\n return introspectSqlite({ executor });\n case \"mysql\":\n return introspectMysql({ executor });\n }\n}\n"
|
|
27
27
|
],
|
|
28
|
-
"mappings": "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",
|
|
29
|
-
"debugId": "
|
|
28
|
+
"mappings": "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",
|
|
29
|
+
"debugId": "70C1B35231C75DF864756E2164756E21",
|
|
30
30
|
"names": []
|
|
31
31
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeorm/migrate",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.8",
|
|
4
4
|
"description": "Migration engine for VibeORM v2 — IR differ, per-dialect DDL, migration runner, introspection",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"orm",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"bun": ">=1.2.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@vibeorm/schema": "2.0.0-alpha.
|
|
48
|
-
"@vibeorm/sql": "2.0.0-alpha.
|
|
47
|
+
"@vibeorm/schema": "2.0.0-alpha.6",
|
|
48
|
+
"@vibeorm/sql": "2.0.0-alpha.6"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|