drizzle-kit 0.9.27 → 0.9.30
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/dev/data/column_rename/with_talbe_rename/new.js +15 -0
- package/dev/data/column_rename/with_talbe_rename/new.js.map +1 -0
- package/dev/data/column_rename/with_talbe_rename/prev.js +15 -0
- package/dev/data/column_rename/with_talbe_rename/prev.js.map +1 -0
- package/dev/data/column_rename/without_table_rename/v1/usersTable.js +15 -0
- package/dev/data/column_rename/without_table_rename/v1/usersTable.js.map +1 -0
- package/dev/data/column_rename/without_table_rename/v2/usersTable.js +15 -0
- package/dev/data/column_rename/without_table_rename/v2/usersTable.js.map +1 -0
- package/dev/data/jobs/from/from.js +22 -0
- package/dev/data/jobs/from/from.js.map +1 -0
- package/dev/data/jobs/to/to.js +23 -0
- package/dev/data/jobs/to/to.js.map +1 -0
- package/dev/data/leha/UsersTable.js +36 -0
- package/dev/data/leha/UsersTable.js.map +1 -0
- package/dev/data/leha/types.js +13 -0
- package/dev/data/leha/types.js.map +1 -0
- package/dev/data/v1/authOtpTable.js +20 -0
- package/dev/data/v1/authOtpTable.js.map +1 -0
- package/dev/data/v1/deletedTable.js +14 -0
- package/dev/data/v1/deletedTable.js.map +1 -0
- package/dev/data/v1/types.js +9 -0
- package/dev/data/v1/types.js.map +1 -0
- package/dev/data/v1/usersTable.js +18 -0
- package/dev/data/v1/usersTable.js.map +1 -0
- package/dev/data/v2/authOtpTable.js +29 -0
- package/dev/data/v2/authOtpTable.js.map +1 -0
- package/dev/data/v2/cityTable.js +15 -0
- package/dev/data/v2/cityTable.js.map +1 -0
- package/dev/data/v2/types.js +13 -0
- package/dev/data/v2/types.js.map +1 -0
- package/dev/data/v2/usersTable.js +21 -0
- package/dev/data/v2/usersTable.js.map +1 -0
- package/dev/data/v3/authOtpTable.js +27 -0
- package/dev/data/v3/authOtpTable.js.map +1 -0
- package/dev/data/v3/cityTable.js +23 -0
- package/dev/data/v3/cityTable.js.map +1 -0
- package/dev/data/v3/types.js +13 -0
- package/dev/data/v3/types.js.map +1 -0
- package/dev/data/v3/usersTable.js +22 -0
- package/dev/data/v3/usersTable.js.map +1 -0
- package/dev/data/v4/multi.js +46 -0
- package/dev/data/v4/multi.js.map +1 -0
- package/dev/diff.js +28 -0
- package/dev/diff.js.map +1 -0
- package/dev/factory.js +78 -0
- package/dev/factory.js.map +1 -0
- package/dev/fstest.js +45 -0
- package/dev/fstest.js.map +1 -0
- package/dev/index.js +16 -0
- package/dev/index.js.map +1 -0
- package/dev/prepare-snapshot.js +19 -0
- package/dev/prepare-snapshot.js.map +1 -0
- package/dev/quokka.js +90 -0
- package/dev/quokka.js.map +1 -0
- package/dev/serialiser.js +30 -0
- package/dev/serialiser.js.map +1 -0
- package/dev/simulate.js +29 -0
- package/dev/simulate.js.map +1 -0
- package/dev/test-build.js +32 -0
- package/dev/test-build.js.map +1 -0
- package/dev/testFactory.js +42 -0
- package/dev/testFactory.js.map +1 -0
- package/dev/testiko.js +57 -0
- package/dev/testiko.js.map +1 -0
- package/dev/yuup.js +36 -0
- package/dev/yuup.js.map +1 -0
- package/index.js +5819 -1503
- package/jest.config.js +7 -0
- package/jest.config.js.map +1 -0
- package/package.json +4 -3
- package/src/cli/commands/migrate.js +64 -0
- package/src/cli/commands/migrate.js.map +1 -0
- package/src/cli/components-api/index.js +205 -0
- package/src/cli/components-api/index.js.map +1 -0
- package/src/cli/enq.js +38 -0
- package/src/cli/enq.js.map +1 -0
- package/src/cli/index.js +15 -0
- package/src/cli/index.js.map +1 -0
- package/src/cli/machines/resolveColumnsMachine.js +116 -0
- package/src/cli/machines/resolveColumnsMachine.js.map +1 -0
- package/src/cli/machines/resolveTablesMachine.js +114 -0
- package/src/cli/machines/resolveTablesMachine.js.map +1 -0
- package/src/cli/utils/formatDataForTable.js +21 -0
- package/src/cli/utils/formatDataForTable.js.map +1 -0
- package/src/cli/utils/valuesForPrompts.js +38 -0
- package/src/cli/utils/valuesForPrompts.js.map +1 -0
- package/src/diff.js +28 -0
- package/src/diff.js.map +1 -0
- package/src/jsonDiffer.js +178 -0
- package/src/jsonDiffer.js.map +1 -0
- package/src/jsonStatements.js +197 -0
- package/src/jsonStatements.js.map +1 -0
- package/src/migrationPreparator.js +37 -0
- package/src/migrationPreparator.js.map +1 -0
- package/src/serializer/factory.js +113 -0
- package/src/serializer/factory.js.map +1 -0
- package/src/serializer/index.js +25 -0
- package/src/serializer/index.js.map +1 -0
- package/src/simulator.js +105 -0
- package/src/simulator.js.map +1 -0
- package/src/snapshotsDiffer.js +127 -0
- package/src/snapshotsDiffer.js.map +1 -0
- package/src/sqlgenerator.js +241 -0
- package/src/sqlgenerator.js.map +1 -0
- package/src/tests/columnsMachine.test.js +270 -0
- package/src/tests/columnsMachine.test.js.map +1 -0
- package/src/tests/tablesMachine.test.js +272 -0
- package/src/tests/tablesMachine.test.js.map +1 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const printer = typescript_1.default.createPrinter();
|
|
9
|
+
const prepareFabricFile = (folder) => {
|
|
10
|
+
const staticImports = [
|
|
11
|
+
typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(undefined, typescript_1.default.createNamespaceImport(typescript_1.default.createIdentifier('drizzle'))), typescript_1.default.createStringLiteral('drizzle-orm')),
|
|
12
|
+
typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(typescript_1.default.createIdentifier('Session'), undefined), typescript_1.default.createStringLiteral('drizzle-orm/db/session')),
|
|
13
|
+
typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(typescript_1.default.createIdentifier('MigrationSerializer'), undefined), typescript_1.default.createStringLiteral('drizzle-orm/serializer/serializer')),
|
|
14
|
+
typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(typescript_1.default.createIdentifier("Enum"), undefined), typescript_1.default.createStringLiteral("drizzle-orm/types/type")),
|
|
15
|
+
typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(undefined, typescript_1.default.createNamespaceImport(typescript_1.default.createIdentifier('pg'))), typescript_1.default.createStringLiteral('pg')),
|
|
16
|
+
];
|
|
17
|
+
const dynamicImports = [];
|
|
18
|
+
const filenames = fs_1.default.readdirSync(folder);
|
|
19
|
+
for (let i = 0; i < filenames.length; i++) {
|
|
20
|
+
const filename = filenames[i];
|
|
21
|
+
const importPath = `${folder}/${filename.split(".")[0]}`;
|
|
22
|
+
dynamicImports.push(typescript_1.default.createImportDeclaration(undefined, undefined, typescript_1.default.createImportClause(undefined, typescript_1.default.createNamespaceImport(typescript_1.default.createIdentifier(`i${i}`))), typescript_1.default.createStringLiteral(importPath)));
|
|
23
|
+
}
|
|
24
|
+
const variablesStatements = [
|
|
25
|
+
typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
26
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier("db"), undefined, typescript_1.default.createNew(typescript_1.default.createIdentifier("drizzle.DB"), undefined, [
|
|
27
|
+
typescript_1.default.createNew(typescript_1.default.createIdentifier("Session"), undefined, [typescript_1.default.createNew(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('pg'), typescript_1.default.createIdentifier('Pool')), undefined, [])]),
|
|
28
|
+
])),
|
|
29
|
+
], typescript_1.default.NodeFlags.Const)),
|
|
30
|
+
typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
31
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier("serializer"), undefined, typescript_1.default.createNew(typescript_1.default.createIdentifier("MigrationSerializer"), undefined, [])),
|
|
32
|
+
], typescript_1.default.NodeFlags.Const)),
|
|
33
|
+
];
|
|
34
|
+
const blockStatements = [];
|
|
35
|
+
// const tables: AbstractTable<any> = []
|
|
36
|
+
blockStatements.push(typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
37
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier('tables'), typescript_1.default.createArrayTypeNode(typescript_1.default.createTypeReferenceNode(typescript_1.default.createQualifiedName(typescript_1.default.createIdentifier('drizzle'), typescript_1.default.createIdentifier('AbstractTable')), [typescript_1.default.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword)])), typescript_1.default.createArrayLiteral([], false)),
|
|
38
|
+
], typescript_1.default.NodeFlags.Const)));
|
|
39
|
+
// const enums: Enum<any>[] = []
|
|
40
|
+
blockStatements.push(typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
41
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier('enums'), typescript_1.default.createArrayTypeNode(typescript_1.default.createTypeReferenceNode(typescript_1.default.createIdentifier('Enum'), [typescript_1.default.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword)])), typescript_1.default.createArrayLiteral([], false))
|
|
42
|
+
], typescript_1.default.NodeFlags.Const)));
|
|
43
|
+
for (let i = 0; i < filenames.length; i++) {
|
|
44
|
+
// const t1 = (new i1.default(db) as unknown as AbstractTable<any>);
|
|
45
|
+
// tables.push(t1)
|
|
46
|
+
// const i1values = Object.values(i1)
|
|
47
|
+
const valuesDeclaration = typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
48
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier(`i${i}values`), undefined, typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('Object'), typescript_1.default.createIdentifier('values')), undefined, [typescript_1.default.createIdentifier('i' + i)]))
|
|
49
|
+
], typescript_1.default.NodeFlags.Const));
|
|
50
|
+
blockStatements.push(valuesDeclaration);
|
|
51
|
+
// i1values.forEach((t) => {
|
|
52
|
+
// if (t instanceof Enum) {
|
|
53
|
+
// enums.push(t);
|
|
54
|
+
// return
|
|
55
|
+
// }
|
|
56
|
+
// if (typeof t === 'function' && t.prototype && t.prototype.constructor) {
|
|
57
|
+
// const instance = new t(db)
|
|
58
|
+
// if (instance instanceof AbstractTable) {
|
|
59
|
+
// tables.push(instance as unknown as AbstractTable<any>)
|
|
60
|
+
// }
|
|
61
|
+
// }
|
|
62
|
+
// });
|
|
63
|
+
const iterationWithTypeChecks = typescript_1.default.createExpressionStatement(typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(`i${i}values`), typescript_1.default.createIdentifier('forEach')), undefined, [
|
|
64
|
+
typescript_1.default.createArrowFunction(undefined, undefined, [
|
|
65
|
+
typescript_1.default.createParameter(undefined, undefined, undefined, typescript_1.default.createIdentifier('t'), undefined, undefined, undefined)
|
|
66
|
+
], undefined, typescript_1.default.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.createBlock([
|
|
67
|
+
typescript_1.default.createIf(typescript_1.default.createBinary(typescript_1.default.createIdentifier('t'), typescript_1.default.SyntaxKind.InstanceOfKeyword, typescript_1.default.createIdentifier('Enum')), typescript_1.default.createBlock([
|
|
68
|
+
typescript_1.default.createExpressionStatement(typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('enums'), typescript_1.default.createIdentifier('push')), undefined, [typescript_1.default.createIdentifier('t')])),
|
|
69
|
+
typescript_1.default.createReturn(undefined)
|
|
70
|
+
], true), undefined),
|
|
71
|
+
typescript_1.default.createIf(typescript_1.default.createBinary(typescript_1.default.createBinary(typescript_1.default.createBinary(typescript_1.default.createTypeOf(typescript_1.default.createIdentifier('t')), typescript_1.default.createToken(typescript_1.default.SyntaxKind.EqualsEqualsEqualsToken), typescript_1.default.createStringLiteral('function')), typescript_1.default.createToken(typescript_1.default.SyntaxKind.AmpersandAmpersandToken), typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('t'), typescript_1.default.createIdentifier('prototype'))), typescript_1.default.createToken(typescript_1.default.SyntaxKind.AmpersandAmpersandToken), typescript_1.default.createPropertyAccess(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('t'), typescript_1.default.createIdentifier('prototype')), typescript_1.default.createIdentifier('constructor'))), typescript_1.default.createBlock([
|
|
72
|
+
typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
73
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier('instance'), undefined, typescript_1.default.createNew(typescript_1.default.createIdentifier('t'), undefined, [typescript_1.default.createIdentifier('db')]))
|
|
74
|
+
], typescript_1.default.NodeFlags.Const)),
|
|
75
|
+
typescript_1.default.createIf(typescript_1.default.createBinary(typescript_1.default.createIdentifier('instance'), typescript_1.default.SyntaxKind.InstanceOfKeyword, typescript_1.default.createIdentifier('drizzle.AbstractTable')), typescript_1.default.createBlock([
|
|
76
|
+
typescript_1.default.createExpressionStatement(typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('tables'), typescript_1.default.createIdentifier('push')), undefined, [
|
|
77
|
+
typescript_1.default.createAsExpression(typescript_1.default.createAsExpression(typescript_1.default.createIdentifier('instance'), typescript_1.default.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)), typescript_1.default.createTypeReferenceNode(typescript_1.default.createQualifiedName(typescript_1.default.createIdentifier('drizzle'), typescript_1.default.createIdentifier('AbstractTable')), [
|
|
78
|
+
typescript_1.default.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword)
|
|
79
|
+
]))
|
|
80
|
+
]))
|
|
81
|
+
], true), undefined)
|
|
82
|
+
], true), undefined)
|
|
83
|
+
], true))
|
|
84
|
+
]));
|
|
85
|
+
blockStatements.push(iterationWithTypeChecks);
|
|
86
|
+
}
|
|
87
|
+
// return serializer.generate(tables, enums)
|
|
88
|
+
blockStatements.push(typescript_1.default.createReturn(typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier("serializer"), typescript_1.default.createIdentifier("generate")), undefined, [
|
|
89
|
+
typescript_1.default.createIdentifier("tables"),
|
|
90
|
+
typescript_1.default.createIdentifier("enums"),
|
|
91
|
+
])));
|
|
92
|
+
const funcStatement = [
|
|
93
|
+
typescript_1.default.createVariableStatement(undefined, typescript_1.default.createVariableDeclarationList([
|
|
94
|
+
typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier("testFun"), undefined, typescript_1.default.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken),
|
|
95
|
+
// function body
|
|
96
|
+
typescript_1.default.createBlock(blockStatements, true))),
|
|
97
|
+
], typescript_1.default.NodeFlags.Const)),
|
|
98
|
+
];
|
|
99
|
+
const invocationStatement = [
|
|
100
|
+
typescript_1.default.createExpressionStatement(typescript_1.default.createCall(typescript_1.default.createIdentifier("testFun"), undefined, [])),
|
|
101
|
+
];
|
|
102
|
+
const outFile = typescript_1.default.createSourceFile("outfile.ts", "", typescript_1.default.ScriptTarget.ES2015, true, typescript_1.default.ScriptKind.TS);
|
|
103
|
+
const source = [];
|
|
104
|
+
source.push(...staticImports);
|
|
105
|
+
source.push(...dynamicImports);
|
|
106
|
+
source.push(...variablesStatements);
|
|
107
|
+
source.push(...funcStatement);
|
|
108
|
+
source.push(...invocationStatement);
|
|
109
|
+
const newFile = typescript_1.default.factory.updateSourceFile(outFile, source);
|
|
110
|
+
return printer.printFile(newFile);
|
|
111
|
+
};
|
|
112
|
+
exports.default = prepareFabricFile;
|
|
113
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/serializer/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const string_decoder_1 = require("string_decoder");
|
|
8
|
+
const factory_1 = __importDefault(require("./factory"));
|
|
9
|
+
const esbuild = require("esbuild");
|
|
10
|
+
const serialize = (path) => {
|
|
11
|
+
const decoder = new string_decoder_1.StringDecoder();
|
|
12
|
+
const preparedFarbic = factory_1.default(path);
|
|
13
|
+
fs_1.default.writeFileSync("__out.ts", preparedFarbic, "utf-8");
|
|
14
|
+
const result = esbuild.buildSync({
|
|
15
|
+
entryPoints: ["__out.ts"],
|
|
16
|
+
bundle: true,
|
|
17
|
+
platform: "node",
|
|
18
|
+
write: false,
|
|
19
|
+
external: ["pg-native"],
|
|
20
|
+
});
|
|
21
|
+
fs_1.default.unlinkSync("__out.ts");
|
|
22
|
+
return eval(decoder.write(result.outputFiles[0].contents));
|
|
23
|
+
};
|
|
24
|
+
exports.default = serialize;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/serializer/index.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,mDAA+C;AAC/C,wDAA0C;AAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEnC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IACzC,MAAM,OAAO,GAAG,IAAI,8BAAa,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAE9C,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;QAC/B,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB,CAAC,CAAC;IAEH,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"}
|
package/src/simulator.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveColumns = exports.resolveTables = void 0;
|
|
4
|
+
Array.prototype.exactlyOne = function () {
|
|
5
|
+
if (this.length !== 1) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
return this[0];
|
|
9
|
+
};
|
|
10
|
+
class DryRun {
|
|
11
|
+
can(added, removed) {
|
|
12
|
+
return added.length === 0 && removed.length === 0;
|
|
13
|
+
}
|
|
14
|
+
handle(added, _) {
|
|
15
|
+
return { created: added, deleted: [], renamed: [] };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// class Fallback implements Handler {
|
|
19
|
+
// can(_: Table[], __: Table[]): boolean {
|
|
20
|
+
// return true
|
|
21
|
+
// }
|
|
22
|
+
// handle(added: Table[], _: Table[]): { created: Table[]; deleted: Table[]; renamed: { from: Table; to: Table; }[]; } {
|
|
23
|
+
// return { created: added, deleted: , renamed: [] }
|
|
24
|
+
// }
|
|
25
|
+
// }
|
|
26
|
+
class Case1 {
|
|
27
|
+
can(_, removed) {
|
|
28
|
+
return removed.length === 1 && removed[0].name === 'citiess';
|
|
29
|
+
}
|
|
30
|
+
handle(added, removed) {
|
|
31
|
+
return { created: added, deleted: removed, renamed: [] };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
class Case2 {
|
|
35
|
+
// authOtp, deleted, users -> authOtp renamed, cities added, deleted deleted
|
|
36
|
+
can(_, removed) {
|
|
37
|
+
return removed.length === 3 && removed[0].name === 'auth_otp';
|
|
38
|
+
}
|
|
39
|
+
handle(added, removed) {
|
|
40
|
+
return { created: added.slice(1), deleted: removed.slice(1), renamed: [{ from: removed[0], to: added[0] }] };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const handlers = [];
|
|
44
|
+
handlers.push(new Case1());
|
|
45
|
+
handlers.push(new Case2());
|
|
46
|
+
handlers.push(new DryRun());
|
|
47
|
+
const resolveTables = (added, removed) => {
|
|
48
|
+
const handler = handlers.filter(it => {
|
|
49
|
+
return it.can(added, removed);
|
|
50
|
+
}).exactlyOne();
|
|
51
|
+
if (!handler) {
|
|
52
|
+
console.log('added', added.map(it => it.name).join());
|
|
53
|
+
console.log('removed', removed.map(it => it.name).join());
|
|
54
|
+
throw new Error("No handler");
|
|
55
|
+
}
|
|
56
|
+
console.log(`Simluated by ${handler.constructor.name}`);
|
|
57
|
+
return handler.handle(added, removed);
|
|
58
|
+
};
|
|
59
|
+
exports.resolveTables = resolveTables;
|
|
60
|
+
class LehaColumnsHandler {
|
|
61
|
+
can(tableName, _, __) {
|
|
62
|
+
return tableName === 'users';
|
|
63
|
+
}
|
|
64
|
+
handle(tableName, added, removed) {
|
|
65
|
+
return { tableName, created: [], deleted: [], renamed: [{ from: removed[0], to: added[0] }] };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
class DryRunColumnsHandler {
|
|
69
|
+
can(tableName, _, __) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
handle(tableName, added, removed) {
|
|
73
|
+
return { tableName, created: added, deleted: removed, renamed: [] };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
class V1V2AuthOtpColumnsHandler {
|
|
77
|
+
can(tableName, _, __) {
|
|
78
|
+
return tableName === 'auth_otp';
|
|
79
|
+
}
|
|
80
|
+
handle(tableName, added, removed) {
|
|
81
|
+
const phonePrev = removed.filter((it) => it.name === 'phone')[0];
|
|
82
|
+
const phoneNew = added.filter((it) => it.name === 'phone1')[0];
|
|
83
|
+
const newAdded = added.filter((it => it.name !== 'phone1'));
|
|
84
|
+
const newRemoved = removed.filter((it => it.name !== 'phone'));
|
|
85
|
+
return { tableName, created: newAdded, deleted: newRemoved, renamed: [{ from: phonePrev, to: phoneNew }] };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const columnsHandlers = [];
|
|
89
|
+
columnsHandlers.push(new V1V2AuthOtpColumnsHandler());
|
|
90
|
+
columnsHandlers.push(new LehaColumnsHandler());
|
|
91
|
+
columnsHandlers.push(new DryRunColumnsHandler());
|
|
92
|
+
const resolveColumns = (tableName, added, removed) => {
|
|
93
|
+
const handler = columnsHandlers.filter(it => {
|
|
94
|
+
return it.can(tableName, added, removed);
|
|
95
|
+
})[0];
|
|
96
|
+
if (!handler) {
|
|
97
|
+
console.log('added', added.map(it => it.name).join());
|
|
98
|
+
console.log('removed', removed.map(it => it.name).join());
|
|
99
|
+
throw new Error("No columns handler for table: " + tableName);
|
|
100
|
+
}
|
|
101
|
+
console.log(`${tableName} columns simluated by ${handler.constructor.name}`);
|
|
102
|
+
return handler.handle(tableName, added, removed);
|
|
103
|
+
};
|
|
104
|
+
exports.resolveColumns = resolveColumns;
|
|
105
|
+
//# sourceMappingURL=simulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../src/simulator.ts"],"names":[],"mappings":";;;AAMA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG;IACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,SAAS,CAAA;KACnB;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC,CAAA;AAYD,MAAM,MAAM;IACR,GAAG,CAAC,KAAU,EAAE,OAAY;QACxB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,CAAC,KAAU,EAAE,CAAM;QACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACvD,CAAC;CACJ;AAED,sCAAsC;AACtC,8CAA8C;AAC9C,sBAAsB;AACtB,QAAQ;AACR,4HAA4H;AAC5H,4DAA4D;AAC5D,QAAQ;AACR,IAAI;AAEJ,MAAM,KAAK;IACP,GAAG,CAAC,CAAM,EAAE,OAAY;QACpB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAA;IAChE,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,OAAY;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAC5D,CAAC;CACJ;AACD,MAAM,KAAK;IACP,4EAA4E;IAC5E,GAAG,CAAC,CAAM,EAAE,OAAY;QACpB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAA;IACjE,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,OAAY;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IAChH,CAAC;CACJ;AAID,MAAM,QAAQ,GAAyB,EAAE,CAAA;AACzC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;AAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;AAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;AAEpB,MAAM,aAAa,GAAG,CAAkB,KAAU,EAAE,OAAY,EAAE,EAAE;IACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QACjC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAEf,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;KACjC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC,CAAA;AAbY,QAAA,aAAa,iBAazB;AACD,MAAM,kBAAkB;IACpB,GAAG,CAAC,SAAiB,EAAE,CAAM,EAAE,EAAO;QAClC,OAAO,SAAS,KAAK,OAAO,CAAA;IAChC,CAAC;IAED,MAAM,CACF,SAAiB,EACjB,KAAU,EACV,OAAY;QAEZ,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAA;IAC/F,CAAC;CACJ;AAED,MAAM,oBAAoB;IACtB,GAAG,CAAC,SAAiB,EAAE,CAAM,EAAE,EAAO;QAClC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,CACF,SAAiB,EACjB,KAAU,EACV,OAAY;QAEZ,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACvE,CAAC;CACJ;AAGD,MAAM,yBAAyB;IAC3B,GAAG,CAAC,SAAiB,EAAE,CAAM,EAAE,EAAO;QAClC,OAAO,SAAS,KAAK,UAAU,CAAA;IACnC,CAAC;IAED,MAAM,CACF,SAAiB,EACjB,KAAU,EACV,OAAY;QAEZ,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAA;QAE9D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;IAC9G,CAAC;CAKJ;AAED,MAAM,eAAe,GAA0B,EAAE,CAAA;AACjD,eAAe,CAAC,IAAI,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAA;AACrD,eAAe,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAA;AAC9C,eAAe,CAAC,IAAI,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;AAEzC,MAAM,cAAc,GAAG,CAAkB,SAAiB,EAAE,KAAU,EAAE,OAAY,EAAE,EAAE;IAC3F,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEL,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAAC;KACjE;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,yBAAyB,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5E,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC,CAAA;AAbY,QAAA,cAAc,kBAa1B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applySnapshotsDiff = void 0;
|
|
4
|
+
const sqlgenerator_1 = require("./sqlgenerator");
|
|
5
|
+
const jsonDiffer_1 = require("./jsonDiffer");
|
|
6
|
+
const yup_1 = require("yup");
|
|
7
|
+
const jsonStatements_1 = require("./jsonStatements");
|
|
8
|
+
const columnSchema = yup_1.object({
|
|
9
|
+
name: yup_1.string().required(),
|
|
10
|
+
type: yup_1.string().required(),
|
|
11
|
+
primaryKey: yup_1.boolean().optional(),
|
|
12
|
+
unique: yup_1.boolean().optional(),
|
|
13
|
+
defaultValue: yup_1.string().optional(),
|
|
14
|
+
notNull: yup_1.boolean().optional(),
|
|
15
|
+
references: yup_1.object({
|
|
16
|
+
table: yup_1.string().required(),
|
|
17
|
+
column: yup_1.string().required(),
|
|
18
|
+
foreignKeyName: yup_1.string().required(),
|
|
19
|
+
onDelete: yup_1.string().optional(),
|
|
20
|
+
onUpdate: yup_1.string().optional(),
|
|
21
|
+
}).optional()
|
|
22
|
+
}).noUnknown();
|
|
23
|
+
const applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver) => {
|
|
24
|
+
const diffResult = jsonDiffer_1.applyJsonDiff(json1, json2);
|
|
25
|
+
const typedResult = diffResult;
|
|
26
|
+
typedResult.addedTables.forEach(t => {
|
|
27
|
+
Object.values(t.columns).forEach(column => {
|
|
28
|
+
columnSchema.validate(column, { strict: true });
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
typedResult.deletedTables.forEach(t => {
|
|
32
|
+
Object.values(t.columns).forEach(column => {
|
|
33
|
+
columnSchema.validate(column, { strict: true });
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
typedResult.alteredTablesWithColumns.forEach(t => {
|
|
37
|
+
t.added.forEach(column => {
|
|
38
|
+
columnSchema.validate(column, { strict: true });
|
|
39
|
+
});
|
|
40
|
+
t.deleted.forEach(column => {
|
|
41
|
+
columnSchema.validate(column, { strict: true });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
const { created, deleted, renamed } = await tablesResolver({ created: typedResult.addedTables, deleted: typedResult.deletedTables });
|
|
45
|
+
const jsonStatements = [];
|
|
46
|
+
const jsonCreateTables = created.map(it => {
|
|
47
|
+
return jsonStatements_1.prepareCreateTableJson(it);
|
|
48
|
+
});
|
|
49
|
+
const jsonCreateIndexesForCreatedTables = created.map(it => {
|
|
50
|
+
return jsonStatements_1.prepareCreateIndexesJson(it.name, it.indexes);
|
|
51
|
+
}).flat();
|
|
52
|
+
const jsonDropTables = deleted.map(it => {
|
|
53
|
+
return jsonStatements_1.prepareDropTableJson(it);
|
|
54
|
+
});
|
|
55
|
+
const jsonRenameTables = renamed.map(it => {
|
|
56
|
+
return jsonStatements_1.prepareRenameTableJson(it.from, it.to);
|
|
57
|
+
});
|
|
58
|
+
const renamedWithAlternations = jsonDiffer_1.diffForRenamedTables(renamed);
|
|
59
|
+
const allAltered = typedResult.alteredTablesWithColumns.concat(renamedWithAlternations);
|
|
60
|
+
const jsonRenameColumnsStatements = [];
|
|
61
|
+
const allAlteredResolved = [];
|
|
62
|
+
for (const table of allAltered) {
|
|
63
|
+
const result = await columnsResolver({ tableName: table.name, created: table.added, deleted: table.deleted });
|
|
64
|
+
// prepare oldTable and newTable
|
|
65
|
+
jsonRenameColumnsStatements.push(...jsonStatements_1.prepareRenameColumns(table.name, result.renamed));
|
|
66
|
+
const renamedColumnsAltered = result.renamed.map(it => jsonDiffer_1.diffForRenamedColumn(it.from, it.to));
|
|
67
|
+
const resolved = {
|
|
68
|
+
name: table.name,
|
|
69
|
+
deleted: result.deleted,
|
|
70
|
+
added: result.created,
|
|
71
|
+
altered: renamedColumnsAltered,
|
|
72
|
+
addedIndexes: table.addedIndexes,
|
|
73
|
+
deletedIndexes: table.deletedIndexes
|
|
74
|
+
};
|
|
75
|
+
allAlteredResolved.push(resolved);
|
|
76
|
+
}
|
|
77
|
+
const jsonAlterTables = allAlteredResolved.map(it => {
|
|
78
|
+
return jsonStatements_1.prepareAlterTableColumnsJson(it.name, it.deleted, it.added, it.altered);
|
|
79
|
+
}).flat();
|
|
80
|
+
const jsonCreateIndexesForAllAlteredTables = allAltered.map(it => {
|
|
81
|
+
return jsonStatements_1.prepareCreateIndexesJson(it.name, it.addedIndexes || {});
|
|
82
|
+
}).flat();
|
|
83
|
+
const jsonDropIndexesForAllAlteredTables = allAltered.map(it => {
|
|
84
|
+
return jsonStatements_1.prepareDropIndexesJson(it.name, it.deletedIndexes || {});
|
|
85
|
+
}).flat();
|
|
86
|
+
const jsonCreateReferencesForCreatedTables = created.map(it => {
|
|
87
|
+
return jsonStatements_1.prepareCreateReferencesJson(it.name, Object.values(it.columns));
|
|
88
|
+
}).flat();
|
|
89
|
+
const jsonCreateReferencesForAllAlteredTables = allAltered.map(it => {
|
|
90
|
+
return jsonStatements_1.prepareCreateReferencesJson(it.name, it.added);
|
|
91
|
+
}).flat();
|
|
92
|
+
const jsonCreateReferences = jsonCreateReferencesForCreatedTables.concat(jsonCreateReferencesForAllAlteredTables);
|
|
93
|
+
// // Enums:
|
|
94
|
+
// // - создание енама ✅
|
|
95
|
+
// // - переименование енама (пока не делаю)⏳
|
|
96
|
+
// // - добавление вэлью к енаму ✅
|
|
97
|
+
// // - ренейм вейлью у енама (пока не делаю, это надо запрашивать опять же через слай)⏳
|
|
98
|
+
// // - удаление енама -> чекать не используется ли где-то енам и сначала ранить миграции и в самом конце удаление енама⏳
|
|
99
|
+
// // - удаление вэлью из енама -> блок ❌
|
|
100
|
+
// const enums = result.addedEnums.map(it => {
|
|
101
|
+
// return prepareCreateEnum(it.name, it.values)
|
|
102
|
+
// })
|
|
103
|
+
const createEnums = diffResult.addedEnums.map(it => {
|
|
104
|
+
return jsonStatements_1.prepareCreateEnumJson(it.name, it.values);
|
|
105
|
+
});
|
|
106
|
+
//todo: block enum rename, enum value rename and enun deletion for now
|
|
107
|
+
const jsonAlterEnumsWithAddedValues = diffResult.alteredEnums.map(it => {
|
|
108
|
+
return jsonStatements_1.prepareAddValuesToEnumJson(it.name, it.addedValues);
|
|
109
|
+
}).flat();
|
|
110
|
+
jsonStatements.push(...createEnums);
|
|
111
|
+
jsonStatements.push(...jsonAlterEnumsWithAddedValues);
|
|
112
|
+
jsonStatements.push(...jsonCreateTables);
|
|
113
|
+
jsonStatements.push(...jsonDropTables);
|
|
114
|
+
jsonStatements.push(...jsonRenameTables);
|
|
115
|
+
jsonStatements.push(...jsonRenameColumnsStatements);
|
|
116
|
+
jsonStatements.push(...jsonAlterTables);
|
|
117
|
+
jsonStatements.push(...jsonCreateReferences);
|
|
118
|
+
jsonStatements.push(...jsonCreateIndexesForCreatedTables);
|
|
119
|
+
jsonStatements.push(...jsonCreateIndexesForAllAlteredTables);
|
|
120
|
+
jsonStatements.push(...jsonDropIndexesForAllAlteredTables);
|
|
121
|
+
const sqlStatements = sqlgenerator_1.fromJson(jsonStatements);
|
|
122
|
+
return sqlStatements.join('\n');
|
|
123
|
+
};
|
|
124
|
+
exports.applySnapshotsDiff = applySnapshotsDiff;
|
|
125
|
+
// explicitely ask if tables were renamed, if yes - add those to altered tables, otherwise - deleted
|
|
126
|
+
// double check if user wants to delete particular table and warn him on data loss
|
|
127
|
+
//# sourceMappingURL=snapshotsDiffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshotsDiffer.js","sourceRoot":"","sources":["../../src/snapshotsDiffer.ts"],"names":[],"mappings":"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"}
|