@uql/core 3.7.14 → 3.8.2
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/CHANGELOG.md +17 -1
- package/README.md +12 -5
- package/dist/browser/uql-browser.min.js +16 -15
- package/dist/browser/uql-browser.min.js.map +1 -1
- package/dist/dialect/abstractDialect.d.ts +7 -2
- package/dist/dialect/abstractDialect.d.ts.map +1 -1
- package/dist/dialect/abstractDialect.js +9 -1
- package/dist/dialect/abstractDialect.js.map +1 -1
- package/dist/dialect/abstractSqlDialect.d.ts +6 -6
- package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
- package/dist/dialect/abstractSqlDialect.js +14 -13
- package/dist/dialect/abstractSqlDialect.js.map +1 -1
- package/dist/dialect/dialectConfig.d.ts +23 -0
- package/dist/dialect/dialectConfig.d.ts.map +1 -0
- package/dist/dialect/dialectConfig.js +96 -0
- package/dist/dialect/dialectConfig.js.map +1 -0
- package/dist/dialect/index.d.ts +1 -0
- package/dist/dialect/index.d.ts.map +1 -1
- package/dist/dialect/index.js +1 -0
- package/dist/dialect/index.js.map +1 -1
- package/dist/entity/decorator/definition.d.ts.map +1 -1
- package/dist/entity/decorator/definition.js +2 -1
- package/dist/entity/decorator/definition.js.map +1 -1
- package/dist/entity/decorator/index-decorator.d.ts +36 -0
- package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
- package/dist/entity/decorator/index-decorator.js +51 -0
- package/dist/entity/decorator/index-decorator.js.map +1 -0
- package/dist/entity/decorator/index.d.ts +1 -0
- package/dist/entity/decorator/index.d.ts.map +1 -1
- package/dist/entity/decorator/index.js +1 -0
- package/dist/entity/decorator/index.js.map +1 -1
- package/dist/maria/mariaDialect.d.ts +2 -1
- package/dist/maria/mariaDialect.d.ts.map +1 -1
- package/dist/maria/mariaDialect.js +3 -0
- package/dist/maria/mariaDialect.js.map +1 -1
- package/dist/migrate/builder/columnBuilder.d.ts +79 -0
- package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/columnBuilder.js +159 -0
- package/dist/migrate/builder/columnBuilder.js.map +1 -0
- package/dist/migrate/builder/expressions.d.ts +87 -0
- package/dist/migrate/builder/expressions.d.ts.map +1 -0
- package/dist/migrate/builder/expressions.js +150 -0
- package/dist/migrate/builder/expressions.js.map +1 -0
- package/dist/migrate/builder/index.d.ts +6 -0
- package/dist/migrate/builder/index.d.ts.map +1 -0
- package/dist/migrate/builder/index.js +6 -0
- package/dist/migrate/builder/index.js.map +1 -0
- package/dist/migrate/builder/migrationBuilder.d.ts +109 -0
- package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/migrationBuilder.js +453 -0
- package/dist/migrate/builder/migrationBuilder.js.map +1 -0
- package/dist/migrate/builder/tableBuilder.d.ts +51 -0
- package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
- package/dist/migrate/builder/tableBuilder.js +291 -0
- package/dist/migrate/builder/tableBuilder.js.map +1 -0
- package/dist/migrate/builder/types.d.ts +466 -0
- package/dist/migrate/builder/types.d.ts.map +1 -0
- package/dist/migrate/builder/types.js +8 -0
- package/dist/migrate/builder/types.js.map +1 -0
- package/dist/migrate/cli.d.ts +4 -6
- package/dist/migrate/cli.d.ts.map +1 -1
- package/dist/migrate/cli.js +166 -23
- package/dist/migrate/cli.js.map +1 -1
- package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
- package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
- package/dist/migrate/codegen/entityCodeGenerator.js +401 -0
- package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
- package/dist/migrate/codegen/entityMerger.d.ts +111 -0
- package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
- package/dist/migrate/codegen/entityMerger.js +291 -0
- package/dist/migrate/codegen/entityMerger.js.map +1 -0
- package/dist/migrate/codegen/index.d.ts +10 -0
- package/dist/migrate/codegen/index.d.ts.map +1 -0
- package/dist/migrate/codegen/index.js +14 -0
- package/dist/migrate/codegen/index.js.map +1 -0
- package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
- package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
- package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
- package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
- package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
- package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
- package/dist/migrate/codegen/smartRelationDetector.js +135 -0
- package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
- package/dist/migrate/drift/driftDetector.d.ts +81 -0
- package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
- package/dist/migrate/drift/driftDetector.js +248 -0
- package/dist/migrate/drift/driftDetector.js.map +1 -0
- package/dist/migrate/drift/index.d.ts +7 -0
- package/dist/migrate/drift/index.d.ts.map +1 -0
- package/dist/migrate/drift/index.js +7 -0
- package/dist/migrate/drift/index.js.map +1 -0
- package/dist/migrate/generator/index.d.ts +1 -3
- package/dist/migrate/generator/index.d.ts.map +1 -1
- package/dist/migrate/generator/index.js +1 -3
- package/dist/migrate/generator/index.js.map +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +29 -3
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.js +86 -4
- package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -1
- package/dist/migrate/index.d.ts +7 -8
- package/dist/migrate/index.d.ts.map +1 -1
- package/dist/migrate/index.js +11 -9
- package/dist/migrate/index.js.map +1 -1
- package/dist/migrate/introspection/baseSqlIntrospector.d.ts +28 -0
- package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/baseSqlIntrospector.js +135 -0
- package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts +6 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/mongoIntrospector.js +54 -0
- package/dist/migrate/introspection/mongoIntrospector.js.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +3 -1
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.js +20 -11
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.d.ts +3 -2
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.js +23 -14
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +2 -2
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.js +15 -13
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -1
- package/dist/migrate/migrator.d.ts +29 -0
- package/dist/migrate/migrator.d.ts.map +1 -1
- package/dist/migrate/migrator.js +31 -23
- package/dist/migrate/migrator.js.map +1 -1
- package/dist/migrate/schemaGenerator.d.ts +72 -22
- package/dist/migrate/schemaGenerator.d.ts.map +1 -1
- package/dist/migrate/schemaGenerator.js +389 -153
- package/dist/migrate/schemaGenerator.js.map +1 -1
- package/dist/migrate/sync/index.d.ts +7 -0
- package/dist/migrate/sync/index.d.ts.map +1 -0
- package/dist/migrate/sync/index.js +7 -0
- package/dist/migrate/sync/index.js.map +1 -0
- package/dist/migrate/sync/schemaSync.d.ts +132 -0
- package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
- package/dist/migrate/sync/schemaSync.js +260 -0
- package/dist/migrate/sync/schemaSync.js.map +1 -0
- package/dist/mongo/mongoDialect.d.ts +2 -1
- package/dist/mongo/mongoDialect.d.ts.map +1 -1
- package/dist/mongo/mongoDialect.js +3 -0
- package/dist/mongo/mongoDialect.js.map +1 -1
- package/dist/mysql/mysqlDialect.d.ts +2 -0
- package/dist/mysql/mysqlDialect.d.ts.map +1 -1
- package/dist/mysql/mysqlDialect.js +3 -0
- package/dist/mysql/mysqlDialect.js.map +1 -1
- package/dist/postgres/postgresDialect.js +1 -1
- package/dist/postgres/postgresDialect.js.map +1 -1
- package/dist/schema/canonicalType.d.ts +42 -0
- package/dist/schema/canonicalType.d.ts.map +1 -0
- package/dist/schema/canonicalType.js +524 -0
- package/dist/schema/canonicalType.js.map +1 -0
- package/dist/schema/index.d.ts +28 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +29 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schemaAST.d.ts +155 -0
- package/dist/schema/schemaAST.d.ts.map +1 -0
- package/dist/schema/schemaAST.js +496 -0
- package/dist/schema/schemaAST.js.map +1 -0
- package/dist/schema/schemaASTBuilder.d.ts +58 -0
- package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
- package/dist/schema/schemaASTBuilder.js +193 -0
- package/dist/schema/schemaASTBuilder.js.map +1 -0
- package/dist/schema/schemaASTDiffer.d.ts +84 -0
- package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
- package/dist/schema/schemaASTDiffer.js +431 -0
- package/dist/schema/schemaASTDiffer.js.map +1 -0
- package/dist/schema/types.d.ts +347 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +11 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/sqlite/sqliteDialect.js +1 -1
- package/dist/sqlite/sqliteDialect.js.map +1 -1
- package/dist/sqlite/sqliteQuerierPool.js.map +1 -1
- package/dist/type/config.d.ts +6 -0
- package/dist/type/config.d.ts.map +1 -1
- package/dist/type/entity.d.ts +24 -0
- package/dist/type/entity.d.ts.map +1 -1
- package/dist/type/migration.d.ts +54 -4
- package/dist/type/migration.d.ts.map +1 -1
- package/dist/type/querier.d.ts +2 -5
- package/dist/type/querier.d.ts.map +1 -1
- package/dist/type/querier.js.map +1 -1
- package/dist/type/query.d.ts +8 -0
- package/dist/type/query.d.ts.map +1 -1
- package/dist/util/field.util.d.ts +0 -1
- package/dist/util/field.util.d.ts.map +1 -1
- package/dist/util/field.util.js +8 -2
- package/dist/util/field.util.js.map +1 -1
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +2 -1
- package/dist/util/logger.js.map +1 -1
- package/dist/util/string.util.d.ts +24 -0
- package/dist/util/string.util.d.ts.map +1 -1
- package/dist/util/string.util.js +57 -0
- package/dist/util/string.util.js.map +1 -1
- package/package.json +2 -2
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +0 -15
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts.map +0 -1
- package/dist/migrate/generator/mysqlSchemaGenerator.js +0 -88
- package/dist/migrate/generator/mysqlSchemaGenerator.js.map +0 -1
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts +0 -19
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts.map +0 -1
- package/dist/migrate/generator/postgresSchemaGenerator.js +0 -115
- package/dist/migrate/generator/postgresSchemaGenerator.js.map +0 -1
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +0 -16
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts.map +0 -1
- package/dist/migrate/generator/sqliteSchemaGenerator.js +0 -74
- package/dist/migrate/generator/sqliteSchemaGenerator.js.map +0 -1
- package/dist/migrate/type.d.ts +0 -2
- package/dist/migrate/type.d.ts.map +0 -1
- package/dist/migrate/type.js +0 -2
- package/dist/migrate/type.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entity/decorator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entity/decorator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AbstractSqlDialect } from '../dialect/index.js';
|
|
2
|
-
import type { QueryConflictPaths, QueryContext, QueryOptions, Type } from '../type/index.js';
|
|
2
|
+
import type { NamingStrategy, QueryConflictPaths, QueryContext, QueryOptions, Type } from '../type/index.js';
|
|
3
3
|
export declare class MariaDialect extends AbstractSqlDialect {
|
|
4
|
+
constructor(namingStrategy?: NamingStrategy);
|
|
4
5
|
addValue(values: unknown[], value: unknown): string;
|
|
5
6
|
insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
|
|
6
7
|
upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariaDialect.d.ts","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mariaDialect.d.ts","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7G,qBAAa,YAAa,SAAQ,kBAAkB;gBACtC,cAAc,CAAC,EAAE,cAAc;IAIlC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAQnD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI;IAK1F,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAmBrG,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAGxC"}
|
|
@@ -2,6 +2,9 @@ import SqlString from 'sqlstring';
|
|
|
2
2
|
import { AbstractSqlDialect } from '../dialect/index.js';
|
|
3
3
|
import { getMeta } from '../entity/index.js';
|
|
4
4
|
export class MariaDialect extends AbstractSqlDialect {
|
|
5
|
+
constructor(namingStrategy) {
|
|
6
|
+
super('mariadb', namingStrategy);
|
|
7
|
+
}
|
|
5
8
|
addValue(values, value) {
|
|
6
9
|
if (value instanceof Date) {
|
|
7
10
|
values.push(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariaDialect.js","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,MAAM,OAAO,YAAa,SAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"file":"mariaDialect.js","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,MAAM,OAAO,YAAa,SAAQ,kBAAkB;IAClD,YAAY,cAA+B;QACzC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC;IAEQ,QAAQ,CAAC,MAAiB,EAAE,KAAc;QACjD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAEQ,MAAM,CAAI,GAAiB,EAAE,MAAe,EAAE,OAAgB,EAAE,IAAmB;QAC1F,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEQ,MAAM,CAAI,GAAiB,EAAE,MAAe,EAAE,aAAoC,EAAE,OAAU;QACrG,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;QAC/G,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,4BAA4B,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;YAC5B,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEQ,MAAM,CAAC,KAAc;QAC5B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column Builder
|
|
3
|
+
*
|
|
4
|
+
* Fluent API for defining columns in migrations.
|
|
5
|
+
*/
|
|
6
|
+
import type { CanonicalType, ForeignKeyAction } from '../../schema/types.js';
|
|
7
|
+
import type { BaseColumnOptions, FullColumnDefinition, IColumnBuilder, IForeignKeyBuilder } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Builder for column definitions with a fluent API.
|
|
10
|
+
* Columns are NOT NULL by default (safer).
|
|
11
|
+
*/
|
|
12
|
+
export declare class ColumnBuilder implements IColumnBuilder, IForeignKeyBuilder {
|
|
13
|
+
private _name;
|
|
14
|
+
private _type;
|
|
15
|
+
private _nullable;
|
|
16
|
+
private _defaultValue?;
|
|
17
|
+
private _primaryKey;
|
|
18
|
+
private _autoIncrement;
|
|
19
|
+
private _unique;
|
|
20
|
+
private _comment?;
|
|
21
|
+
private _index?;
|
|
22
|
+
private _foreignKey?;
|
|
23
|
+
constructor(name: string, type: CanonicalType, options?: BaseColumnOptions);
|
|
24
|
+
/**
|
|
25
|
+
* Make the column nullable or not nullable.
|
|
26
|
+
*/
|
|
27
|
+
nullable(value?: boolean): this;
|
|
28
|
+
/**
|
|
29
|
+
* Make the column NOT NULL.
|
|
30
|
+
*/
|
|
31
|
+
notNullable(): this;
|
|
32
|
+
/**
|
|
33
|
+
* Set a default value for the column.
|
|
34
|
+
*/
|
|
35
|
+
defaultValue(value: unknown): this;
|
|
36
|
+
/**
|
|
37
|
+
* Mark as primary key.
|
|
38
|
+
*/
|
|
39
|
+
primaryKey(): this;
|
|
40
|
+
/**
|
|
41
|
+
* Enable auto-increment (for integer types).
|
|
42
|
+
*/
|
|
43
|
+
autoIncrement(): this;
|
|
44
|
+
/**
|
|
45
|
+
* Add a unique constraint.
|
|
46
|
+
*/
|
|
47
|
+
unique(): this;
|
|
48
|
+
/**
|
|
49
|
+
* Add a comment to the column.
|
|
50
|
+
*/
|
|
51
|
+
comment(text: string): this;
|
|
52
|
+
/**
|
|
53
|
+
* Add an index on this column.
|
|
54
|
+
* @param name - Optional index name. If true, auto-generates name.
|
|
55
|
+
*/
|
|
56
|
+
index(name?: string): this;
|
|
57
|
+
/**
|
|
58
|
+
* Set as unsigned (MySQL/MariaDB).
|
|
59
|
+
*/
|
|
60
|
+
unsigned(): this;
|
|
61
|
+
/**
|
|
62
|
+
* Add a foreign key reference.
|
|
63
|
+
* Returns a ForeignKeyBuilder for additional options.
|
|
64
|
+
*/
|
|
65
|
+
references(table: string, column?: string): IForeignKeyBuilder;
|
|
66
|
+
/**
|
|
67
|
+
* Set ON DELETE action for foreign key.
|
|
68
|
+
*/
|
|
69
|
+
onDelete(action: ForeignKeyAction): this;
|
|
70
|
+
/**
|
|
71
|
+
* Set ON UPDATE action for foreign key.
|
|
72
|
+
*/
|
|
73
|
+
onUpdate(action: ForeignKeyAction): this;
|
|
74
|
+
/**
|
|
75
|
+
* Build and return the column definition.
|
|
76
|
+
*/
|
|
77
|
+
build(): FullColumnDefinition;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=columnBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnBuilder.d.ts","sourceRoot":"","sources":["../../../src/migrate/builder/columnBuilder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,aAAc,YAAW,cAAc,EAAE,kBAAkB;IACtE,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAuB;gBAE/B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,iBAAsB;IA0B9E;;OAEG;IACH,QAAQ,CAAC,KAAK,UAAO,GAAG,IAAI;IAK5B;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKlC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,aAAa,IAAI,IAAI;IAKrB;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAO,GAAG,kBAAkB;IAU5D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOxC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOxC;;OAEG;IACH,KAAK,IAAI,oBAAoB;CAc9B"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column Builder
|
|
3
|
+
*
|
|
4
|
+
* Fluent API for defining columns in migrations.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Builder for column definitions with a fluent API.
|
|
8
|
+
* Columns are NOT NULL by default (safer).
|
|
9
|
+
*/
|
|
10
|
+
export class ColumnBuilder {
|
|
11
|
+
_name;
|
|
12
|
+
_type;
|
|
13
|
+
_nullable;
|
|
14
|
+
_defaultValue;
|
|
15
|
+
_primaryKey;
|
|
16
|
+
_autoIncrement;
|
|
17
|
+
_unique;
|
|
18
|
+
_comment;
|
|
19
|
+
_index;
|
|
20
|
+
_foreignKey;
|
|
21
|
+
constructor(name, type, options = {}) {
|
|
22
|
+
this._name = name;
|
|
23
|
+
this._type = type;
|
|
24
|
+
// Apply options with defaults (non-nullable by default)
|
|
25
|
+
this._nullable = options.nullable ?? false;
|
|
26
|
+
this._unique = options.unique ?? false;
|
|
27
|
+
this._primaryKey = options.primaryKey ?? false;
|
|
28
|
+
this._autoIncrement = options.autoIncrement ?? false;
|
|
29
|
+
this._defaultValue = options.defaultValue;
|
|
30
|
+
this._index = options.index;
|
|
31
|
+
this._comment = options.comment;
|
|
32
|
+
if (options.unsigned !== undefined) {
|
|
33
|
+
this._type = { ...this._type, unsigned: options.unsigned };
|
|
34
|
+
}
|
|
35
|
+
// Handle inline references option
|
|
36
|
+
if (options.references) {
|
|
37
|
+
this._foreignKey = {
|
|
38
|
+
table: options.references.table,
|
|
39
|
+
columns: [options.references.column ?? 'id'],
|
|
40
|
+
onDelete: options.references.onDelete ?? 'NO ACTION',
|
|
41
|
+
onUpdate: options.references.onUpdate ?? 'NO ACTION',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Make the column nullable or not nullable.
|
|
47
|
+
*/
|
|
48
|
+
nullable(value = true) {
|
|
49
|
+
this._nullable = value;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Make the column NOT NULL.
|
|
54
|
+
*/
|
|
55
|
+
notNullable() {
|
|
56
|
+
this._nullable = false;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Set a default value for the column.
|
|
61
|
+
*/
|
|
62
|
+
defaultValue(value) {
|
|
63
|
+
this._defaultValue = value;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mark as primary key.
|
|
68
|
+
*/
|
|
69
|
+
primaryKey() {
|
|
70
|
+
this._primaryKey = true;
|
|
71
|
+
this._nullable = false;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Enable auto-increment (for integer types).
|
|
76
|
+
*/
|
|
77
|
+
autoIncrement() {
|
|
78
|
+
this._autoIncrement = true;
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Add a unique constraint.
|
|
83
|
+
*/
|
|
84
|
+
unique() {
|
|
85
|
+
this._unique = true;
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Add a comment to the column.
|
|
90
|
+
*/
|
|
91
|
+
comment(text) {
|
|
92
|
+
this._comment = text;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Add an index on this column.
|
|
97
|
+
* @param name - Optional index name. If true, auto-generates name.
|
|
98
|
+
*/
|
|
99
|
+
index(name) {
|
|
100
|
+
this._index = name ?? true;
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Set as unsigned (MySQL/MariaDB).
|
|
105
|
+
*/
|
|
106
|
+
unsigned() {
|
|
107
|
+
this._type = { ...this._type, unsigned: true };
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Add a foreign key reference.
|
|
112
|
+
* Returns a ForeignKeyBuilder for additional options.
|
|
113
|
+
*/
|
|
114
|
+
references(table, column = 'id') {
|
|
115
|
+
this._foreignKey = {
|
|
116
|
+
table,
|
|
117
|
+
columns: [column],
|
|
118
|
+
onDelete: 'NO ACTION',
|
|
119
|
+
onUpdate: 'NO ACTION',
|
|
120
|
+
};
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Set ON DELETE action for foreign key.
|
|
125
|
+
*/
|
|
126
|
+
onDelete(action) {
|
|
127
|
+
if (this._foreignKey) {
|
|
128
|
+
this._foreignKey.onDelete = action;
|
|
129
|
+
}
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Set ON UPDATE action for foreign key.
|
|
134
|
+
*/
|
|
135
|
+
onUpdate(action) {
|
|
136
|
+
if (this._foreignKey) {
|
|
137
|
+
this._foreignKey.onUpdate = action;
|
|
138
|
+
}
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Build and return the column definition.
|
|
143
|
+
*/
|
|
144
|
+
build() {
|
|
145
|
+
return {
|
|
146
|
+
name: this._name,
|
|
147
|
+
type: this._type,
|
|
148
|
+
nullable: this._nullable,
|
|
149
|
+
defaultValue: this._defaultValue,
|
|
150
|
+
primaryKey: this._primaryKey,
|
|
151
|
+
autoIncrement: this._autoIncrement,
|
|
152
|
+
unique: this._unique,
|
|
153
|
+
comment: this._comment,
|
|
154
|
+
index: this._index,
|
|
155
|
+
foreignKey: this._foreignKey,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=columnBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnBuilder.js","sourceRoot":"","sources":["../../../src/migrate/builder/columnBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Expressions
|
|
3
|
+
*
|
|
4
|
+
* Type-safe SQL expressions for default values and other uses.
|
|
5
|
+
* Provides a `t` helper with common expressions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Represents a raw SQL expression (not a literal value).
|
|
9
|
+
*/
|
|
10
|
+
export declare class SqlExpression {
|
|
11
|
+
readonly sql: string;
|
|
12
|
+
constructor(sql: string);
|
|
13
|
+
toString(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is a SQL expression.
|
|
16
|
+
*/
|
|
17
|
+
static isExpression(value: unknown): value is SqlExpression;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Helper object for common SQL expressions.
|
|
21
|
+
* Use in migrations: `table.timestamp('createdAt').defaultValue(t.now())`
|
|
22
|
+
*/
|
|
23
|
+
export declare const t: {
|
|
24
|
+
/**
|
|
25
|
+
* Current timestamp (NOW() or CURRENT_TIMESTAMP depending on dialect).
|
|
26
|
+
*/
|
|
27
|
+
now(): SqlExpression;
|
|
28
|
+
/**
|
|
29
|
+
* Current date (CURRENT_DATE).
|
|
30
|
+
*/
|
|
31
|
+
currentDate(): SqlExpression;
|
|
32
|
+
/**
|
|
33
|
+
* Current time (CURRENT_TIME).
|
|
34
|
+
*/
|
|
35
|
+
currentTime(): SqlExpression;
|
|
36
|
+
/**
|
|
37
|
+
* NULL value.
|
|
38
|
+
*/
|
|
39
|
+
null(): SqlExpression;
|
|
40
|
+
/**
|
|
41
|
+
* Boolean true.
|
|
42
|
+
*/
|
|
43
|
+
true(): SqlExpression;
|
|
44
|
+
/**
|
|
45
|
+
* Boolean false.
|
|
46
|
+
*/
|
|
47
|
+
false(): SqlExpression;
|
|
48
|
+
/**
|
|
49
|
+
* Generate UUID (Postgres: gen_random_uuid(), MySQL: UUID()).
|
|
50
|
+
*/
|
|
51
|
+
uuid(): SqlExpression;
|
|
52
|
+
/**
|
|
53
|
+
* Auto-generate UUID for MySQL.
|
|
54
|
+
*/
|
|
55
|
+
mysqlUuid(): SqlExpression;
|
|
56
|
+
/**
|
|
57
|
+
* Raw SQL expression.
|
|
58
|
+
* Use for custom expressions not covered by helpers.
|
|
59
|
+
*/
|
|
60
|
+
raw(sql: string): SqlExpression;
|
|
61
|
+
/**
|
|
62
|
+
* String literal with proper escaping.
|
|
63
|
+
*/
|
|
64
|
+
literal(value: string): SqlExpression;
|
|
65
|
+
/**
|
|
66
|
+
* Numeric literal.
|
|
67
|
+
*/
|
|
68
|
+
number(value: number): SqlExpression;
|
|
69
|
+
/**
|
|
70
|
+
* Empty JSON object.
|
|
71
|
+
*/
|
|
72
|
+
emptyObject(): SqlExpression;
|
|
73
|
+
/**
|
|
74
|
+
* Empty JSON array.
|
|
75
|
+
*/
|
|
76
|
+
emptyArray(): SqlExpression;
|
|
77
|
+
/**
|
|
78
|
+
* MySQL: ON UPDATE CURRENT_TIMESTAMP.
|
|
79
|
+
*/
|
|
80
|
+
onUpdateNow(): SqlExpression;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Format a default value for SQL.
|
|
84
|
+
* Handles SqlExpression vs literal values.
|
|
85
|
+
*/
|
|
86
|
+
export declare function formatDefaultValue(value: unknown): string;
|
|
87
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/migrate/builder/expressions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,aAAa;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAEhC,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa;CAG5D;AAED;;;GAGG;AACH,eAAO,MAAM,CAAC;IACZ;;OAEG;WACI,aAAa;IAIpB;;OAEG;mBACY,aAAa;IAI5B;;OAEG;mBACY,aAAa;IAI5B;;OAEG;YACK,aAAa;IAIrB;;OAEG;YACK,aAAa;IAIrB;;OAEG;aACM,aAAa;IAItB;;OAEG;YACK,aAAa;IAIrB;;OAEG;iBACU,aAAa;IAI1B;;;OAGG;aACM,MAAM,GAAG,aAAa;IAI/B;;OAEG;mBACY,MAAM,GAAG,aAAa;IAMrC;;OAEG;kBACW,MAAM,GAAG,aAAa;IAIpC;;OAEG;mBACY,aAAa;IAI5B;;OAEG;kBACW,aAAa;IAI3B;;OAEG;mBACY,aAAa;CAG7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkCzD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Expressions
|
|
3
|
+
*
|
|
4
|
+
* Type-safe SQL expressions for default values and other uses.
|
|
5
|
+
* Provides a `t` helper with common expressions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Represents a raw SQL expression (not a literal value).
|
|
9
|
+
*/
|
|
10
|
+
export class SqlExpression {
|
|
11
|
+
sql;
|
|
12
|
+
constructor(sql) {
|
|
13
|
+
this.sql = sql;
|
|
14
|
+
}
|
|
15
|
+
toString() {
|
|
16
|
+
return this.sql;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if a value is a SQL expression.
|
|
20
|
+
*/
|
|
21
|
+
static isExpression(value) {
|
|
22
|
+
return value instanceof SqlExpression;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Helper object for common SQL expressions.
|
|
27
|
+
* Use in migrations: `table.timestamp('createdAt').defaultValue(t.now())`
|
|
28
|
+
*/
|
|
29
|
+
export const t = {
|
|
30
|
+
/**
|
|
31
|
+
* Current timestamp (NOW() or CURRENT_TIMESTAMP depending on dialect).
|
|
32
|
+
*/
|
|
33
|
+
now() {
|
|
34
|
+
return new SqlExpression('CURRENT_TIMESTAMP');
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Current date (CURRENT_DATE).
|
|
38
|
+
*/
|
|
39
|
+
currentDate() {
|
|
40
|
+
return new SqlExpression('CURRENT_DATE');
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Current time (CURRENT_TIME).
|
|
44
|
+
*/
|
|
45
|
+
currentTime() {
|
|
46
|
+
return new SqlExpression('CURRENT_TIME');
|
|
47
|
+
},
|
|
48
|
+
/**
|
|
49
|
+
* NULL value.
|
|
50
|
+
*/
|
|
51
|
+
null() {
|
|
52
|
+
return new SqlExpression('NULL');
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Boolean true.
|
|
56
|
+
*/
|
|
57
|
+
true() {
|
|
58
|
+
return new SqlExpression('TRUE');
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* Boolean false.
|
|
62
|
+
*/
|
|
63
|
+
false() {
|
|
64
|
+
return new SqlExpression('FALSE');
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* Generate UUID (Postgres: gen_random_uuid(), MySQL: UUID()).
|
|
68
|
+
*/
|
|
69
|
+
uuid() {
|
|
70
|
+
return new SqlExpression('gen_random_uuid()');
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* Auto-generate UUID for MySQL.
|
|
74
|
+
*/
|
|
75
|
+
mysqlUuid() {
|
|
76
|
+
return new SqlExpression('UUID()');
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* Raw SQL expression.
|
|
80
|
+
* Use for custom expressions not covered by helpers.
|
|
81
|
+
*/
|
|
82
|
+
raw(sql) {
|
|
83
|
+
return new SqlExpression(sql);
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* String literal with proper escaping.
|
|
87
|
+
*/
|
|
88
|
+
literal(value) {
|
|
89
|
+
// Escape single quotes by doubling them
|
|
90
|
+
const escaped = value.replace(/'/g, "''");
|
|
91
|
+
return new SqlExpression(`'${escaped}'`);
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* Numeric literal.
|
|
95
|
+
*/
|
|
96
|
+
number(value) {
|
|
97
|
+
return new SqlExpression(String(value));
|
|
98
|
+
},
|
|
99
|
+
/**
|
|
100
|
+
* Empty JSON object.
|
|
101
|
+
*/
|
|
102
|
+
emptyObject() {
|
|
103
|
+
return new SqlExpression("'{}'::jsonb");
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Empty JSON array.
|
|
107
|
+
*/
|
|
108
|
+
emptyArray() {
|
|
109
|
+
return new SqlExpression("'[]'::jsonb");
|
|
110
|
+
},
|
|
111
|
+
/**
|
|
112
|
+
* MySQL: ON UPDATE CURRENT_TIMESTAMP.
|
|
113
|
+
*/
|
|
114
|
+
onUpdateNow() {
|
|
115
|
+
return new SqlExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP');
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Format a default value for SQL.
|
|
120
|
+
* Handles SqlExpression vs literal values.
|
|
121
|
+
*/
|
|
122
|
+
export function formatDefaultValue(value) {
|
|
123
|
+
if (value === undefined || value === null) {
|
|
124
|
+
return 'NULL';
|
|
125
|
+
}
|
|
126
|
+
if (SqlExpression.isExpression(value)) {
|
|
127
|
+
return value.sql;
|
|
128
|
+
}
|
|
129
|
+
if (typeof value === 'string') {
|
|
130
|
+
// Escape single quotes for string literals
|
|
131
|
+
const escaped = value.replace(/'/g, "''");
|
|
132
|
+
return `'${escaped}'`;
|
|
133
|
+
}
|
|
134
|
+
if (typeof value === 'number') {
|
|
135
|
+
return String(value);
|
|
136
|
+
}
|
|
137
|
+
if (typeof value === 'boolean') {
|
|
138
|
+
return value ? 'TRUE' : 'FALSE';
|
|
139
|
+
}
|
|
140
|
+
if (value instanceof Date) {
|
|
141
|
+
return `'${value.toISOString()}'`;
|
|
142
|
+
}
|
|
143
|
+
if (typeof value === 'object') {
|
|
144
|
+
// JSON value
|
|
145
|
+
const json = JSON.stringify(value).replace(/'/g, "''");
|
|
146
|
+
return `'${json}'`;
|
|
147
|
+
}
|
|
148
|
+
return String(value);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/migrate/builder/expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrate/builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Builder
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe migration operations with two modes:
|
|
5
|
+
* - OperationRecorder: Record operations only (for code generation)
|
|
6
|
+
* - MigrationBuilder: Execute DDL operations (for integration tests/runtime)
|
|
7
|
+
*/
|
|
8
|
+
import type { ForeignKeyAction } from '../../schema/types.js';
|
|
9
|
+
import type { NamingStrategy } from '../../type/namingStrategy.js';
|
|
10
|
+
import type { SqlQuerier } from '../../type/querier.js';
|
|
11
|
+
import type { AnyMigrationOperation, IAlterTableBuilder, IColumnBuilder, IMigrationBuilder, ITableBuilder } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Records migration operations without executing them.
|
|
14
|
+
* Use for migration code generation and dry-run scenarios.
|
|
15
|
+
*/
|
|
16
|
+
export declare class OperationRecorder implements IMigrationBuilder {
|
|
17
|
+
protected readonly operations: AnyMigrationOperation[];
|
|
18
|
+
createTable(name: string, callback: (table: ITableBuilder) => void): Promise<void>;
|
|
19
|
+
dropTable(name: string, options?: {
|
|
20
|
+
ifExists?: boolean;
|
|
21
|
+
cascade?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
renameTable(oldName: string, newName: string): Promise<void>;
|
|
24
|
+
alterTable(name: string, callback: (table: IAlterTableBuilder) => void): Promise<void>;
|
|
25
|
+
addColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise<void>;
|
|
26
|
+
dropColumn(tableName: string, columnName: string): Promise<void>;
|
|
27
|
+
alterColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise<void>;
|
|
28
|
+
renameColumn(tableName: string, oldName: string, newName: string): Promise<void>;
|
|
29
|
+
createIndex(tableName: string, columns: string[], options?: {
|
|
30
|
+
name?: string;
|
|
31
|
+
unique?: boolean;
|
|
32
|
+
where?: string;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
dropIndex(tableName: string, indexName: string): Promise<void>;
|
|
35
|
+
addForeignKey(tableName: string, columns: string[], target: {
|
|
36
|
+
table: string;
|
|
37
|
+
columns: string[];
|
|
38
|
+
}, options?: {
|
|
39
|
+
name?: string;
|
|
40
|
+
onDelete?: ForeignKeyAction;
|
|
41
|
+
onUpdate?: ForeignKeyAction;
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
dropForeignKey(tableName: string, constraintName: string): Promise<void>;
|
|
44
|
+
raw(sql: string): Promise<void>;
|
|
45
|
+
getOperations(): AnyMigrationOperation[];
|
|
46
|
+
recordOperationSync(operation: AnyMigrationOperation): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Options for the migration builder.
|
|
50
|
+
*/
|
|
51
|
+
export interface MigrationBuilderOptions {
|
|
52
|
+
/** Custom naming strategy for generated SQL */
|
|
53
|
+
namingStrategy?: NamingStrategy;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Executes DDL operations via a SQL querier.
|
|
57
|
+
* Use for integration tests and runtime schema management.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const builder = new MigrationBuilder(querier);
|
|
62
|
+
*
|
|
63
|
+
* await builder.createTable('users', (t) => {
|
|
64
|
+
* t.id();
|
|
65
|
+
* t.string('name');
|
|
66
|
+
* t.timestamps();
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare class MigrationBuilder extends OperationRecorder {
|
|
71
|
+
private readonly querier;
|
|
72
|
+
private readonly sqlGenerator;
|
|
73
|
+
constructor(querier: SqlQuerier, options?: MigrationBuilderOptions);
|
|
74
|
+
recordOperationSync(operation: AnyMigrationOperation): void;
|
|
75
|
+
raw(sql: string): Promise<void>;
|
|
76
|
+
createTable(name: string, callback: (table: ITableBuilder) => void): Promise<void>;
|
|
77
|
+
dropTable(name: string, options?: {
|
|
78
|
+
ifExists?: boolean;
|
|
79
|
+
cascade?: boolean;
|
|
80
|
+
}): Promise<void>;
|
|
81
|
+
renameTable(oldName: string, newName: string): Promise<void>;
|
|
82
|
+
addColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise<void>;
|
|
83
|
+
dropColumn(tableName: string, columnName: string): Promise<void>;
|
|
84
|
+
alterColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise<void>;
|
|
85
|
+
renameColumn(tableName: string, oldName: string, newName: string): Promise<void>;
|
|
86
|
+
createIndex(tableName: string, columns: string[], options?: {
|
|
87
|
+
name?: string;
|
|
88
|
+
unique?: boolean;
|
|
89
|
+
where?: string;
|
|
90
|
+
}): Promise<void>;
|
|
91
|
+
dropIndex(tableName: string, indexName: string): Promise<void>;
|
|
92
|
+
addForeignKey(tableName: string, columns: string[], target: {
|
|
93
|
+
table: string;
|
|
94
|
+
columns: string[];
|
|
95
|
+
}, options?: {
|
|
96
|
+
name?: string;
|
|
97
|
+
onDelete?: ForeignKeyAction;
|
|
98
|
+
onUpdate?: ForeignKeyAction;
|
|
99
|
+
}): Promise<void>;
|
|
100
|
+
dropForeignKey(tableName: string, constraintName: string): Promise<void>;
|
|
101
|
+
private execute;
|
|
102
|
+
private operationToSql;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create an operation recorder for dry-run (recording only).
|
|
106
|
+
* @deprecated Use `new OperationRecorder()` directly
|
|
107
|
+
*/
|
|
108
|
+
export declare function createDryRunBuilder(): OperationRecorder;
|
|
109
|
+
//# sourceMappingURL=migrationBuilder.d.ts.map
|