@c9up/atlas 0.2.0 → 0.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 +8 -0
- package/db.darwin-arm64.node +0 -0
- package/db.darwin-x64.node +0 -0
- package/db.linux-arm64-gnu.node +0 -0
- package/db.linux-x64-gnu.node +0 -0
- package/db.win32-x64-msvc.node +0 -0
- package/dist/AtlasProvider.d.ts +60 -7
- package/dist/AtlasProvider.d.ts.map +1 -1
- package/dist/AtlasProvider.js +204 -38
- package/dist/AtlasProvider.js.map +1 -1
- package/dist/BaseEntity.d.ts +17 -0
- package/dist/BaseEntity.d.ts.map +1 -1
- package/dist/BaseEntity.js.map +1 -1
- package/dist/BaseModel.d.ts +63 -27
- package/dist/BaseModel.d.ts.map +1 -1
- package/dist/BaseModel.js +108 -51
- package/dist/BaseModel.js.map +1 -1
- package/dist/BaseRepository.d.ts +11 -1
- package/dist/BaseRepository.d.ts.map +1 -1
- package/dist/BaseRepository.js +95 -20
- package/dist/BaseRepository.js.map +1 -1
- package/dist/ConnectionManager.d.ts +106 -0
- package/dist/ConnectionManager.d.ts.map +1 -0
- package/dist/ConnectionManager.js +228 -0
- package/dist/ConnectionManager.js.map +1 -0
- package/dist/ModelQuery.d.ts +256 -43
- package/dist/ModelQuery.d.ts.map +1 -1
- package/dist/ModelQuery.js +899 -231
- package/dist/ModelQuery.js.map +1 -1
- package/dist/Transaction.d.ts +54 -1
- package/dist/Transaction.d.ts.map +1 -1
- package/dist/Transaction.js +121 -59
- package/dist/Transaction.js.map +1 -1
- package/dist/adapters/NapiDbAdapter.d.ts +11 -0
- package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
- package/dist/adapters/NapiDbAdapter.js +35 -7
- package/dist/adapters/NapiDbAdapter.js.map +1 -1
- package/dist/console/contract.d.ts +62 -0
- package/dist/console/contract.d.ts.map +1 -0
- package/dist/console/contract.js +38 -0
- package/dist/console/contract.js.map +1 -0
- package/dist/console/factoryCommands.d.ts +23 -0
- package/dist/console/factoryCommands.d.ts.map +1 -0
- package/dist/console/factoryCommands.js +62 -0
- package/dist/console/factoryCommands.js.map +1 -0
- package/dist/console/migrationCommands.d.ts +38 -8
- package/dist/console/migrationCommands.d.ts.map +1 -1
- package/dist/console/migrationCommands.js +157 -50
- package/dist/console/migrationCommands.js.map +1 -1
- package/dist/console/schemaCheckCommand.d.ts +11 -17
- package/dist/console/schemaCheckCommand.d.ts.map +1 -1
- package/dist/console/schemaCheckCommand.js +21 -15
- package/dist/console/schemaCheckCommand.js.map +1 -1
- package/dist/console/schemaDumpCommand.d.ts +30 -0
- package/dist/console/schemaDumpCommand.d.ts.map +1 -0
- package/dist/console/schemaDumpCommand.js +69 -0
- package/dist/console/schemaDumpCommand.js.map +1 -0
- package/dist/console/schemaGenerateCommand.d.ts +100 -0
- package/dist/console/schemaGenerateCommand.d.ts.map +1 -0
- package/dist/console/schemaGenerateCommand.js +246 -0
- package/dist/console/schemaGenerateCommand.js.map +1 -0
- package/dist/console/seederCommands.d.ts +46 -0
- package/dist/console/seederCommands.d.ts.map +1 -0
- package/dist/console/seederCommands.js +136 -0
- package/dist/console/seederCommands.js.map +1 -0
- package/dist/decorators/entity.d.ts +13 -2
- package/dist/decorators/entity.d.ts.map +1 -1
- package/dist/decorators/entity.js +10 -0
- package/dist/decorators/entity.js.map +1 -1
- package/dist/decorators/hooks.d.ts +3 -3
- package/dist/decorators/hooks.d.ts.map +1 -1
- package/dist/decorators/hooks.js.map +1 -1
- package/dist/events.d.ts +5 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/factories.d.ts +8 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +8 -0
- package/dist/factories.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/lucid-schema.d.ts +15 -0
- package/dist/lucid-schema.d.ts.map +1 -0
- package/dist/lucid-schema.js +16 -0
- package/dist/lucid-schema.js.map +1 -0
- package/dist/orm.d.ts +14 -0
- package/dist/orm.d.ts.map +1 -0
- package/dist/orm.js +14 -0
- package/dist/orm.js.map +1 -0
- package/dist/query/DatabaseQueryBuilder.d.ts +557 -0
- package/dist/query/DatabaseQueryBuilder.d.ts.map +1 -0
- package/dist/query/DatabaseQueryBuilder.js +1798 -0
- package/dist/query/DatabaseQueryBuilder.js.map +1 -0
- package/dist/query/DmlBuilder.d.ts +62 -0
- package/dist/query/DmlBuilder.d.ts.map +1 -0
- package/dist/query/DmlBuilder.js +84 -0
- package/dist/query/DmlBuilder.js.map +1 -0
- package/dist/query/QueryBuilder.d.ts +5 -0
- package/dist/query/QueryBuilder.d.ts.map +1 -1
- package/dist/query/QueryBuilder.js +7 -0
- package/dist/query/QueryBuilder.js.map +1 -1
- package/dist/query/RawQueryBuilder.d.ts +47 -0
- package/dist/query/RawQueryBuilder.d.ts.map +1 -0
- package/dist/query/RawQueryBuilder.js +138 -0
- package/dist/query/RawQueryBuilder.js.map +1 -0
- package/dist/query/interpolate.d.ts +45 -0
- package/dist/query/interpolate.d.ts.map +1 -0
- package/dist/query/interpolate.js +51 -0
- package/dist/query/interpolate.js.map +1 -0
- package/dist/query/native.d.ts +8 -0
- package/dist/query/native.d.ts.map +1 -1
- package/dist/query/native.js +14 -0
- package/dist/query/native.js.map +1 -1
- package/dist/query/operators.d.ts +4 -0
- package/dist/query/operators.d.ts.map +1 -0
- package/dist/query/operators.js +27 -0
- package/dist/query/operators.js.map +1 -0
- package/dist/schema/Migration.d.ts +31 -7
- package/dist/schema/Migration.d.ts.map +1 -1
- package/dist/schema/Migration.js +34 -7
- package/dist/schema/Migration.js.map +1 -1
- package/dist/schema/MigrationRunner.d.ts +56 -6
- package/dist/schema/MigrationRunner.d.ts.map +1 -1
- package/dist/schema/MigrationRunner.js +382 -112
- package/dist/schema/MigrationRunner.js.map +1 -1
- package/dist/schema/Schema.d.ts +59 -2
- package/dist/schema/Schema.d.ts.map +1 -1
- package/dist/schema/Schema.js +143 -9
- package/dist/schema/Schema.js.map +1 -1
- package/dist/schema/SchemaDumper.d.ts +121 -0
- package/dist/schema/SchemaDumper.d.ts.map +1 -0
- package/dist/schema/SchemaDumper.js +365 -0
- package/dist/schema/SchemaDumper.js.map +1 -0
- package/dist/schema/Seeder.d.ts +13 -0
- package/dist/schema/Seeder.d.ts.map +1 -1
- package/dist/schema/Seeder.js +28 -5
- package/dist/schema/Seeder.js.map +1 -1
- package/dist/schema/TableBuilder.d.ts +27 -8
- package/dist/schema/TableBuilder.d.ts.map +1 -1
- package/dist/schema/TableBuilder.js +50 -12
- package/dist/schema/TableBuilder.js.map +1 -1
- package/dist/schema/catalog.d.ts +25 -1
- package/dist/schema/catalog.d.ts.map +1 -1
- package/dist/schema/catalog.js +69 -22
- package/dist/schema/catalog.js.map +1 -1
- package/dist/schema/introspect.d.ts +1 -1
- package/dist/schema/introspect.d.ts.map +1 -1
- package/dist/schema/introspect.js +26 -11
- package/dist/schema/introspect.js.map +1 -1
- package/dist/seeders.d.ts +7 -0
- package/dist/seeders.d.ts.map +1 -0
- package/dist/seeders.js +7 -0
- package/dist/seeders.js.map +1 -0
- package/dist/services/db.d.ts +120 -9
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +182 -26
- package/dist/services/db.js.map +1 -1
- package/dist/testing/DatabaseCleanup.d.ts +29 -6
- package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
- package/dist/testing/DatabaseCleanup.js +44 -17
- package/dist/testing/DatabaseCleanup.js.map +1 -1
- package/dist/testing/DbAssertions.d.ts +48 -0
- package/dist/testing/DbAssertions.d.ts.map +1 -0
- package/dist/testing/DbAssertions.js +80 -0
- package/dist/testing/DbAssertions.js.map +1 -0
- package/dist/testing/Factory.d.ts +111 -25
- package/dist/testing/Factory.d.ts.map +1 -1
- package/dist/testing/Factory.js +331 -56
- package/dist/testing/Factory.js.map +1 -1
- package/dist/testing/TestUtils.d.ts +49 -0
- package/dist/testing/TestUtils.d.ts.map +1 -0
- package/dist/testing/TestUtils.js +79 -0
- package/dist/testing/TestUtils.js.map +1 -0
- package/dist/testing/index.d.ts +3 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/types/relations.d.ts +31 -0
- package/dist/types/relations.d.ts.map +1 -0
- package/dist/types/relations.js +20 -0
- package/dist/types/relations.js.map +1 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +30 -2
- package/src/AtlasProvider.ts +297 -51
- package/src/BaseEntity.ts +29 -0
- package/src/BaseModel.ts +174 -37
- package/src/BaseRepository.ts +136 -17
- package/src/ConnectionManager.ts +298 -0
- package/src/ModelQuery.ts +1309 -260
- package/src/Transaction.ts +194 -60
- package/src/adapters/NapiDbAdapter.ts +72 -14
- package/src/console/contract.ts +96 -0
- package/src/console/factoryCommands.ts +73 -0
- package/src/console/migrationCommands.ts +253 -63
- package/src/console/schemaCheckCommand.ts +26 -22
- package/src/console/schemaDumpCommand.ts +96 -0
- package/src/console/schemaGenerateCommand.ts +380 -0
- package/src/console/seederCommands.ts +174 -0
- package/src/decorators/entity.ts +18 -2
- package/src/decorators/hooks.ts +5 -3
- package/src/events.ts +5 -0
- package/src/factories.ts +10 -0
- package/src/index.ts +50 -3
- package/src/lucid-schema.ts +22 -0
- package/src/orm.ts +13 -0
- package/src/query/DatabaseQueryBuilder.ts +2724 -0
- package/src/query/DmlBuilder.ts +131 -0
- package/src/query/QueryBuilder.ts +8 -0
- package/src/query/RawQueryBuilder.ts +173 -0
- package/src/query/interpolate.ts +73 -0
- package/src/query/native.ts +29 -0
- package/src/query/operators.ts +27 -0
- package/src/schema/Migration.ts +36 -7
- package/src/schema/MigrationRunner.ts +483 -119
- package/src/schema/Schema.ts +168 -19
- package/src/schema/SchemaDumper.ts +518 -0
- package/src/schema/Seeder.ts +47 -10
- package/src/schema/TableBuilder.ts +48 -11
- package/src/schema/catalog.ts +94 -24
- package/src/schema/introspect.ts +26 -9
- package/src/seeders.ts +16 -0
- package/src/services/db.ts +343 -31
- package/src/testing/DatabaseCleanup.ts +73 -21
- package/src/testing/DbAssertions.ts +127 -0
- package/src/testing/Factory.ts +559 -79
- package/src/testing/TestUtils.ts +123 -0
- package/src/testing/index.ts +12 -1
- package/src/types/relations.ts +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/query/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,OAAO,EAAE,GACxB,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,uEAAuE;IACvE,QAAQ,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAAE,GACf,iBAAiB,CAOnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query-inspection helpers shared by every builder's `toQuery()` / `toSQL()`.
|
|
3
|
+
*
|
|
4
|
+
* `toQuery()` returns the SQL with bindings substituted as literals (Adonis
|
|
5
|
+
* Lucid semantics — `where "is_active" = 1`), for ad-hoc inspection ONLY. It is
|
|
6
|
+
* NOT injection-safe; forward `toSQL()` + bindings to logs instead.
|
|
7
|
+
*/
|
|
8
|
+
/** SQL-literal render of a single binding (inspection only — not injection-safe). */
|
|
9
|
+
export function literalEscape(v) {
|
|
10
|
+
if (v === null || v === undefined)
|
|
11
|
+
return "NULL";
|
|
12
|
+
if (typeof v === "number")
|
|
13
|
+
return String(v);
|
|
14
|
+
if (typeof v === "boolean")
|
|
15
|
+
return v ? "1" : "0";
|
|
16
|
+
if (v instanceof Date)
|
|
17
|
+
return `'${v.toISOString()}'`;
|
|
18
|
+
// Strings — escape single quotes per SQL. NOT hardened against `\'`.
|
|
19
|
+
return `'${String(v).replace(/'/g, "''")}'`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Substitute native placeholders (`?` sequentially, `$N` by 1-based index) with
|
|
23
|
+
* dialect-safe literals — Lucid `toQuery`. `$N` is resolved by its own index so
|
|
24
|
+
* a reused/reordered Postgres placeholder still maps to the right binding.
|
|
25
|
+
*/
|
|
26
|
+
export function interpolateQuery(sql, params) {
|
|
27
|
+
let seq = 0;
|
|
28
|
+
return sql.replace(/\?|\$\d+/g, (tok) => literalEscape(params[tok[0] === "$" ? Number(tok.slice(1)) - 1 : seq++]));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Normalize dialect-native positional placeholders (`$1`, `$2`, … — Postgres) to
|
|
32
|
+
* Knex-style `?`, matching what Lucid's `toSQL().sql` returns for every dialect.
|
|
33
|
+
* MySQL/SQLite already emit `?`, so this is a no-op there. Display concern only:
|
|
34
|
+
* atlas executes with the native statement (see `toNative`).
|
|
35
|
+
*/
|
|
36
|
+
export function toQuestionMarks(sql) {
|
|
37
|
+
return sql.replace(/\$\d+/g, "?");
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Wrap a NATIVE compiled `sql` + `params` as a Lucid-shaped {@link CompiledStatement}:
|
|
41
|
+
* the public `.sql` is `?`-normalized, `.toNative()` yields the native form.
|
|
42
|
+
*/
|
|
43
|
+
export function compiledStatement(nativeSql, params) {
|
|
44
|
+
return {
|
|
45
|
+
sql: toQuestionMarks(nativeSql),
|
|
46
|
+
bindings: params,
|
|
47
|
+
params,
|
|
48
|
+
toNative: () => ({ sql: nativeSql, bindings: params }),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=interpolate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/query/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,CAAU;IACvC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACjD,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;IACrD,qEAAqE;IACrE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,GAAW,EACX,MAA0B;IAE1B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACvC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CACxE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAiBD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAChC,SAAiB,EACjB,MAAiB;IAEjB,OAAO;QACN,GAAG,EAAE,eAAe,CAAC,SAAS,CAAC;QAC/B,QAAQ,EAAE,MAAM;QAChB,MAAM;QACN,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACtD,CAAC;AACH,CAAC"}
|
package/dist/query/native.d.ts
CHANGED
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* @implements FR36
|
|
5
5
|
*/
|
|
6
6
|
export type AtlasDialect = "sqlite" | "postgres" | "mysql";
|
|
7
|
+
/**
|
|
8
|
+
* Dialect names accepted by `ifDialect`/`unlessDialect`, including the Lucid/Knex
|
|
9
|
+
* client aliases — so a callback ported from Lucid (`ifDialect('sqlite3', …)`,
|
|
10
|
+
* which Lucid names `sqlite3`/`better-sqlite3`, not `sqlite`) still matches.
|
|
11
|
+
*/
|
|
12
|
+
export type DialectName = AtlasDialect | "sqlite3" | "better-sqlite3" | "postgresql" | "pg" | "mysql2";
|
|
13
|
+
/** Map a Lucid/Knex dialect name to the atlas dialect, or `undefined` if unknown. */
|
|
14
|
+
export declare function normalizeDialect(name: string): AtlasDialect | undefined;
|
|
7
15
|
export declare function setAtlasDialect(dialect: AtlasDialect): void;
|
|
8
16
|
export declare function getAtlasDialect(): AtlasDialect;
|
|
9
17
|
export interface CompiledStatement {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/query/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoCH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/query/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoCH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACpB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,YAAY,GACZ,IAAI,GACJ,QAAQ,CAAC;AAaZ,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEvE;AAKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,CAAC;CAClB;AAaD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,IAAI,CAIN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACV,IAAI,CAIN;AAuCD;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAA6B,GACpC,iBAAiB,CAYnB"}
|
package/dist/query/native.js
CHANGED
|
@@ -27,6 +27,20 @@ try {
|
|
|
27
27
|
catch (e) {
|
|
28
28
|
loadError = e;
|
|
29
29
|
}
|
|
30
|
+
const DIALECT_ALIASES = {
|
|
31
|
+
sqlite: "sqlite",
|
|
32
|
+
sqlite3: "sqlite",
|
|
33
|
+
"better-sqlite3": "sqlite",
|
|
34
|
+
postgres: "postgres",
|
|
35
|
+
postgresql: "postgres",
|
|
36
|
+
pg: "postgres",
|
|
37
|
+
mysql: "mysql",
|
|
38
|
+
mysql2: "mysql",
|
|
39
|
+
};
|
|
40
|
+
/** Map a Lucid/Knex dialect name to the atlas dialect, or `undefined` if unknown. */
|
|
41
|
+
export function normalizeDialect(name) {
|
|
42
|
+
return DIALECT_ALIASES[name];
|
|
43
|
+
}
|
|
30
44
|
/** Module-level default dialect. Set by AtlasProvider at boot. */
|
|
31
45
|
let defaultDialect = "sqlite";
|
|
32
46
|
export function setAtlasDialect(dialect) {
|
package/dist/query/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/query/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,GAA2B;IAC3C,WAAW,EAAE,eAAe;IAC5B,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,cAAc;IAC9B,WAAW,EAAE,gBAAgB;IAC7B,aAAa,EAAE,iBAAiB;CAChC,CAAC;AAOF,IAAI,MAAiC,CAAC;AAEtC,IAAI,SAAkB,CAAC;AAEvB,IAAI,CAAC;IACJ,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,MAAM,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;AACF,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACZ,SAAS,GAAG,CAAC,CAAC;AACf,CAAC;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/query/native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../src/query/operators.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAqBzD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** SQL operator helpers shared by the query builders. */
|
|
2
|
+
const NEGATION = {
|
|
3
|
+
"=": "!=",
|
|
4
|
+
"!=": "=",
|
|
5
|
+
"<>": "=",
|
|
6
|
+
"<": ">=",
|
|
7
|
+
">": "<=",
|
|
8
|
+
"<=": ">",
|
|
9
|
+
">=": "<",
|
|
10
|
+
IN: "NOT IN",
|
|
11
|
+
"NOT IN": "IN",
|
|
12
|
+
LIKE: "NOT LIKE",
|
|
13
|
+
"NOT LIKE": "LIKE",
|
|
14
|
+
ILIKE: "NOT ILIKE",
|
|
15
|
+
BETWEEN: "NOT BETWEEN",
|
|
16
|
+
"NOT BETWEEN": "BETWEEN",
|
|
17
|
+
"IS NULL": "IS NOT NULL",
|
|
18
|
+
"IS NOT NULL": "IS NULL",
|
|
19
|
+
};
|
|
20
|
+
/** The logical negation of a comparison operator (`>=` → `<`, `=` → `!=`, …). */
|
|
21
|
+
export function negateOperator(op) {
|
|
22
|
+
const negated = NEGATION[op.toUpperCase()] ?? NEGATION[op];
|
|
23
|
+
if (!negated)
|
|
24
|
+
throw new Error(`whereNot: unsupported operator '${op}'`);
|
|
25
|
+
return negated;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=operators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../../src/query/operators.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,MAAM,QAAQ,GAA2B;IACxC,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,aAAa;IACxB,aAAa,EAAE,SAAS;CACxB,CAAC;AAEF,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,EAAU;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -35,19 +35,43 @@ import { Schema } from "./SchemaBuilder.js";
|
|
|
35
35
|
export type DeferredMigrationCallback = (db: CatalogConnection) => Promise<void> | void;
|
|
36
36
|
export declare abstract class Migration {
|
|
37
37
|
#private;
|
|
38
|
+
/**
|
|
39
|
+
* Adonis Lucid `static disableTransactions`. Set `static disableTransactions =
|
|
40
|
+
* true` on a migration to run it OUTSIDE a transaction — for DDL that cannot
|
|
41
|
+
* run inside one (e.g. Postgres `CREATE INDEX CONCURRENTLY`). Applies to both
|
|
42
|
+
* `up()` and `down()`; the runner then executes the migration non-atomically
|
|
43
|
+
* by design (so `this.defer()` runs loose too). Defaults to `false`.
|
|
44
|
+
*/
|
|
45
|
+
static disableTransactions: boolean;
|
|
38
46
|
readonly schema: Schema;
|
|
47
|
+
/**
|
|
48
|
+
* Adonis Lucid `this.dryRun` — `true` while the runner generates SQL without
|
|
49
|
+
* executing it (set by `MigrationRunner.dryRun()`). Read it in `up()`/`down()`
|
|
50
|
+
* to conditionally skip side-effectful branches. Defaults to `false`.
|
|
51
|
+
*/
|
|
52
|
+
dryRun: boolean;
|
|
39
53
|
constructor(dialect?: AtlasDialect);
|
|
40
54
|
/**
|
|
41
|
-
* Register a callback to run AFTER this migration's schema statements
|
|
42
|
-
*
|
|
43
|
-
*
|
|
55
|
+
* Register a callback to run AFTER this migration's schema statements (Adonis
|
|
56
|
+
* Lucid `this.defer`) — typically to seed/backfill data into a table the same
|
|
57
|
+
* migration just created. The callback gets a live connection handle and runs
|
|
58
|
+
* in registration order, interleaved with the schema.
|
|
44
59
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* the
|
|
48
|
-
*
|
|
60
|
+
* ATOMICITY (Lucid parity): by default the schema, the deferred callbacks AND
|
|
61
|
+
* the migration's tracking row all run in ONE transaction — a throwing callback
|
|
62
|
+
* rolls the schema back too, so the migration is all-or-nothing and re-runnable
|
|
63
|
+
* (fully atomic on sqlite/postgres; MySQL auto-commits DDL, so only its tracking
|
|
64
|
+
* row is bound to the callbacks). The one exception is a migration with `static
|
|
65
|
+
* disableTransactions = true`: it opts out of the transaction entirely (for
|
|
66
|
+
* txn-incompatible DDL), so there the deferred work runs non-atomically, by
|
|
67
|
+
* design.
|
|
49
68
|
*/
|
|
50
69
|
defer(callback: DeferredMigrationCallback): void;
|
|
70
|
+
/**
|
|
71
|
+
* @internal Effective `static disableTransactions` of the concrete subclass —
|
|
72
|
+
* read by the runner to decide whether to wrap this migration in a transaction.
|
|
73
|
+
*/
|
|
74
|
+
get transactionsDisabled(): boolean;
|
|
51
75
|
/** @internal Return and clear the deferred callbacks — called by the runner. */
|
|
52
76
|
consumeDeferred(): DeferredMigrationCallback[];
|
|
53
77
|
/** Apply the migration. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.d.ts","sourceRoot":"","sources":["../../src/schema/Migration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACvC,EAAE,EAAE,iBAAiB,KACjB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,8BAAsB,SAAS;;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Migration.d.ts","sourceRoot":"","sources":["../../src/schema/Migration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACvC,EAAE,EAAE,iBAAiB,KACjB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,8BAAsB,SAAS;;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,UAAS;IAEnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,MAAM,UAAS;gBAIH,OAAO,CAAC,EAAE,YAAY;IAQlC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIhD;;;OAGG;IACH,IAAI,oBAAoB,IAAI,OAAO,CAGlC;IAED,gFAAgF;IAChF,eAAe,IAAI,yBAAyB,EAAE;IAM9C,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAEnC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAErC,sFAAsF;IACtF,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAI/B;;;;;;;;;;OAUG;IACH,GAAG,IAAI,MAAM;IAMb;;;;OAIG;IACG,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ3D,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAOnE"}
|
package/dist/schema/Migration.js
CHANGED
|
@@ -6,7 +6,21 @@
|
|
|
6
6
|
import { RawSql } from "../query/QueryBuilder.js";
|
|
7
7
|
import { Schema } from "./SchemaBuilder.js";
|
|
8
8
|
export class Migration {
|
|
9
|
+
/**
|
|
10
|
+
* Adonis Lucid `static disableTransactions`. Set `static disableTransactions =
|
|
11
|
+
* true` on a migration to run it OUTSIDE a transaction — for DDL that cannot
|
|
12
|
+
* run inside one (e.g. Postgres `CREATE INDEX CONCURRENTLY`). Applies to both
|
|
13
|
+
* `up()` and `down()`; the runner then executes the migration non-atomically
|
|
14
|
+
* by design (so `this.defer()` runs loose too). Defaults to `false`.
|
|
15
|
+
*/
|
|
16
|
+
static disableTransactions = false;
|
|
9
17
|
schema;
|
|
18
|
+
/**
|
|
19
|
+
* Adonis Lucid `this.dryRun` — `true` while the runner generates SQL without
|
|
20
|
+
* executing it (set by `MigrationRunner.dryRun()`). Read it in `up()`/`down()`
|
|
21
|
+
* to conditionally skip side-effectful branches. Defaults to `false`.
|
|
22
|
+
*/
|
|
23
|
+
dryRun = false;
|
|
10
24
|
#dialect;
|
|
11
25
|
#deferred = [];
|
|
12
26
|
constructor(dialect) {
|
|
@@ -17,18 +31,31 @@ export class Migration {
|
|
|
17
31
|
this.#dialect = dialect ?? "sqlite";
|
|
18
32
|
}
|
|
19
33
|
/**
|
|
20
|
-
* Register a callback to run AFTER this migration's schema statements
|
|
21
|
-
*
|
|
22
|
-
*
|
|
34
|
+
* Register a callback to run AFTER this migration's schema statements (Adonis
|
|
35
|
+
* Lucid `this.defer`) — typically to seed/backfill data into a table the same
|
|
36
|
+
* migration just created. The callback gets a live connection handle and runs
|
|
37
|
+
* in registration order, interleaved with the schema.
|
|
23
38
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* the
|
|
27
|
-
*
|
|
39
|
+
* ATOMICITY (Lucid parity): by default the schema, the deferred callbacks AND
|
|
40
|
+
* the migration's tracking row all run in ONE transaction — a throwing callback
|
|
41
|
+
* rolls the schema back too, so the migration is all-or-nothing and re-runnable
|
|
42
|
+
* (fully atomic on sqlite/postgres; MySQL auto-commits DDL, so only its tracking
|
|
43
|
+
* row is bound to the callbacks). The one exception is a migration with `static
|
|
44
|
+
* disableTransactions = true`: it opts out of the transaction entirely (for
|
|
45
|
+
* txn-incompatible DDL), so there the deferred work runs non-atomically, by
|
|
46
|
+
* design.
|
|
28
47
|
*/
|
|
29
48
|
defer(callback) {
|
|
30
49
|
this.#deferred.push(callback);
|
|
31
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* @internal Effective `static disableTransactions` of the concrete subclass —
|
|
53
|
+
* read by the runner to decide whether to wrap this migration in a transaction.
|
|
54
|
+
*/
|
|
55
|
+
get transactionsDisabled() {
|
|
56
|
+
const ctor = this.constructor;
|
|
57
|
+
return "disableTransactions" in ctor && ctor.disableTransactions === true;
|
|
58
|
+
}
|
|
32
59
|
/** @internal Return and clear the deferred callbacks — called by the runner. */
|
|
33
60
|
consumeDeferred() {
|
|
34
61
|
const deferred = this.#deferred;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.js","sourceRoot":"","sources":["../../src/schema/Migration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA+B5C,MAAM,OAAgB,SAAS;
|
|
1
|
+
{"version":3,"file":"Migration.js","sourceRoot":"","sources":["../../src/schema/Migration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA+B5C,MAAM,OAAgB,SAAS;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAE1B,MAAM,CAAS;IACxB;;;;OAIG;IACH,MAAM,GAAG,KAAK,CAAC;IACN,QAAQ,CAAe;IAChC,SAAS,GAAgC,EAAE,CAAC;IAE5C,YAAY,OAAsB;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,oEAAoE;QACpE,uEAAuE;QACvE,qEAAqE;QACrE,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,QAAQ,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,QAAmC;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,oBAAoB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,OAAO,qBAAqB,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC;IAC3E,CAAC;IAED,gFAAgF;IAChF,eAAe;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAQD,sFAAsF;IACtF,GAAG,CAAC,UAAkB;QACrB,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,GAAG;QACF,OAAO,IAAI,MAAM,CAChB,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAC1D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,UAA8B;QAC5C,IAAI,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAA8B;QAC9C,IAAI,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @implements FR34
|
|
5
5
|
*/
|
|
6
6
|
import { type AtlasDialect } from "../query/native.js";
|
|
7
|
+
import { type CatalogConnection } from "./catalog.js";
|
|
7
8
|
export interface BatchStmt {
|
|
8
9
|
sql: string;
|
|
9
10
|
params?: unknown[];
|
|
@@ -19,6 +20,17 @@ export interface DatabaseAdapter {
|
|
|
19
20
|
* "Migrations non transactionnelles" in the remediation audit).
|
|
20
21
|
*/
|
|
21
22
|
runInTransaction?(batch: readonly BatchStmt[]): Promise<number>;
|
|
23
|
+
/**
|
|
24
|
+
* Optional MANAGED interactive transaction pinned to one connection (Lucid
|
|
25
|
+
* `db.transaction(cb)`): commit on success, rollback on throw. Real
|
|
26
|
+
* connections (`createNapiConnection`), the provider and the CLI all supply
|
|
27
|
+
* it. It is REQUIRED for the two operations whose strong guarantee cannot be
|
|
28
|
+
* faked without it: `this.defer()` (its callbacks must share the migration's
|
|
29
|
+
* transaction) and MySQL FK suspension (a session-level `SET` needs a real
|
|
30
|
+
* `finally` to restore). Both REJECT rather than silently degrade when it is
|
|
31
|
+
* absent — plain migrations without either feature don't need it.
|
|
32
|
+
*/
|
|
33
|
+
transaction?<T>(callback: (trx: CatalogConnection) => Promise<T>): Promise<T>;
|
|
22
34
|
/** Close the connection. */
|
|
23
35
|
close(): Promise<void>;
|
|
24
36
|
}
|
|
@@ -43,9 +55,11 @@ export declare class MigrationRunner {
|
|
|
43
55
|
dialect?: AtlasDialect;
|
|
44
56
|
tableName?: string;
|
|
45
57
|
/**
|
|
46
|
-
* Refuse
|
|
47
|
-
* Lucid `disableRollbacksInProduction`)
|
|
48
|
-
* production data by accident.
|
|
58
|
+
* Refuse destructive ops (rollback/reset/refresh/fresh/wipe) when
|
|
59
|
+
* `NODE_ENV === 'production'` (Adonis Lucid `disableRollbacksInProduction`)
|
|
60
|
+
* — a guard against dropping production data by accident. **Defaults to
|
|
61
|
+
* ON**, matching Lucid: a destructive migration command in production
|
|
62
|
+
* throws unless `{ force: true }` (CLI `--force`). Pass `false` to opt out.
|
|
49
63
|
*/
|
|
50
64
|
disableRollbacksInProduction?: boolean;
|
|
51
65
|
/**
|
|
@@ -54,13 +68,37 @@ export declare class MigrationRunner {
|
|
|
54
68
|
* so it prevents concurrent migrations on every dialect, SQLite too.
|
|
55
69
|
*/
|
|
56
70
|
disableLocks?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Run EVERY migration outside a transaction (Adonis Lucid global
|
|
73
|
+
* `migrations.disableTransactions`). A single migration can also opt out
|
|
74
|
+
* on its own with `static disableTransactions = true`; the effective value
|
|
75
|
+
* is the OR of the two. Defaults to `false` — migrations are wrapped in a
|
|
76
|
+
* transaction for clean, all-or-nothing rollbacks.
|
|
77
|
+
*/
|
|
78
|
+
disableTransactions?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Sort migration files with a numeric-aware comparator (Adonis Lucid
|
|
81
|
+
* `migrations.naturalSort`), so `2_x` orders before `10_x`. Defaults to
|
|
82
|
+
* `false` — plain lexicographic order, which is already correct for the
|
|
83
|
+
* fixed-width `Date.now()` prefixes `make:migration` generates.
|
|
84
|
+
*/
|
|
85
|
+
naturalSort?: boolean;
|
|
57
86
|
});
|
|
87
|
+
/**
|
|
88
|
+
* Force-clear a stuck migration lock (Adonis Lucid `migration:unlock`). A
|
|
89
|
+
* process killed mid-migrate leaves `is_locked = 1` with a stale token and
|
|
90
|
+
* NO way for a later run to acquire — this unconditionally clears the row so
|
|
91
|
+
* migrations can proceed. Returns `true` if a held lock was cleared.
|
|
92
|
+
*/
|
|
93
|
+
forceUnlock(): Promise<boolean>;
|
|
58
94
|
/** Ensure the ream_migrations tracking table exists. */
|
|
59
95
|
init(): Promise<void>;
|
|
60
96
|
/** Get the status of all migrations. */
|
|
61
97
|
status(): Promise<MigrationStatus[]>;
|
|
62
98
|
/** Run all pending migrations. */
|
|
63
|
-
migrate(
|
|
99
|
+
migrate(options?: {
|
|
100
|
+
schemaPath?: string;
|
|
101
|
+
}): Promise<string[]>;
|
|
64
102
|
/** Rollback the last batch of migrations. */
|
|
65
103
|
rollback(options?: {
|
|
66
104
|
batch?: number;
|
|
@@ -91,10 +129,20 @@ export declare class MigrationRunner {
|
|
|
91
129
|
*
|
|
92
130
|
* `rolled` is always empty — fresh drops rather than rolls back.
|
|
93
131
|
*/
|
|
94
|
-
fresh(
|
|
132
|
+
fresh(options?: {
|
|
133
|
+
force?: boolean;
|
|
134
|
+
schemaPath?: string;
|
|
135
|
+
}): Promise<{
|
|
95
136
|
rolled: string[];
|
|
96
137
|
executed: string[];
|
|
97
138
|
}>;
|
|
139
|
+
/**
|
|
140
|
+
* Load a schema dump (Adonis Lucid `SchemaDumper` output) into the database —
|
|
141
|
+
* executes every statement in the `.sql` file in order, recreating the tables
|
|
142
|
+
* AND the migration bookkeeping rows. Used by `--schema-path`; also callable
|
|
143
|
+
* directly to seed a fresh database from a committed dump.
|
|
144
|
+
*/
|
|
145
|
+
loadDump(sqlPath: string): Promise<void>;
|
|
98
146
|
/**
|
|
99
147
|
* Drop every user table — INCLUDING the migrations tracking table (Lucid's
|
|
100
148
|
* `db:wipe`). `fresh()` calls this and then re-migrates; a caller can use it
|
|
@@ -105,7 +153,9 @@ export declare class MigrationRunner {
|
|
|
105
153
|
* duration (they don't accept/respect CASCADE on `DROP TABLE`), restored
|
|
106
154
|
* even if a drop throws.
|
|
107
155
|
*/
|
|
108
|
-
wipe(
|
|
156
|
+
wipe(options?: {
|
|
157
|
+
force?: boolean;
|
|
158
|
+
}): Promise<void>;
|
|
109
159
|
/**
|
|
110
160
|
* Rollback every applied batch (alias for `migrate:reset`).
|
|
111
161
|
* Returns the list of rolled-back migration names (in rollback order).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"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"}
|