@contember/schema-migrations 1.4.0-rc.2 → 1.4.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/modifications/columns/CreateColumnModification.d.ts +1 -0
- package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/CreateColumnModification.js +27 -15
- package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +1 -0
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +27 -13
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/src/modifications/columns/columnUtils.d.ts +9 -5
- package/dist/src/modifications/columns/columnUtils.d.ts.map +1 -1
- package/dist/src/modifications/columns/columnUtils.js +15 -15
- package/dist/src/modifications/columns/columnUtils.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/integration/createColumn.test.js +37 -2
- package/dist/tests/cases/integration/createColumn.test.js.map +1 -1
- package/dist/tests/cases/integration/updateColumnDefinition.test.js +19 -0
- package/dist/tests/cases/integration/updateColumnDefinition.test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/modifications/columns/CreateColumnModification.ts +32 -16
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +30 -14
- package/src/modifications/columns/columnUtils.ts +22 -16
- package/tests/cases/integration/createColumn.test.ts +35 -2
- package/tests/cases/integration/updateColumnDefinition.test.ts +20 -0
|
@@ -20,6 +20,7 @@ export interface CreateColumnModificationData {
|
|
|
20
20
|
field: Model.AnyColumn;
|
|
21
21
|
fillValue?: JSONValue;
|
|
22
22
|
copyValue?: string;
|
|
23
|
+
valueMigrationStrategy?: 'using' | 'update';
|
|
23
24
|
}
|
|
24
25
|
export declare const createColumnModification: import("../ModificationHandler").ModificationType<"createColumn", CreateColumnModificationData>;
|
|
25
26
|
export declare class CreateColumnDiffer implements Differ {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateColumnModification.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/CreateColumnModification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAY,aAAa,EAA6B,MAAM,4BAA4B,CAAA;AAC/F,OAAO,EAA0B,MAAM,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAM5F,qBAAa,+BAAgC,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAgC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAA3D,IAAI,EAAE,4BAA4B,EAAmB,MAAM,EAAE,MAAM;IAEzF,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"CreateColumnModification.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/CreateColumnModification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAY,aAAa,EAA6B,MAAM,4BAA4B,CAAA;AAC/F,OAAO,EAA0B,MAAM,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAM5F,qBAAa,+BAAgC,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAgC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAA3D,IAAI,EAAE,4BAA4B,EAAmB,MAAM,EAAE,MAAM;IAEzF,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IA8C1C,gBAAgB,IAAI,aAAa;IAIxC,QAAQ,CAAC,EAAE,eAAe,EAAE,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE;;;;CAS3D;AAED,MAAM,WAAW,4BAA4B;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC3C;AAGD,eAAO,MAAM,wBAAwB,iGAGnC,CAAA;AAEF,qBAAa,kBAAmB,YAAW,MAAM;IAChD,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAYxD"}
|
|
@@ -18,27 +18,39 @@ class CreateColumnModificationHandler {
|
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
const column = this.data.field;
|
|
21
|
-
const hasSeed = this.data.fillValue !== undefined || this.data.copyValue !== undefined;
|
|
22
21
|
const columnType = (0, columnUtils_1.getColumnSqlType)(column);
|
|
22
|
+
const seedExpression = (0, columnUtils_2.formatSeedExpression)({
|
|
23
|
+
model: this.schema.model,
|
|
24
|
+
entity,
|
|
25
|
+
columnType,
|
|
26
|
+
fillValue: this.data.fillValue,
|
|
27
|
+
copyValue: this.data.copyValue,
|
|
28
|
+
});
|
|
23
29
|
builder.addColumn(entity.tableName, {
|
|
24
30
|
[column.columnName]: {
|
|
25
31
|
type: columnType,
|
|
26
|
-
notNull: !column.nullable &&
|
|
32
|
+
notNull: !column.nullable && seedExpression === null,
|
|
27
33
|
sequenceGenerated: column.sequence,
|
|
28
34
|
},
|
|
29
35
|
});
|
|
30
|
-
if (
|
|
31
|
-
(
|
|
32
|
-
builder,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
if (seedExpression !== null) {
|
|
37
|
+
if (this.data.valueMigrationStrategy === 'using') {
|
|
38
|
+
builder.alterColumn(entity.tableName, column.columnName, {
|
|
39
|
+
notNull: !column.nullable ? true : undefined,
|
|
40
|
+
type: columnType,
|
|
41
|
+
using: seedExpression,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
(0, columnUtils_2.fillSeed)({
|
|
46
|
+
builder,
|
|
47
|
+
type: 'creating',
|
|
48
|
+
entity,
|
|
49
|
+
columnName: column.columnName,
|
|
50
|
+
nullable: column.nullable,
|
|
51
|
+
seedExpression,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
42
54
|
}
|
|
43
55
|
}
|
|
44
56
|
getSchemaUpdater() {
|
|
@@ -67,7 +79,7 @@ class CreateColumnDiffer {
|
|
|
67
79
|
return exports.createColumnModification.createModification({
|
|
68
80
|
entityName: updatedEntity.name,
|
|
69
81
|
field: newField,
|
|
70
|
-
...(newField.default !== undefined ? { fillValue: newField.default } : {}),
|
|
82
|
+
...(newField.default !== undefined ? { fillValue: newField.default, valueMigrationStrategy: 'using' } : {}),
|
|
71
83
|
});
|
|
72
84
|
});
|
|
73
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateColumnModification.js","sourceRoot":"","sources":["../../../../src/modifications/columns/CreateColumnModification.ts"],"names":[],"mappings":";;;AAEA,kEAA+F;AAC/F,gEAA4F;AAC5F,0DAAkD;AAClD,kDAAiD;AACjD,sDAAuD;AACvD,+
|
|
1
|
+
{"version":3,"file":"CreateColumnModification.js","sourceRoot":"","sources":["../../../../src/modifications/columns/CreateColumnModification.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ export interface UpdateColumnDefinitionModificationData {
|
|
|
25
25
|
definition: ColumnDefinitionAlter;
|
|
26
26
|
fillValue?: JSONValue;
|
|
27
27
|
copyValue?: string;
|
|
28
|
+
valueMigrationStrategy?: 'using' | 'update';
|
|
28
29
|
}
|
|
29
30
|
export declare const updateColumnDefinitionModification: import("../ModificationHandler").ModificationType<"updateColumnDefinition", UpdateColumnDefinitionModificationData>;
|
|
30
31
|
export declare class UpdateColumnDefinitionDiffer implements Differ<UpdateColumnDefinitionModificationData> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnDefinitionModification.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/UpdateColumnDefinitionModification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAA0C,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAA0B,MAAM,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5F,qBAAa,yCAA0C,YAAW,mBAAmB,CAAC,sCAAsC,CAAC;IAChH,OAAO,CAAC,QAAQ,CAAC,IAAI;IAA0C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAArE,IAAI,EAAE,sCAAsC,EAAmB,MAAM,EAAE,MAAM;IAEnG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"UpdateColumnDefinitionModification.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/UpdateColumnDefinitionModification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAA0C,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAA0B,MAAM,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5F,qBAAa,yCAA0C,YAAW,mBAAmB,CAAC,sCAAsC,CAAC;IAChH,OAAO,CAAC,QAAQ,CAAC,IAAI;IAA0C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAArE,IAAI,EAAE,sCAAsC,EAAmB,MAAM,EAAE,MAAM;IAEnG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAyE1C,gBAAgB,IAAI,aAAa;IAexC,QAAQ;;;;CAUR;AAED,KAAK,uBAAuB,GACzB,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,GAC3B;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAEF,KAAK,qBAAqB,GACvB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,GACzD;IACD,QAAQ,CAAC,EAAE,uBAAuB,CAAA;CAClC,CAAA;AAEF,MAAM,WAAW,sCAAsC;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,qBAAqB,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC3C;AAED,eAAO,MAAM,kCAAkC,qHAG7C,CAAA;AAEF,qBAAa,4BAA6B,YAAW,MAAM,CAAC,sCAAsC,CAAC;IAClG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAuBxD"}
|
|
@@ -27,29 +27,43 @@ class UpdateColumnDefinitionModificationHandler {
|
|
|
27
27
|
const hasNewSequence = !oldColumn.sequence && newColumn.sequence;
|
|
28
28
|
const hasNewType = newColumn.columnType !== oldColumn.columnType;
|
|
29
29
|
const columnType = (0, columnUtils_1.getColumnSqlType)(newColumn);
|
|
30
|
+
const hasNullableChanged = oldColumn.nullable !== newColumn.nullable;
|
|
30
31
|
const usingCast = `${(0, dbHelpers_1.wrapIdentifier)(oldColumn.columnName)}::${columnType}`;
|
|
31
|
-
const
|
|
32
|
+
const seedExpression = (0, columnUtils_2.formatSeedExpression)({
|
|
33
|
+
model: this.schema.model,
|
|
34
|
+
entity,
|
|
35
|
+
columnType,
|
|
36
|
+
fillValue: this.data.fillValue,
|
|
37
|
+
copyValue: this.data.copyValue,
|
|
38
|
+
});
|
|
39
|
+
const hasSeed = seedExpression !== null;
|
|
40
|
+
const migrateWithUsing = hasSeed && this.data.valueMigrationStrategy === 'using';
|
|
41
|
+
const migrateWithUpdate = hasSeed && this.data.valueMigrationStrategy !== 'using';
|
|
32
42
|
builder.alterColumn(entity.tableName, oldColumn.columnName, {
|
|
33
|
-
type: hasNewSequence || hasNewType ? columnType : undefined,
|
|
34
|
-
notNull:
|
|
35
|
-
using:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
type: hasNewSequence || hasNewType || migrateWithUsing ? columnType : undefined,
|
|
44
|
+
notNull: hasNullableChanged && (!migrateWithUpdate || newColumn.nullable) ? !newColumn.nullable : undefined,
|
|
45
|
+
using: (() => {
|
|
46
|
+
if (hasNewSequence) {
|
|
47
|
+
return `COALESCE(${usingCast}, nextval(PG_GET_SERIAL_SEQUENCE(${(0, database_migrations_1.escapeValue)(entity.tableName)}, ${(0, database_migrations_1.escapeValue)(oldColumn.columnName)})))`;
|
|
48
|
+
}
|
|
49
|
+
if (migrateWithUsing) {
|
|
50
|
+
return `COALESCE(${usingCast}, ${seedExpression})`;
|
|
51
|
+
}
|
|
52
|
+
if (hasNewType) {
|
|
53
|
+
return usingCast;
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
})(),
|
|
40
57
|
sequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),
|
|
41
58
|
});
|
|
42
|
-
if (
|
|
59
|
+
if (migrateWithUpdate) {
|
|
43
60
|
(0, columnUtils_2.fillSeed)({
|
|
44
61
|
builder,
|
|
45
62
|
type: 'updating',
|
|
46
|
-
model: this.schema.model,
|
|
47
63
|
entity,
|
|
48
64
|
columnName: oldColumn.columnName,
|
|
49
65
|
nullable: newColumn.nullable,
|
|
50
|
-
|
|
51
|
-
copyValue: this.data.copyValue,
|
|
52
|
-
fillValue: this.data.fillValue,
|
|
66
|
+
seedExpression,
|
|
53
67
|
});
|
|
54
68
|
}
|
|
55
69
|
const seqAlter = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnDefinitionModification.js","sourceRoot":"","sources":["../../../../src/modifications/columns/UpdateColumnDefinitionModification.ts"],"names":[],"mappings":";;;;;;AAAA,wEAA8E;AAE9E,kEAAkG;AAClG,gEAA4F;AAC5F,sEAAuC;AACvC,kDAAkD;AAClD,qDAAsD;AACtD,sDAAuD;AACvD,+
|
|
1
|
+
{"version":3,"file":"UpdateColumnDefinitionModification.js","sourceRoot":"","sources":["../../../../src/modifications/columns/UpdateColumnDefinitionModification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { JSONValue, Model } from '@contember/schema';
|
|
2
2
|
import { MigrationBuilder } from '@contember/database-migrations';
|
|
3
|
-
export declare const fillSeed: ({ builder,
|
|
4
|
-
model: Model.Schema;
|
|
3
|
+
export declare const fillSeed: ({ builder, entity, columnName, nullable, type, seedExpression }: {
|
|
5
4
|
entity: Model.Entity;
|
|
6
5
|
columnName: string;
|
|
7
|
-
columnType: string;
|
|
8
6
|
nullable: boolean;
|
|
9
7
|
builder: MigrationBuilder;
|
|
10
|
-
fillValue?: JSONValue | undefined;
|
|
11
|
-
copyValue?: string | undefined;
|
|
12
8
|
type: 'creating' | 'updating';
|
|
9
|
+
seedExpression: string;
|
|
13
10
|
}) => void;
|
|
11
|
+
export declare const formatSeedExpression: ({ model, entity, columnType, fillValue, copyValue }: {
|
|
12
|
+
model: Model.Schema;
|
|
13
|
+
entity: Model.Entity;
|
|
14
|
+
columnType: string;
|
|
15
|
+
fillValue?: JSONValue | undefined;
|
|
16
|
+
copyValue?: string | undefined;
|
|
17
|
+
}) => string | null;
|
|
14
18
|
//# sourceMappingURL=columnUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnUtils.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/columnUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"columnUtils.d.ts","sourceRoot":"","sources":["../../../../src/modifications/columns/columnUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAe,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAG9E,eAAO,MAAM,QAAQ;YACZ,MAAM,MAAM;gBACR,MAAM;cACR,OAAO;aACR,gBAAgB;UACnB,UAAU,GAAG,UAAU;oBACb,MAAM;UAgBtB,CAAA;AAGD,eAAO,MAAM,oBAAoB;WACzB,MAAM,MAAM;YACX,MAAM,MAAM;gBACR,MAAM;;;MAGf,MAAM,GAAG,IAQZ,CAAA"}
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fillSeed = void 0;
|
|
3
|
+
exports.formatSeedExpression = exports.fillSeed = void 0;
|
|
4
4
|
const dbHelpers_1 = require("../../utils/dbHelpers");
|
|
5
|
-
const exceptions_1 = require("../../exceptions");
|
|
6
5
|
const database_migrations_1 = require("@contember/database-migrations");
|
|
7
6
|
const schema_utils_1 = require("@contember/schema-utils");
|
|
8
|
-
const fillSeed = ({ builder,
|
|
7
|
+
const fillSeed = ({ builder, entity, columnName, nullable, type, seedExpression }) => {
|
|
9
8
|
const where = type === 'updating' ? ` WHERE ${(0, dbHelpers_1.wrapIdentifier)(columnName)} IS NULL` : '';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
SET ${(0, dbHelpers_1.wrapIdentifier)(columnName)} = ${(0, database_migrations_1.escapeValue)(fillValue)}${where}`);
|
|
13
|
-
}
|
|
14
|
-
else if (copyValue !== undefined) {
|
|
15
|
-
const copyFrom = (0, schema_utils_1.getColumnName)(model, entity, copyValue);
|
|
16
|
-
builder.sql(`UPDATE ${(0, dbHelpers_1.wrapIdentifier)(entity.tableName)}
|
|
17
|
-
SET ${(0, dbHelpers_1.wrapIdentifier)(columnName)} = ${(0, dbHelpers_1.wrapIdentifier)(copyFrom)}::${columnType}${where}`);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
throw new exceptions_1.ImplementationException();
|
|
21
|
-
}
|
|
9
|
+
builder.sql(`UPDATE ${(0, dbHelpers_1.wrapIdentifier)(entity.tableName)}
|
|
10
|
+
SET ${(0, dbHelpers_1.wrapIdentifier)(columnName)} = ${seedExpression}${where}`);
|
|
22
11
|
// event log uses deferred constraint triggers, we need to fire them before ALTER
|
|
23
12
|
builder.sql(`SET CONSTRAINTS ALL IMMEDIATE`);
|
|
24
13
|
builder.sql(`SET CONSTRAINTS ALL DEFERRED`);
|
|
@@ -29,4 +18,15 @@ const fillSeed = ({ builder, fillValue, copyValue, entity, columnName, nullable,
|
|
|
29
18
|
}
|
|
30
19
|
};
|
|
31
20
|
exports.fillSeed = fillSeed;
|
|
21
|
+
const formatSeedExpression = ({ model, entity, columnType, fillValue, copyValue }) => {
|
|
22
|
+
if (fillValue !== undefined) {
|
|
23
|
+
return (0, database_migrations_1.escapeValue)(fillValue);
|
|
24
|
+
}
|
|
25
|
+
else if (copyValue !== undefined) {
|
|
26
|
+
const copyFrom = (0, schema_utils_1.getColumnName)(model, entity, copyValue);
|
|
27
|
+
return `${(0, dbHelpers_1.wrapIdentifier)(copyFrom)}::${columnType}`;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
};
|
|
31
|
+
exports.formatSeedExpression = formatSeedExpression;
|
|
32
32
|
//# sourceMappingURL=columnUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnUtils.js","sourceRoot":"","sources":["../../../../src/modifications/columns/columnUtils.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;
|
|
1
|
+
{"version":3,"file":"columnUtils.js","sourceRoot":"","sources":["../../../../src/modifications/columns/columnUtils.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;AAEtD,wEAA8E;AAC9E,0DAAuD;AAEhD,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAOrF,EAAE,EAAE;IAEJ,MAAM,KAAK,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,IAAA,0BAAc,EAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IACvF,OAAO,CAAC,GAAG,CAAC,UAAU,IAAA,0BAAc,EAAC,MAAM,CAAC,SAAS,CAAC;WAC5C,IAAA,0BAAc,EAAC,UAAU,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC,CAAA;IAEnE,iFAAiF;IACjF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAE3C,IAAI,CAAC,QAAQ,EAAE;QACd,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE;YACjD,OAAO,EAAE,IAAI;SACb,CAAC,CAAA;KACF;AACF,CAAC,CAAA;AAtBY,QAAA,QAAQ,YAsBpB;AAGM,MAAM,oBAAoB,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAMrF,EAAiB,EAAE;IACnB,IAAI,SAAS,KAAK,SAAS,EAAE;QAC5B,OAAO,IAAA,iCAAW,EAAC,SAAS,CAAC,CAAA;KAC7B;SAAM,IAAI,SAAS,KAAK,SAAS,EAAE;QACnC,MAAM,QAAQ,GAAG,IAAA,4BAAa,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QACxD,OAAO,GAAG,IAAA,0BAAc,EAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAA;KACnD;IACD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAdY,QAAA,oBAAoB,wBAchC"}
|