drizzle-kit 0.9.25 → 0.9.29

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.
Files changed (108) hide show
  1. package/dev/data/column_rename/with_talbe_rename/new.js +15 -0
  2. package/dev/data/column_rename/with_talbe_rename/new.js.map +1 -0
  3. package/dev/data/column_rename/with_talbe_rename/prev.js +15 -0
  4. package/dev/data/column_rename/with_talbe_rename/prev.js.map +1 -0
  5. package/dev/data/column_rename/without_table_rename/v1/usersTable.js +15 -0
  6. package/dev/data/column_rename/without_table_rename/v1/usersTable.js.map +1 -0
  7. package/dev/data/column_rename/without_table_rename/v2/usersTable.js +15 -0
  8. package/dev/data/column_rename/without_table_rename/v2/usersTable.js.map +1 -0
  9. package/dev/data/jobs/from/from.js +22 -0
  10. package/dev/data/jobs/from/from.js.map +1 -0
  11. package/dev/data/jobs/to/to.js +23 -0
  12. package/dev/data/jobs/to/to.js.map +1 -0
  13. package/dev/data/leha/UsersTable.js +36 -0
  14. package/dev/data/leha/UsersTable.js.map +1 -0
  15. package/dev/data/leha/types.js +13 -0
  16. package/dev/data/leha/types.js.map +1 -0
  17. package/dev/data/v1/authOtpTable.js +20 -0
  18. package/dev/data/v1/authOtpTable.js.map +1 -0
  19. package/dev/data/v1/deletedTable.js +14 -0
  20. package/dev/data/v1/deletedTable.js.map +1 -0
  21. package/dev/data/v1/types.js +9 -0
  22. package/dev/data/v1/types.js.map +1 -0
  23. package/dev/data/v1/usersTable.js +18 -0
  24. package/dev/data/v1/usersTable.js.map +1 -0
  25. package/dev/data/v2/authOtpTable.js +29 -0
  26. package/dev/data/v2/authOtpTable.js.map +1 -0
  27. package/dev/data/v2/cityTable.js +15 -0
  28. package/dev/data/v2/cityTable.js.map +1 -0
  29. package/dev/data/v2/types.js +13 -0
  30. package/dev/data/v2/types.js.map +1 -0
  31. package/dev/data/v2/usersTable.js +21 -0
  32. package/dev/data/v2/usersTable.js.map +1 -0
  33. package/dev/data/v3/authOtpTable.js +27 -0
  34. package/dev/data/v3/authOtpTable.js.map +1 -0
  35. package/dev/data/v3/cityTable.js +23 -0
  36. package/dev/data/v3/cityTable.js.map +1 -0
  37. package/dev/data/v3/types.js +13 -0
  38. package/dev/data/v3/types.js.map +1 -0
  39. package/dev/data/v3/usersTable.js +22 -0
  40. package/dev/data/v3/usersTable.js.map +1 -0
  41. package/dev/data/v4/multi.js +46 -0
  42. package/dev/data/v4/multi.js.map +1 -0
  43. package/dev/diff.js +28 -0
  44. package/dev/diff.js.map +1 -0
  45. package/dev/factory.js +78 -0
  46. package/dev/factory.js.map +1 -0
  47. package/dev/fstest.js +45 -0
  48. package/dev/fstest.js.map +1 -0
  49. package/dev/index.js +16 -0
  50. package/dev/index.js.map +1 -0
  51. package/dev/prepare-snapshot.js +19 -0
  52. package/dev/prepare-snapshot.js.map +1 -0
  53. package/dev/quokka.js +90 -0
  54. package/dev/quokka.js.map +1 -0
  55. package/dev/serialiser.js +30 -0
  56. package/dev/serialiser.js.map +1 -0
  57. package/dev/simulate.js +29 -0
  58. package/dev/simulate.js.map +1 -0
  59. package/dev/test-build.js +32 -0
  60. package/dev/test-build.js.map +1 -0
  61. package/dev/testFactory.js +42 -0
  62. package/dev/testFactory.js.map +1 -0
  63. package/dev/testiko.js +57 -0
  64. package/dev/testiko.js.map +1 -0
  65. package/dev/yuup.js +36 -0
  66. package/dev/yuup.js.map +1 -0
  67. package/index.js +5920 -1595
  68. package/jest.config.js +7 -0
  69. package/jest.config.js.map +1 -0
  70. package/package.json +5 -19
  71. package/src/cli/commands/migrate.js +64 -0
  72. package/src/cli/commands/migrate.js.map +1 -0
  73. package/src/cli/components-api/index.js +205 -0
  74. package/src/cli/components-api/index.js.map +1 -0
  75. package/src/cli/enq.js +38 -0
  76. package/src/cli/enq.js.map +1 -0
  77. package/src/cli/index.js +15 -0
  78. package/src/cli/index.js.map +1 -0
  79. package/src/cli/machines/resolveColumnsMachine.js +116 -0
  80. package/src/cli/machines/resolveColumnsMachine.js.map +1 -0
  81. package/src/cli/machines/resolveTablesMachine.js +114 -0
  82. package/src/cli/machines/resolveTablesMachine.js.map +1 -0
  83. package/src/cli/utils/formatDataForTable.js +21 -0
  84. package/src/cli/utils/formatDataForTable.js.map +1 -0
  85. package/src/cli/utils/valuesForPrompts.js +38 -0
  86. package/src/cli/utils/valuesForPrompts.js.map +1 -0
  87. package/src/diff.js +28 -0
  88. package/src/diff.js.map +1 -0
  89. package/src/jsonDiffer.js +178 -0
  90. package/src/jsonDiffer.js.map +1 -0
  91. package/src/jsonStatements.js +197 -0
  92. package/src/jsonStatements.js.map +1 -0
  93. package/src/migrationPreparator.js +37 -0
  94. package/src/migrationPreparator.js.map +1 -0
  95. package/src/serializer/factory.js +113 -0
  96. package/src/serializer/factory.js.map +1 -0
  97. package/src/serializer/index.js +25 -0
  98. package/src/serializer/index.js.map +1 -0
  99. package/src/simulator.js +105 -0
  100. package/src/simulator.js.map +1 -0
  101. package/src/snapshotsDiffer.js +127 -0
  102. package/src/snapshotsDiffer.js.map +1 -0
  103. package/src/sqlgenerator.js +241 -0
  104. package/src/sqlgenerator.js.map +1 -0
  105. package/src/tests/columnsMachine.test.js +270 -0
  106. package/src/tests/columnsMachine.test.js.map +1 -0
  107. package/src/tests/tablesMachine.test.js +272 -0
  108. 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"}
@@ -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":"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"}
@@ -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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"}