@rudderjs/database 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -0
- package/dist/db.d.ts +21 -3
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +27 -5
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +14 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -4
- package/dist/index.js.map +1 -1
- package/dist/native/adapter.d.ts +202 -0
- package/dist/native/adapter.d.ts.map +1 -0
- package/dist/native/adapter.js +440 -0
- package/dist/native/adapter.js.map +1 -0
- package/dist/native/compiler.d.ts +371 -0
- package/dist/native/compiler.d.ts.map +1 -0
- package/dist/native/compiler.js +978 -0
- package/dist/native/compiler.js.map +1 -0
- package/dist/native/dialect-mysql.d.ts +26 -0
- package/dist/native/dialect-mysql.d.ts.map +1 -0
- package/dist/native/dialect-mysql.js +188 -0
- package/dist/native/dialect-mysql.js.map +1 -0
- package/dist/native/dialect-pg.d.ts +26 -0
- package/dist/native/dialect-pg.d.ts.map +1 -0
- package/dist/native/dialect-pg.js +192 -0
- package/dist/native/dialect-pg.js.map +1 -0
- package/dist/native/dialect.d.ts +255 -0
- package/dist/native/dialect.d.ts.map +1 -0
- package/dist/native/dialect.js +237 -0
- package/dist/native/dialect.js.map +1 -0
- package/dist/native/driver.d.ts +37 -0
- package/dist/native/driver.d.ts.map +1 -0
- package/dist/native/driver.js +19 -0
- package/dist/native/driver.js.map +1 -0
- package/dist/native/drivers/better-sqlite3.d.ts +56 -0
- package/dist/native/drivers/better-sqlite3.d.ts.map +1 -0
- package/dist/native/drivers/better-sqlite3.js +171 -0
- package/dist/native/drivers/better-sqlite3.js.map +1 -0
- package/dist/native/drivers/mysql.d.ts +30 -0
- package/dist/native/drivers/mysql.d.ts.map +1 -0
- package/dist/native/drivers/mysql.js +176 -0
- package/dist/native/drivers/mysql.js.map +1 -0
- package/dist/native/drivers/postgres.d.ts +57 -0
- package/dist/native/drivers/postgres.d.ts.map +1 -0
- package/dist/native/drivers/postgres.js +155 -0
- package/dist/native/drivers/postgres.js.map +1 -0
- package/dist/native/errors.d.ts +43 -0
- package/dist/native/errors.d.ts.map +1 -0
- package/dist/native/errors.js +64 -0
- package/dist/native/errors.js.map +1 -0
- package/dist/native/index.d.ts +27 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +55 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/isolation.d.ts +14 -0
- package/dist/native/isolation.d.ts.map +1 -0
- package/dist/native/isolation.js +37 -0
- package/dist/native/isolation.js.map +1 -0
- package/dist/native/query-builder.d.ts +303 -0
- package/dist/native/query-builder.d.ts.map +1 -0
- package/dist/native/query-builder.js +984 -0
- package/dist/native/query-builder.js.map +1 -0
- package/dist/native/replica-picker.d.ts +22 -0
- package/dist/native/replica-picker.d.ts.map +1 -0
- package/dist/native/replica-picker.js +65 -0
- package/dist/native/replica-picker.js.map +1 -0
- package/dist/native/schema/alter-blueprint.d.ts +37 -0
- package/dist/native/schema/alter-blueprint.d.ts.map +1 -0
- package/dist/native/schema/alter-blueprint.js +56 -0
- package/dist/native/schema/alter-blueprint.js.map +1 -0
- package/dist/native/schema/blueprint.d.ts +151 -0
- package/dist/native/schema/blueprint.d.ts.map +1 -0
- package/dist/native/schema/blueprint.js +286 -0
- package/dist/native/schema/blueprint.js.map +1 -0
- package/dist/native/schema/column.d.ts +168 -0
- package/dist/native/schema/column.d.ts.map +1 -0
- package/dist/native/schema/column.js +190 -0
- package/dist/native/schema/column.js.map +1 -0
- package/dist/native/schema/ddl-compiler.d.ts +34 -0
- package/dist/native/schema/ddl-compiler.d.ts.map +1 -0
- package/dist/native/schema/ddl-compiler.js +352 -0
- package/dist/native/schema/ddl-compiler.js.map +1 -0
- package/dist/native/schema/inspect.d.ts +67 -0
- package/dist/native/schema/inspect.d.ts.map +1 -0
- package/dist/native/schema/inspect.js +312 -0
- package/dist/native/schema/inspect.js.map +1 -0
- package/dist/native/schema/introspect.d.ts +34 -0
- package/dist/native/schema/introspect.d.ts.map +1 -0
- package/dist/native/schema/introspect.js +101 -0
- package/dist/native/schema/introspect.js.map +1 -0
- package/dist/native/schema/migration.d.ts +8 -0
- package/dist/native/schema/migration.d.ts.map +1 -0
- package/dist/native/schema/migration.js +19 -0
- package/dist/native/schema/migration.js.map +1 -0
- package/dist/native/schema/migrator.d.ts +144 -0
- package/dist/native/schema/migrator.d.ts.map +1 -0
- package/dist/native/schema/migrator.js +240 -0
- package/dist/native/schema/migrator.js.map +1 -0
- package/dist/native/schema/rebuild.d.ts +11 -0
- package/dist/native/schema/rebuild.d.ts.map +1 -0
- package/dist/native/schema/rebuild.js +92 -0
- package/dist/native/schema/rebuild.js.map +1 -0
- package/dist/native/schema/schema-builder.d.ts +46 -0
- package/dist/native/schema/schema-builder.d.ts.map +1 -0
- package/dist/native/schema/schema-builder.js +153 -0
- package/dist/native/schema/schema-builder.js.map +1 -0
- package/dist/native/schema/schema-facade.d.ts +63 -0
- package/dist/native/schema/schema-facade.d.ts.map +1 -0
- package/dist/native/schema/schema-facade.js +124 -0
- package/dist/native/schema/schema-facade.js.map +1 -0
- package/dist/native/schema/schema-types.d.ts +27 -0
- package/dist/native/schema/schema-types.d.ts.map +1 -0
- package/dist/native/schema/schema-types.js +52 -0
- package/dist/native/schema/schema-types.js.map +1 -0
- package/dist/native/schema/types-generator.d.ts +73 -0
- package/dist/native/schema/types-generator.d.ts.map +1 -0
- package/dist/native/schema/types-generator.js +181 -0
- package/dist/native/schema/types-generator.js.map +1 -0
- package/dist/registry-bridge.d.ts +24 -4
- package/dist/registry-bridge.d.ts.map +1 -1
- package/dist/registry-bridge.js +20 -0
- package/dist/registry-bridge.js.map +1 -1
- package/dist/sticky.d.ts +22 -0
- package/dist/sticky.d.ts.map +1 -0
- package/dist/sticky.js +61 -0
- package/dist/sticky.js.map +1 -0
- package/package.json +32 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.js","sourceRoot":"","sources":["../../../src/native/schema/column.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AA+B7C,MAAM,UAAU,GAAqC;IACnD,SAAS,EAAI,SAAS;IACtB,UAAU,EAAG,UAAU;IACvB,UAAU,EAAG,UAAU;IACvB,SAAS,EAAI,UAAU;IACvB,WAAW,EAAE,WAAW;IACxB,UAAU,EAAG,WAAW;CACzB,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,cAAc,CACtB,0BAA0B,EAC1B,oDAAoD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;YAC7E,0EAA0E,CAC3E,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;+BAE+B;AAC/B,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,IAAI,GAAG,MAAM,CAAA;IACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAA;AAC/C,CAAC;AAED,SAAS,SAAS,CAAC,OAA0B;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACrD,CAAC;AA8FD;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACH;IAArB,YAAqB,GAAqB;QAArB,QAAG,GAAH,GAAG,CAAkB;IAAG,CAAC;IAE9C,yEAAyE;IACzE,QAAQ,CAAC,KAAK,GAAG,IAAI;QACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sEAAsE;IACtE,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qEAAqE;IACrE,UAAU;QACR,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;qFACiF;IACjF,kBAAkB;QAChB,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;mEAC+D;IAC/D,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;uCACmC;IACnC,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gFAAgF;IAChF,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,uDAAuD;IACvD,OAAO;QACL,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2CAA2C;IAC3C,MAAM;QACJ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iDAAiD;IACjD,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6EAA6E;IAC7E,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;wEACoE;IACpE,MAAM;QACJ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,oCAAoC;IAEpC;;;;;OAKG;IACH,WAAW,CAAC,KAAc,EAAE,MAAM,GAAG,IAAI;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC5B,EAAE,CAAC,EAAE,GAAG,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjD,EAAE,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;iEAC6D;IAC7D,UAAU,CAAC,OAA0B;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yEAAyE;IACzE,EAAE,CAAC,KAAa;QACd,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,MAA6B;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,MAA6B;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,uDAAuD;IACvD,6BAA6B;IAC7B,eAAe,KAAW,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC;IAC3D,8BAA8B;IAC9B,gBAAgB,KAAW,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC;IAC7D,iEAAiE;IACjE,YAAY,KAAW,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC;IACzD,6BAA6B;IAC7B,eAAe,KAAW,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC;IAE3D;kEAC8D;IACtD,UAAU;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3F,CAAC;CACF;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,IAAgB,EAChB,QAAmC,EAAE;IAErC,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAO,KAAK;QACpB,UAAU,EAAK,KAAK;QACpB,UAAU,EAAK,KAAK;QACpB,kBAAkB,EAAE,KAAK;QACzB,OAAO,EAAQ,KAAK;QACpB,MAAM,EAAS,KAAK;QACpB,KAAK,EAAU,KAAK;QACpB,QAAQ,EAAO,KAAK;QACpB,aAAa,EAAE,KAAK;QACpB,MAAM,EAAS,KAAK;QACpB,GAAG,KAAK;KACT,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type Dialect } from '../dialect.js';
|
|
2
|
+
import type { CompiledQuery } from '../compiler.js';
|
|
3
|
+
import type { Blueprint } from './blueprint.js';
|
|
4
|
+
import type { AlterBlueprint } from './alter-blueprint.js';
|
|
5
|
+
import type { ColumnDefinition } from './column.js';
|
|
6
|
+
/** A column's `"name" TYPE [NOT NULL] [DEFAULT …]` spec, no inline primary key.
|
|
7
|
+
* Exported for the table-rebuild path (7.4b), which assembles a shadow
|
|
8
|
+
* `CREATE TABLE` from a mix of changed columns and preserved (introspected) ones. */
|
|
9
|
+
export declare function compileColumnSpec(column: ColumnDefinition, dialect: Dialect): string;
|
|
10
|
+
/**
|
|
11
|
+
* Compile `Schema.create(...)` to a `CREATE TABLE` plus any `CREATE INDEX`
|
|
12
|
+
* statements (in that order). Each is a {@link CompiledQuery} with empty
|
|
13
|
+
* bindings — DDL carries no bound parameters.
|
|
14
|
+
*/
|
|
15
|
+
export declare function compileCreateTable(blueprint: Blueprint, dialect: Dialect): CompiledQuery[];
|
|
16
|
+
/** Compile `Schema.drop(...)` / `Schema.dropIfExists(...)`. */
|
|
17
|
+
export declare function compileDropTable(table: string, opts: {
|
|
18
|
+
ifExists?: boolean;
|
|
19
|
+
}, dialect: Dialect): CompiledQuery;
|
|
20
|
+
/** Compile `Schema.rename(from, to)`. */
|
|
21
|
+
export declare function compileRenameTable(from: string, to: string, dialect: Dialect): CompiledQuery;
|
|
22
|
+
/**
|
|
23
|
+
* Compile `Schema.table(...)` to the `ALTER TABLE` / `CREATE INDEX` / `DROP
|
|
24
|
+
* INDEX` statements its intents require, in dependency order: rename columns →
|
|
25
|
+
* add columns → add indexes → drop indexes → drop columns. Each is emitted as a
|
|
26
|
+
* separate statement (SQLite has no multi-clause `ALTER TABLE`).
|
|
27
|
+
*
|
|
28
|
+
* SQLite ADD COLUMN can't add a PRIMARY KEY column, and a NOT NULL column must
|
|
29
|
+
* carry a default — both are rejected here with a clear message rather than
|
|
30
|
+
* letting SQLite throw a cryptic one. Changing an existing column's type
|
|
31
|
+
* (`.change()`) needs the table-rebuild dance and is deferred to 7.4b.
|
|
32
|
+
*/
|
|
33
|
+
export declare function compileAlterTable(blueprint: AlterBlueprint, dialect: Dialect): CompiledQuery[];
|
|
34
|
+
//# sourceMappingURL=ddl-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl-compiler.d.ts","sourceRoot":"","sources":["../../../src/native/schema/ddl-compiler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,aAAa,CAAA;AAyE3F;;sFAEsF;AACtF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAEpF;AA8ED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA2C1F;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAK7G;AAED,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAE5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAuI9F"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// ─── DDL compiler (pure) ───────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// PURE: turns a {@link Blueprint} into `CREATE TABLE` (+ `CREATE INDEX`)
|
|
4
|
+
// statements through a {@link Dialect}. No driver, no `node:`, no I/O — the
|
|
5
|
+
// portable half of the schema builder, the DDL counterpart to the read/write
|
|
6
|
+
// query compiler. The dialect owns per-flavor column *types*
|
|
7
|
+
// (`dialect.columnTypeSql`); this module owns statement *structure* (column
|
|
8
|
+
// lists, shared modifiers, table constraints, indexes) so it's identical across
|
|
9
|
+
// SQLite / Postgres / MySQL.
|
|
10
|
+
//
|
|
11
|
+
// Identifiers (table / column / index names) are validated + quoted by the
|
|
12
|
+
// dialect — the security gate (parent plan rule 2). DDL `DEFAULT` values are the
|
|
13
|
+
// one exception to "always bind": most databases reject bound parameters in DDL,
|
|
14
|
+
// so defaults are rendered as escaped literals. That's safe here because
|
|
15
|
+
// migration authors — not end users — write them.
|
|
16
|
+
import { Expression } from '@rudderjs/contracts';
|
|
17
|
+
import { quoteSqlString } from '../dialect.js';
|
|
18
|
+
import { NativeOrmError, NativeNotImplementedError } from '../errors.js';
|
|
19
|
+
/** Render a column's DEFAULT value as a SQL literal (DDL can't bind). Only the
|
|
20
|
+
* literal-able types are allowed; a Date/object/function default throws so the
|
|
21
|
+
* failure is at migrate time, not a silent `[object Object]` in the schema. An
|
|
22
|
+
* `Expression` (`raw('…')`) is spliced verbatim — the escape hatch for function
|
|
23
|
+
* defaults like `raw('gen_random_uuid()')`. */
|
|
24
|
+
function defaultLiteral(value, dialect) {
|
|
25
|
+
if (value === null)
|
|
26
|
+
return 'NULL';
|
|
27
|
+
// raw(...) default — splice the literal fragment, no quoting (it carries no
|
|
28
|
+
// bindings; DDL can't bind anyway).
|
|
29
|
+
if (value instanceof Expression)
|
|
30
|
+
return String(value.getValue());
|
|
31
|
+
switch (typeof value) {
|
|
32
|
+
case 'boolean': return dialect.booleanLiteral(value);
|
|
33
|
+
case 'bigint': return value.toString();
|
|
34
|
+
case 'number':
|
|
35
|
+
if (!Number.isFinite(value)) {
|
|
36
|
+
throw new NativeOrmError('NATIVE_DDL_BAD_DEFAULT', `[RudderJS ORM native] Non-finite numeric default ${String(value)} is not a valid column default.`);
|
|
37
|
+
}
|
|
38
|
+
return String(value);
|
|
39
|
+
case 'string': return `'${value.replace(/'/g, "''")}'`;
|
|
40
|
+
default:
|
|
41
|
+
throw new NativeOrmError('NATIVE_DDL_BAD_DEFAULT', `[RudderJS ORM native] Unsupported column default of type "${typeof value}". ` +
|
|
42
|
+
`Column defaults must be a string, number, bigint, boolean, or null ` +
|
|
43
|
+
`(use \`useCurrent()\` for a timestamp default).`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Render one column to its `CREATE TABLE` line (sans leading indent). */
|
|
47
|
+
function compileColumn(column, dialect, inlinePrimary) {
|
|
48
|
+
const parts = [dialect.quoteId(column.name), dialect.columnTypeSql(column)];
|
|
49
|
+
// Auto-increment columns carry their full spec (incl. PRIMARY KEY) from the
|
|
50
|
+
// dialect — appending NOT NULL / DEFAULT / PRIMARY KEY would be redundant or
|
|
51
|
+
// invalid, so stop here.
|
|
52
|
+
if (column.autoIncrement)
|
|
53
|
+
return parts.join(' ');
|
|
54
|
+
if (!column.nullable)
|
|
55
|
+
parts.push('NOT NULL');
|
|
56
|
+
if (column.useCurrent) {
|
|
57
|
+
parts.push('DEFAULT CURRENT_TIMESTAMP');
|
|
58
|
+
}
|
|
59
|
+
else if (column.hasDefault) {
|
|
60
|
+
parts.push(`DEFAULT ${defaultLiteral(column.default, dialect)}`);
|
|
61
|
+
}
|
|
62
|
+
// `ON UPDATE CURRENT_TIMESTAMP` is MySQL-only grammar; pg/sqlite have no inline
|
|
63
|
+
// form, so the modifier is silently dropped there (Laravel does the same).
|
|
64
|
+
if (dialect.name === 'mysql' && column.useCurrentOnUpdate)
|
|
65
|
+
parts.push('ON UPDATE CURRENT_TIMESTAMP');
|
|
66
|
+
if (inlinePrimary)
|
|
67
|
+
parts.push('PRIMARY KEY');
|
|
68
|
+
// MySQL takes an inline column COMMENT (last). pg comments out-of-line (a
|
|
69
|
+
// separate COMMENT ON COLUMN statement, emitted by the table compiler); sqlite
|
|
70
|
+
// has no column comments at all.
|
|
71
|
+
if (dialect.name === 'mysql' && column.comment !== undefined)
|
|
72
|
+
parts.push(`COMMENT ${quoteSqlString(column.comment)}`);
|
|
73
|
+
return parts.join(' ');
|
|
74
|
+
}
|
|
75
|
+
/** Postgres `COMMENT ON COLUMN "table"."col" IS '…'` statement for a column that
|
|
76
|
+
* carries a `.comment(...)`, or null when the dialect comments inline (mysql) or
|
|
77
|
+
* not at all (sqlite), or the column has no comment. */
|
|
78
|
+
function compileColumnComment(table, column, dialect) {
|
|
79
|
+
if (dialect.name !== 'pg' || column.comment === undefined)
|
|
80
|
+
return null;
|
|
81
|
+
return {
|
|
82
|
+
sql: `COMMENT ON COLUMN ${dialect.quoteId(table)}.${dialect.quoteId(column.name)} IS ${quoteSqlString(column.comment)}`,
|
|
83
|
+
bindings: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** A column's `"name" TYPE [NOT NULL] [DEFAULT …]` spec, no inline primary key.
|
|
87
|
+
* Exported for the table-rebuild path (7.4b), which assembles a shadow
|
|
88
|
+
* `CREATE TABLE` from a mix of changed columns and preserved (introspected) ones. */
|
|
89
|
+
export function compileColumnSpec(column, dialect) {
|
|
90
|
+
return compileColumn(column, dialect, false);
|
|
91
|
+
}
|
|
92
|
+
/** Default index name, Laravel-style: `{table}_{col[_col…]}_{index|unique}`. */
|
|
93
|
+
function indexName(table, idx) {
|
|
94
|
+
return idx.name ?? `${table}_${idx.columns.join('_')}_${idx.unique ? 'unique' : 'index'}`;
|
|
95
|
+
}
|
|
96
|
+
/** Collect every index to create: table-level ones plus the per-column
|
|
97
|
+
* `.unique()` / `.index()` modifiers, normalized to {@link IndexDefinition}s. */
|
|
98
|
+
function collectIndexes(blueprint) {
|
|
99
|
+
const out = [...blueprint.indexes];
|
|
100
|
+
for (const col of blueprint.columns) {
|
|
101
|
+
if (col.unique)
|
|
102
|
+
out.push({ columns: [col.name], unique: true });
|
|
103
|
+
if (col.index)
|
|
104
|
+
out.push({ columns: [col.name], unique: false });
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
/** Default FK constraint name, Laravel-style: `{table}_{col[_col…]}_foreign`. */
|
|
109
|
+
function foreignKeyName(table, fk) {
|
|
110
|
+
return fk.name ?? `${table}_${fk.columns.join('_')}_foreign`;
|
|
111
|
+
}
|
|
112
|
+
/** Render a normalized referential action to its SQL keyword (`set null` →
|
|
113
|
+
* `SET NULL`). The value is allowlisted at record time, so this is a pure map. */
|
|
114
|
+
function foreignKeyActionSql(action) {
|
|
115
|
+
return action.toUpperCase();
|
|
116
|
+
}
|
|
117
|
+
/** Collect every foreign key to emit: per-column `constrained()` intents plus
|
|
118
|
+
* table-level `foreign()` ones, in declaration order (columns first). */
|
|
119
|
+
function collectForeignKeys(blueprint) {
|
|
120
|
+
const out = [];
|
|
121
|
+
for (const col of blueprint.columns) {
|
|
122
|
+
if (col.foreignKey)
|
|
123
|
+
out.push(col.foreignKey);
|
|
124
|
+
}
|
|
125
|
+
out.push(...blueprint.foreignKeys);
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/** Render one FK as a `CONSTRAINT … FOREIGN KEY (…) REFERENCES "tbl" (…)
|
|
129
|
+
* [ON DELETE …] [ON UPDATE …]` table-constraint line. Every identifier is
|
|
130
|
+
* quoted+validated via the dialect; the referenced table/columns must be set. */
|
|
131
|
+
function compileForeignKey(table, fk, dialect) {
|
|
132
|
+
if (!fk.on) {
|
|
133
|
+
throw new NativeOrmError('NATIVE_DDL_FK_NO_TABLE', `[RudderJS ORM native] Foreign key on (${fk.columns.join(', ')}) in "${table}" is missing its ` +
|
|
134
|
+
`referenced table — call \`.on('<table>')\` or use \`.constrained()\`.`);
|
|
135
|
+
}
|
|
136
|
+
if (fk.references.length === 0) {
|
|
137
|
+
throw new NativeOrmError('NATIVE_DDL_FK_NO_REFERENCES', `[RudderJS ORM native] Foreign key on (${fk.columns.join(', ')}) in "${table}" references no ` +
|
|
138
|
+
`columns — call \`.references('<column>')\` (defaults to "id" via \`.constrained()\`).`);
|
|
139
|
+
}
|
|
140
|
+
const cols = fk.columns.map(c => dialect.quoteId(c)).join(', ');
|
|
141
|
+
const refCols = fk.references.map(c => dialect.quoteId(c)).join(', ');
|
|
142
|
+
let sql = `CONSTRAINT ${dialect.quoteId(foreignKeyName(table, fk))} ` +
|
|
143
|
+
`FOREIGN KEY (${cols}) REFERENCES ${dialect.quoteId(fk.on)} (${refCols})`;
|
|
144
|
+
if (fk.onDelete)
|
|
145
|
+
sql += ` ON DELETE ${foreignKeyActionSql(fk.onDelete)}`;
|
|
146
|
+
if (fk.onUpdate)
|
|
147
|
+
sql += ` ON UPDATE ${foreignKeyActionSql(fk.onUpdate)}`;
|
|
148
|
+
return sql;
|
|
149
|
+
}
|
|
150
|
+
/** `CREATE [UNIQUE] INDEX "name" ON "table" ("c1", …)` — shared by create + alter. */
|
|
151
|
+
function compileCreateIndex(table, idx, dialect) {
|
|
152
|
+
return {
|
|
153
|
+
sql: `CREATE ${idx.unique ? 'UNIQUE ' : ''}INDEX ${dialect.quoteId(indexName(table, idx))} ` +
|
|
154
|
+
`ON ${dialect.quoteId(table)} (${idx.columns.map(c => dialect.quoteId(c)).join(', ')})`,
|
|
155
|
+
bindings: [],
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Compile `Schema.create(...)` to a `CREATE TABLE` plus any `CREATE INDEX`
|
|
160
|
+
* statements (in that order). Each is a {@link CompiledQuery} with empty
|
|
161
|
+
* bindings — DDL carries no bound parameters.
|
|
162
|
+
*/
|
|
163
|
+
export function compileCreateTable(blueprint, dialect) {
|
|
164
|
+
if (blueprint.columns.length === 0) {
|
|
165
|
+
throw new NativeOrmError('NATIVE_DDL_EMPTY_TABLE', `[RudderJS ORM native] Cannot create table "${blueprint.table}" with no columns.`);
|
|
166
|
+
}
|
|
167
|
+
// Resolve the primary key. An explicit composite PK (Blueprint.primary) wins
|
|
168
|
+
// and becomes a table constraint. Otherwise, column-level `.primary()` flags
|
|
169
|
+
// (excluding the auto-increment column, which owns its own inline PK) become
|
|
170
|
+
// an inline PK if there's exactly one, or a table constraint if several.
|
|
171
|
+
const autoPk = blueprint.columns.some(c => c.autoIncrement);
|
|
172
|
+
const flagged = blueprint.columns.filter(c => c.primary && !c.autoIncrement).map(c => c.name);
|
|
173
|
+
let tablePk = null;
|
|
174
|
+
let inlinePk = null;
|
|
175
|
+
if (blueprint.primaryColumns && !autoPk) {
|
|
176
|
+
tablePk = blueprint.primaryColumns;
|
|
177
|
+
}
|
|
178
|
+
else if (!autoPk && flagged.length === 1) {
|
|
179
|
+
inlinePk = flagged[0] ?? null;
|
|
180
|
+
}
|
|
181
|
+
else if (!autoPk && flagged.length > 1) {
|
|
182
|
+
tablePk = flagged;
|
|
183
|
+
}
|
|
184
|
+
const lines = blueprint.columns.map(c => ` ${compileColumn(c, dialect, c.name === inlinePk)}`);
|
|
185
|
+
if (tablePk) {
|
|
186
|
+
lines.push(` PRIMARY KEY (${tablePk.map(c => dialect.quoteId(c)).join(', ')})`);
|
|
187
|
+
}
|
|
188
|
+
// Foreign keys come after the column lines / primary key, as table constraints.
|
|
189
|
+
for (const fk of collectForeignKeys(blueprint)) {
|
|
190
|
+
lines.push(` ${compileForeignKey(blueprint.table, fk, dialect)}`);
|
|
191
|
+
}
|
|
192
|
+
const create = {
|
|
193
|
+
sql: `CREATE TABLE ${dialect.quoteId(blueprint.table)} (\n${lines.join(',\n')}\n)`,
|
|
194
|
+
bindings: [],
|
|
195
|
+
};
|
|
196
|
+
const indexes = collectIndexes(blueprint).map(idx => compileCreateIndex(blueprint.table, idx, dialect));
|
|
197
|
+
// Postgres column comments are separate statements (pg has no inline COMMENT).
|
|
198
|
+
const comments = blueprint.columns
|
|
199
|
+
.map(c => compileColumnComment(blueprint.table, c, dialect))
|
|
200
|
+
.filter((c) => c !== null);
|
|
201
|
+
return [create, ...indexes, ...comments];
|
|
202
|
+
}
|
|
203
|
+
/** Compile `Schema.drop(...)` / `Schema.dropIfExists(...)`. */
|
|
204
|
+
export function compileDropTable(table, opts, dialect) {
|
|
205
|
+
return {
|
|
206
|
+
sql: `DROP TABLE ${opts.ifExists ? 'IF EXISTS ' : ''}${dialect.quoteId(table)}`,
|
|
207
|
+
bindings: [],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/** Compile `Schema.rename(from, to)`. */
|
|
211
|
+
export function compileRenameTable(from, to, dialect) {
|
|
212
|
+
return { sql: `ALTER TABLE ${dialect.quoteId(from)} RENAME TO ${dialect.quoteId(to)}`, bindings: [] };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Compile `Schema.table(...)` to the `ALTER TABLE` / `CREATE INDEX` / `DROP
|
|
216
|
+
* INDEX` statements its intents require, in dependency order: rename columns →
|
|
217
|
+
* add columns → add indexes → drop indexes → drop columns. Each is emitted as a
|
|
218
|
+
* separate statement (SQLite has no multi-clause `ALTER TABLE`).
|
|
219
|
+
*
|
|
220
|
+
* SQLite ADD COLUMN can't add a PRIMARY KEY column, and a NOT NULL column must
|
|
221
|
+
* carry a default — both are rejected here with a clear message rather than
|
|
222
|
+
* letting SQLite throw a cryptic one. Changing an existing column's type
|
|
223
|
+
* (`.change()`) needs the table-rebuild dance and is deferred to 7.4b.
|
|
224
|
+
*/
|
|
225
|
+
export function compileAlterTable(blueprint, dialect) {
|
|
226
|
+
const t = dialect.quoteId(blueprint.table);
|
|
227
|
+
const out = [];
|
|
228
|
+
// SQLite can neither ADD nor DROP a foreign key in place (no such ALTER form),
|
|
229
|
+
// so reject any FK touched on an existing table with a pointer to the
|
|
230
|
+
// supported paths. (FK-on-alter via the table-rebuild dance is a follow-up.)
|
|
231
|
+
if (dialect.name === 'sqlite') {
|
|
232
|
+
const addsFk = blueprint.foreignKeys.length > 0 || blueprint.columns.some(c => c.foreignKey);
|
|
233
|
+
if (addsFk) {
|
|
234
|
+
throw new NativeNotImplementedError(`Schema.table foreign key add on "${blueprint.table}" (SQLite)`, 'a later phase — SQLite can\'t ADD a foreign key in place; create the table with the FK, or use a column change()/rebuild');
|
|
235
|
+
}
|
|
236
|
+
if (blueprint.droppedForeignKeys.length > 0) {
|
|
237
|
+
throw new NativeNotImplementedError(`Schema.table dropForeign on "${blueprint.table}" (SQLite)`, 'a later phase — SQLite can\'t DROP a foreign key in place; recreate the table without the FK, or use a column change()/rebuild');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// 1. Renames first, so any later op refers to the new name.
|
|
241
|
+
for (const r of blueprint.renamedColumns) {
|
|
242
|
+
out.push({ sql: `ALTER TABLE ${t} RENAME COLUMN ${dialect.quoteId(r.from)} TO ${dialect.quoteId(r.to)}`, bindings: [] });
|
|
243
|
+
}
|
|
244
|
+
// 2. Column changes (`.change()`) — pg/mysql express them natively (7.4b);
|
|
245
|
+
// SQLite can't and routes through the table-rebuild dance in SchemaBuilder
|
|
246
|
+
// BEFORE this compiler runs, so reaching here on sqlite is a direct-compile
|
|
247
|
+
// misuse and throws the pointer.
|
|
248
|
+
for (const col of blueprint.columns) {
|
|
249
|
+
if (!col.change)
|
|
250
|
+
continue;
|
|
251
|
+
if (dialect.name === 'sqlite') {
|
|
252
|
+
throw new NativeNotImplementedError(`compileAlterTable column change() on "${blueprint.table}.${col.name}" (SQLite)`, 'the SchemaBuilder table-rebuild path — drive changes through Schema.table()/SchemaBuilder.table(), not the compiler directly');
|
|
253
|
+
}
|
|
254
|
+
if (col.autoIncrement || col.primary) {
|
|
255
|
+
throw new NativeOrmError('NATIVE_DDL_CHANGE_PRIMARY', `[RudderJS ORM native] Cannot change() "${col.name}" into a primary-key/auto-increment column — recreate the table instead.`);
|
|
256
|
+
}
|
|
257
|
+
if (dialect.name === 'mysql') {
|
|
258
|
+
// MySQL MODIFY takes the FULL new column spec (type, nullability,
|
|
259
|
+
// default, comment) in one clause — anything omitted is RESET, exactly
|
|
260
|
+
// the "the new definition replaces the old one" semantics Laravel's
|
|
261
|
+
// change() documents. Positional FIRST/AFTER composes here too.
|
|
262
|
+
let sql = `ALTER TABLE ${t} MODIFY ${compileColumn(col, dialect, false)}`;
|
|
263
|
+
if (col.first)
|
|
264
|
+
sql += ' FIRST';
|
|
265
|
+
else if (col.after)
|
|
266
|
+
sql += ` AFTER ${dialect.quoteId(col.after)}`;
|
|
267
|
+
out.push({ sql, bindings: [] });
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Postgres alters each facet separately; one statement with
|
|
271
|
+
// comma-joined actions keeps it atomic. The new definition replaces the
|
|
272
|
+
// old one (Laravel semantics): no `.default(...)` → DROP DEFAULT, no
|
|
273
|
+
// `.nullable()` → SET NOT NULL. Type changes rely on pg's implicit
|
|
274
|
+
// casts (varchar↔text, widenings); an incompatible change needs a raw
|
|
275
|
+
// `USING` statement — `DB.statement('ALTER TABLE … USING …')`.
|
|
276
|
+
const c = dialect.quoteId(col.name);
|
|
277
|
+
const actions = [`ALTER COLUMN ${c} TYPE ${dialect.columnTypeSql(col)}`];
|
|
278
|
+
actions.push(col.nullable ? `ALTER COLUMN ${c} DROP NOT NULL` : `ALTER COLUMN ${c} SET NOT NULL`);
|
|
279
|
+
if (col.useCurrent)
|
|
280
|
+
actions.push(`ALTER COLUMN ${c} SET DEFAULT CURRENT_TIMESTAMP`);
|
|
281
|
+
else if (col.hasDefault)
|
|
282
|
+
actions.push(`ALTER COLUMN ${c} SET DEFAULT ${defaultLiteral(col.default, dialect)}`);
|
|
283
|
+
else
|
|
284
|
+
actions.push(`ALTER COLUMN ${c} DROP DEFAULT`);
|
|
285
|
+
out.push({ sql: `ALTER TABLE ${t} ${actions.join(', ')}`, bindings: [] });
|
|
286
|
+
// pg comments stay out-of-line on change too.
|
|
287
|
+
const comment = compileColumnComment(blueprint.table, col, dialect);
|
|
288
|
+
if (comment)
|
|
289
|
+
out.push(comment);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// 3. Add columns (one ALTER ... ADD COLUMN each), with SQLite's restrictions.
|
|
293
|
+
for (const col of blueprint.columns) {
|
|
294
|
+
if (col.change)
|
|
295
|
+
continue;
|
|
296
|
+
if (col.autoIncrement || col.primary) {
|
|
297
|
+
throw new NativeOrmError('NATIVE_DDL_ADD_PRIMARY', `[RudderJS ORM native] Cannot ADD a primary-key column ("${col.name}") to an existing table on SQLite. Create the table with its primary key, or rebuild it.`);
|
|
298
|
+
}
|
|
299
|
+
if (!col.nullable && !col.hasDefault && !col.useCurrent) {
|
|
300
|
+
throw new NativeOrmError('NATIVE_DDL_ADD_NOT_NULL', `[RudderJS ORM native] Adding a NOT NULL column ("${col.name}") to an existing table requires a default — chain \`.default(...)\` or \`.nullable()\`.`);
|
|
301
|
+
}
|
|
302
|
+
let addSql = `ALTER TABLE ${t} ADD COLUMN ${compileColumn(col, dialect, false)}`;
|
|
303
|
+
// Positional ADD (MySQL only): FIRST wins over AFTER. pg/sqlite have no
|
|
304
|
+
// positional ADD COLUMN, so these are silently ignored there (Laravel too).
|
|
305
|
+
if (dialect.name === 'mysql') {
|
|
306
|
+
if (col.first)
|
|
307
|
+
addSql += ' FIRST';
|
|
308
|
+
else if (col.after)
|
|
309
|
+
addSql += ` AFTER ${dialect.quoteId(col.after)}`;
|
|
310
|
+
}
|
|
311
|
+
out.push({ sql: addSql, bindings: [] });
|
|
312
|
+
// pg out-of-line comment for the added column.
|
|
313
|
+
const comment = compileColumnComment(blueprint.table, col, dialect);
|
|
314
|
+
if (comment)
|
|
315
|
+
out.push(comment);
|
|
316
|
+
}
|
|
317
|
+
// 4. New indexes (table-level + per-column unique()/index() on added/changed columns).
|
|
318
|
+
for (const idx of collectIndexes(blueprint)) {
|
|
319
|
+
out.push(compileCreateIndex(blueprint.table, idx, dialect));
|
|
320
|
+
}
|
|
321
|
+
// 4b. New foreign keys (pg/mysql only — the sqlite guard above already
|
|
322
|
+
// rejected them): `ADD CONSTRAINT … FOREIGN KEY … REFERENCES …`, reusing
|
|
323
|
+
// the create-table constraint renderer. Historically these were silently
|
|
324
|
+
// dropped on alter — a migration "succeeded" without its FK.
|
|
325
|
+
if (dialect.name !== 'sqlite') {
|
|
326
|
+
for (const fk of collectForeignKeys(blueprint)) {
|
|
327
|
+
out.push({ sql: `ALTER TABLE ${t} ADD ${compileForeignKey(blueprint.table, fk, dialect)}`, bindings: [] });
|
|
328
|
+
}
|
|
329
|
+
// Dropped FKs — by constraint name, or by the column list they cover
|
|
330
|
+
// (derived via the same default-name convention used at creation).
|
|
331
|
+
// mysql spells it DROP FOREIGN KEY; pg DROP CONSTRAINT.
|
|
332
|
+
for (const dropped of blueprint.droppedForeignKeys) {
|
|
333
|
+
const name = typeof dropped === 'string'
|
|
334
|
+
? dropped
|
|
335
|
+
: `${blueprint.table}_${dropped.join('_')}_foreign`;
|
|
336
|
+
const clause = dialect.name === 'mysql' ? 'DROP FOREIGN KEY' : 'DROP CONSTRAINT';
|
|
337
|
+
out.push({ sql: `ALTER TABLE ${t} ${clause} ${dialect.quoteId(name)}`, bindings: [] });
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// 5. Drop indexes (by name). SQLite and pg address an index as a standalone
|
|
341
|
+
// schema object; MySQL scopes it to its table (`DROP INDEX … ON <table>`).
|
|
342
|
+
for (const name of blueprint.droppedIndexes) {
|
|
343
|
+
const onTable = dialect.name === 'mysql' ? ` ON ${t}` : '';
|
|
344
|
+
out.push({ sql: `DROP INDEX ${dialect.quoteId(name)}${onTable}`, bindings: [] });
|
|
345
|
+
}
|
|
346
|
+
// 6. Drop columns last.
|
|
347
|
+
for (const name of blueprint.droppedColumns) {
|
|
348
|
+
out.push({ sql: `ALTER TABLE ${t} DROP COLUMN ${dialect.quoteId(name)}`, bindings: [] });
|
|
349
|
+
}
|
|
350
|
+
return out;
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=ddl-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl-compiler.js","sourceRoot":"","sources":["../../../src/native/schema/ddl-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Executor } from '../driver.js';
|
|
2
|
+
import type { Dialect } from '../dialect.js';
|
|
3
|
+
import { type RawColumn } from './introspect.js';
|
|
4
|
+
/** One table in the `db:show` overview. */
|
|
5
|
+
export interface TableSummary {
|
|
6
|
+
name: string;
|
|
7
|
+
/** On-disk size in bytes, or null when the dialect can't report it (sqlite
|
|
8
|
+
* without the `dbstat` module). */
|
|
9
|
+
sizeBytes: number | null;
|
|
10
|
+
/** `COUNT(*)` — only populated when `db:show --counts` asks for it. */
|
|
11
|
+
rows?: number;
|
|
12
|
+
}
|
|
13
|
+
/** The `db:show` payload. */
|
|
14
|
+
export interface DatabaseInfo {
|
|
15
|
+
dialect: 'sqlite' | 'pg' | 'mysql';
|
|
16
|
+
/** Server/library version (`sqlite_version()`, pg `server_version`, mysql `VERSION()`). */
|
|
17
|
+
version: string | null;
|
|
18
|
+
/** Current database name — pg/mysql catalog name, sqlite main file path
|
|
19
|
+
* (`:memory:` shows as null). */
|
|
20
|
+
database: string | null;
|
|
21
|
+
tables: TableSummary[];
|
|
22
|
+
/** View names — only populated when `db:show --views` asks for them. */
|
|
23
|
+
views?: string[];
|
|
24
|
+
}
|
|
25
|
+
/** One index in the `db:table` detail. */
|
|
26
|
+
export interface IndexInfo {
|
|
27
|
+
name: string;
|
|
28
|
+
columns: string[];
|
|
29
|
+
unique: boolean;
|
|
30
|
+
primary: boolean;
|
|
31
|
+
}
|
|
32
|
+
/** One foreign key in the `db:table` detail. `columns[i]` references
|
|
33
|
+
* `foreignColumns[i]`. */
|
|
34
|
+
export interface ForeignKeyInfo {
|
|
35
|
+
/** Constraint name — null on sqlite (PRAGMA reports an ordinal, not a name). */
|
|
36
|
+
name: string | null;
|
|
37
|
+
columns: string[];
|
|
38
|
+
foreignTable: string;
|
|
39
|
+
foreignColumns: string[];
|
|
40
|
+
onUpdate: string | null;
|
|
41
|
+
onDelete: string | null;
|
|
42
|
+
}
|
|
43
|
+
/** The `db:table <name>` payload. */
|
|
44
|
+
export interface TableInfo {
|
|
45
|
+
name: string;
|
|
46
|
+
columns: RawColumn[];
|
|
47
|
+
indexes: IndexInfo[];
|
|
48
|
+
foreignKeys: ForeignKeyInfo[];
|
|
49
|
+
rows: number;
|
|
50
|
+
sizeBytes: number | null;
|
|
51
|
+
}
|
|
52
|
+
export declare function inspectDatabase(executor: Executor, dialect: Dialect, opts?: {
|
|
53
|
+
counts?: boolean;
|
|
54
|
+
views?: boolean;
|
|
55
|
+
}): Promise<DatabaseInfo>;
|
|
56
|
+
/** Inspect one table — null when the table doesn't exist (the caller renders
|
|
57
|
+
* the available-tables hint). The existence check doubles as the injection
|
|
58
|
+
* gate: PRAGMA/`COUNT(*)` interpolation only ever sees the catalog's own
|
|
59
|
+
* spelling of the name, never the raw CLI argument. */
|
|
60
|
+
export declare function inspectTable(executor: Executor, dialect: Dialect, table: string): Promise<TableInfo | null>;
|
|
61
|
+
/** A table's indexes. On sqlite an INTEGER PRIMARY KEY is the rowid — no index
|
|
62
|
+
* row exists for it, so a `PRIMARY` pseudo-entry is synthesized from the
|
|
63
|
+
* column PK ordinals (mirrors Laravel's SQLite schema reader). */
|
|
64
|
+
export declare function readIndexes(executor: Executor, dialect: Dialect, table: string): Promise<IndexInfo[]>;
|
|
65
|
+
/** A table's outbound foreign keys, composite columns paired in order. */
|
|
66
|
+
export declare function readForeignKeys(executor: Executor, dialect: Dialect, table: string): Promise<ForeignKeyInfo[]>;
|
|
67
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/native/schema/inspect.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE7D,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ;wCACoC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAA;IACnC,2FAA2F;IAC3F,OAAO,EAAG,MAAM,GAAG,IAAI,CAAA;IACvB;sCACkC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAI,YAAY,EAAE,CAAA;IACxB,wEAAwE;IACxE,KAAK,CAAC,EAAI,MAAM,EAAE,CAAA;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAK,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAG,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;2BAC2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,IAAI,EAAY,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAS,MAAM,EAAE,CAAA;IACxB,YAAY,EAAI,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,EAAQ,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAQ,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAS,MAAM,CAAA;IACnB,OAAO,EAAM,SAAS,EAAE,CAAA;IACxB,OAAO,EAAM,SAAS,EAAE,CAAA;IACxB,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,IAAI,EAAS,MAAM,CAAA;IACnB,SAAS,EAAI,MAAM,GAAG,IAAI,CAAA;CAC3B;AAyED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,OAAO,CAAC,YAAY,CAAC,CAqCvB;AAuBD;;;wDAGwD;AACxD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAa3B;AAED;;mEAEmE;AACnE,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA4D3G;AAmBD,0EAA0E;AAC1E,wBAAsB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAwFpH"}
|