drizzle-kit 0.9.38 → 0.9.41

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 (136) hide show
  1. package/.eslintrc +21 -0
  2. package/LICENSE +674 -0
  3. package/package.json +17 -16
  4. package/pnpm-lock.yaml +2209 -0
  5. package/readme.rst +2 -0
  6. package/src/cli/commands/migrate.ts +79 -0
  7. package/src/cli/components-api/index.ts +287 -0
  8. package/src/cli/enq.ts +41 -0
  9. package/src/cli/index.ts +14 -0
  10. package/src/cli/machines/resolveColumnsMachine.ts +173 -0
  11. package/src/cli/machines/resolveTablesMachine.ts +167 -0
  12. package/src/cli/utils/formatDataForTable.ts +29 -0
  13. package/src/cli/utils/valuesForPrompts.ts +35 -0
  14. package/src/diff.ts +37 -0
  15. package/src/jsonDiffer.js +197 -115
  16. package/src/jsonStatements.ts +482 -0
  17. package/src/migrationPreparator.ts +44 -0
  18. package/src/serializer/factory.ts +415 -0
  19. package/src/serializer/index.ts +23 -0
  20. package/src/simulator.ts +155 -0
  21. package/src/snapshotsDiffer.ts +267 -0
  22. package/src/sqlgenerator.ts +323 -0
  23. package/src/tests/columnsMachine.test.ts +338 -0
  24. package/src/tests/tablesMachine.test.ts +339 -0
  25. package/tests/alters/index.test.ts +22 -0
  26. package/tests/alters/suite1/_patch.yaml +16 -0
  27. package/tests/alters/suite1/from.ts +16 -0
  28. package/tests/alters/suite1/to.ts +15 -0
  29. package/tsconfig.json +7 -0
  30. package/dev/data/column_rename/with_talbe_rename/new.js +0 -15
  31. package/dev/data/column_rename/with_talbe_rename/new.js.map +0 -1
  32. package/dev/data/column_rename/with_talbe_rename/prev.js +0 -15
  33. package/dev/data/column_rename/with_talbe_rename/prev.js.map +0 -1
  34. package/dev/data/column_rename/without_table_rename/v1/usersTable.js +0 -15
  35. package/dev/data/column_rename/without_table_rename/v1/usersTable.js.map +0 -1
  36. package/dev/data/column_rename/without_table_rename/v2/usersTable.js +0 -15
  37. package/dev/data/column_rename/without_table_rename/v2/usersTable.js.map +0 -1
  38. package/dev/data/jobs/from/from.js +0 -22
  39. package/dev/data/jobs/from/from.js.map +0 -1
  40. package/dev/data/jobs/to/to.js +0 -23
  41. package/dev/data/jobs/to/to.js.map +0 -1
  42. package/dev/data/leha/UsersTable.js +0 -36
  43. package/dev/data/leha/UsersTable.js.map +0 -1
  44. package/dev/data/leha/types.js +0 -13
  45. package/dev/data/leha/types.js.map +0 -1
  46. package/dev/data/v1/authOtpTable.js +0 -20
  47. package/dev/data/v1/authOtpTable.js.map +0 -1
  48. package/dev/data/v1/deletedTable.js +0 -14
  49. package/dev/data/v1/deletedTable.js.map +0 -1
  50. package/dev/data/v1/types.js +0 -9
  51. package/dev/data/v1/types.js.map +0 -1
  52. package/dev/data/v1/usersTable.js +0 -18
  53. package/dev/data/v1/usersTable.js.map +0 -1
  54. package/dev/data/v2/authOtpTable.js +0 -29
  55. package/dev/data/v2/authOtpTable.js.map +0 -1
  56. package/dev/data/v2/cityTable.js +0 -15
  57. package/dev/data/v2/cityTable.js.map +0 -1
  58. package/dev/data/v2/types.js +0 -13
  59. package/dev/data/v2/types.js.map +0 -1
  60. package/dev/data/v2/usersTable.js +0 -21
  61. package/dev/data/v2/usersTable.js.map +0 -1
  62. package/dev/data/v3/authOtpTable.js +0 -27
  63. package/dev/data/v3/authOtpTable.js.map +0 -1
  64. package/dev/data/v3/cityTable.js +0 -23
  65. package/dev/data/v3/cityTable.js.map +0 -1
  66. package/dev/data/v3/types.js +0 -13
  67. package/dev/data/v3/types.js.map +0 -1
  68. package/dev/data/v3/usersTable.js +0 -22
  69. package/dev/data/v3/usersTable.js.map +0 -1
  70. package/dev/data/v4/multi.js +0 -46
  71. package/dev/data/v4/multi.js.map +0 -1
  72. package/dev/diff.js +0 -28
  73. package/dev/diff.js.map +0 -1
  74. package/dev/factory.js +0 -78
  75. package/dev/factory.js.map +0 -1
  76. package/dev/fstest.js +0 -45
  77. package/dev/fstest.js.map +0 -1
  78. package/dev/index.js +0 -16
  79. package/dev/index.js.map +0 -1
  80. package/dev/prepare-snapshot.js +0 -19
  81. package/dev/prepare-snapshot.js.map +0 -1
  82. package/dev/quokka.js +0 -90
  83. package/dev/quokka.js.map +0 -1
  84. package/dev/serialiser.js +0 -30
  85. package/dev/serialiser.js.map +0 -1
  86. package/dev/simulate.js +0 -29
  87. package/dev/simulate.js.map +0 -1
  88. package/dev/test-build.js +0 -32
  89. package/dev/test-build.js.map +0 -1
  90. package/dev/testFactory.js +0 -42
  91. package/dev/testFactory.js.map +0 -1
  92. package/dev/testiko.js +0 -57
  93. package/dev/testiko.js.map +0 -1
  94. package/dev/yuup.js +0 -36
  95. package/dev/yuup.js.map +0 -1
  96. package/index.js +0 -168169
  97. package/index.js.map +0 -7
  98. package/jest.config.js +0 -7
  99. package/jest.config.js.map +0 -1
  100. package/src/cli/commands/migrate.js +0 -64
  101. package/src/cli/commands/migrate.js.map +0 -1
  102. package/src/cli/components-api/index.js +0 -205
  103. package/src/cli/components-api/index.js.map +0 -1
  104. package/src/cli/enq.js +0 -38
  105. package/src/cli/enq.js.map +0 -1
  106. package/src/cli/index.js +0 -15
  107. package/src/cli/index.js.map +0 -1
  108. package/src/cli/machines/resolveColumnsMachine.js +0 -116
  109. package/src/cli/machines/resolveColumnsMachine.js.map +0 -1
  110. package/src/cli/machines/resolveTablesMachine.js +0 -114
  111. package/src/cli/machines/resolveTablesMachine.js.map +0 -1
  112. package/src/cli/utils/formatDataForTable.js +0 -21
  113. package/src/cli/utils/formatDataForTable.js.map +0 -1
  114. package/src/cli/utils/valuesForPrompts.js +0 -38
  115. package/src/cli/utils/valuesForPrompts.js.map +0 -1
  116. package/src/diff.js +0 -28
  117. package/src/diff.js.map +0 -1
  118. package/src/jsonDiffer.js.map +0 -1
  119. package/src/jsonStatements.js +0 -197
  120. package/src/jsonStatements.js.map +0 -1
  121. package/src/migrationPreparator.js +0 -37
  122. package/src/migrationPreparator.js.map +0 -1
  123. package/src/serializer/factory.js +0 -113
  124. package/src/serializer/factory.js.map +0 -1
  125. package/src/serializer/index.js +0 -25
  126. package/src/serializer/index.js.map +0 -1
  127. package/src/simulator.js +0 -105
  128. package/src/simulator.js.map +0 -1
  129. package/src/snapshotsDiffer.js +0 -127
  130. package/src/snapshotsDiffer.js.map +0 -1
  131. package/src/sqlgenerator.js +0 -241
  132. package/src/sqlgenerator.js.map +0 -1
  133. package/src/tests/columnsMachine.test.js +0 -270
  134. package/src/tests/columnsMachine.test.js.map +0 -1
  135. package/src/tests/tablesMachine.test.js +0 -272
  136. package/src/tests/tablesMachine.test.js.map +0 -1
@@ -1,127 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshotsDiffer.js","sourceRoot":"","sources":["../../src/snapshotsDiffer.ts"],"names":[],"mappings":"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"}
@@ -1,241 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fromJson = void 0;
4
- class Convertor {
5
- }
6
- class CreateTableConvertor extends Convertor {
7
- can(statement) {
8
- return statement.type === 'create_table';
9
- }
10
- convert(st) {
11
- const { tableName, columns } = st;
12
- let statement = '';
13
- statement += `CREATE TABLE IF NOT EXISTS ${tableName} (\n`;
14
- for (let i = 0; i < columns.length; i++) {
15
- const column = columns[i];
16
- const primaryKeyStatement = column.primaryKey ? "PRIMARY KEY" : '';
17
- const notNullStatement = column.notNull ? "NOT NULL" : "";
18
- const defaultStatement = column.defaultValue ? `DEFAULT '${column.defaultValue}'` : "";
19
- statement += '\t' + `${column.name} ${column.type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim();
20
- statement += (i === columns.length - 1 ? '' : ',') + '\n';
21
- }
22
- statement += `);`;
23
- statement += `\n`;
24
- return statement;
25
- }
26
- }
27
- class CreateTypeEnumConvertor extends Convertor {
28
- can(statement) {
29
- return statement.type === 'create_type_enum';
30
- }
31
- convert(st) {
32
- const { name, values } = st;
33
- let valuesStatement = '(';
34
- valuesStatement += values.map(it => `'${it}'`).join(', ');
35
- valuesStatement += ')';
36
- let statement = "DO $$ BEGIN";
37
- statement += "\n";
38
- statement += ` CREATE TYPE ${name} AS ENUM${valuesStatement};`;
39
- statement += "\n";
40
- statement += "EXCEPTION";
41
- statement += "\n";
42
- statement += " WHEN duplicate_object THEN null;";
43
- statement += "\n";
44
- statement += "END $$;";
45
- statement += '\n';
46
- return statement;
47
- }
48
- }
49
- class AlterTypeAddValueConvertor extends Convertor {
50
- can(statement) {
51
- return statement.type === 'alter_type_add_value';
52
- }
53
- convert(st) {
54
- const { name, value } = st;
55
- return `ALTER TYPE ${name} ADD VALUE '${value}';`;
56
- }
57
- }
58
- class DropTableConvertor extends Convertor {
59
- can(statement) {
60
- return statement.type === 'drop_table';
61
- }
62
- convert(statement) {
63
- const { tableName } = statement;
64
- return `DROP TABLE ${tableName};`;
65
- }
66
- }
67
- class RenameTableConvertor extends Convertor {
68
- can(statement) {
69
- return statement.type === 'rename_table';
70
- }
71
- convert(statement) {
72
- const { tableNameFrom, tableNameTo } = statement;
73
- return `ALTER TABLE ${tableNameFrom} RENAME TO ${tableNameTo};`;
74
- }
75
- }
76
- class AlterTableRenameColumnConvertor extends Convertor {
77
- can(statement) {
78
- return statement.type === 'alter_table_rename_column';
79
- }
80
- convert(statement) {
81
- const { tableName, oldColumnName, newColumnName } = statement;
82
- return `ALTER TABLE ${tableName} RENAME COLUMN ${oldColumnName} TO ${newColumnName};`;
83
- }
84
- }
85
- class AlterTableDropColumnConvertor extends Convertor {
86
- can(statement) {
87
- return statement.type === 'alter_table_drop_column';
88
- }
89
- convert(statement) {
90
- const { tableName, columnName } = statement;
91
- return `ALTER TABLE ${tableName} DROP COLUMN IF EXISTS ${columnName};`;
92
- }
93
- }
94
- class AlterTableAddColumnConvertor extends Convertor {
95
- can(statement) {
96
- return statement.type === 'alter_table_add_column';
97
- }
98
- convert(statement) {
99
- const { tableName, column } = statement;
100
- const { name, type, notNull } = column;
101
- const defaultValue = column.defaultValue;
102
- const defaultStatement = `${defaultValue ? `DEFAULT ${defaultValue}` : ''}`;
103
- const notNullStatement = `${notNull ? 'NOT NULL' : ''}`;
104
- return `ALTER TABLE ${tableName} ADD COLUMN ${name} ${type} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim() + ';';
105
- }
106
- }
107
- class AlterTableAlterColumnSetTypeConvertor extends Convertor {
108
- can(statement) {
109
- return statement.type === 'alter_table_alter_column_set_type';
110
- }
111
- convert(statement) {
112
- const { tableName, columnName, newDataType } = statement;
113
- return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DATA TYPE ${newDataType};`;
114
- }
115
- }
116
- class AlterTableAlterColumnSetDefaultConvertor extends Convertor {
117
- can(statement) {
118
- return statement.type === 'alter_table_alter_column_set_default';
119
- }
120
- convert(statement) {
121
- const { tableName, columnName } = statement;
122
- return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DEFAULT ${statement.newDefaultValue};`;
123
- }
124
- }
125
- class AlterTableAlterColumnDropDefaultConvertor extends Convertor {
126
- can(statement) {
127
- return statement.type === 'alter_table_alter_column_drop_default';
128
- }
129
- convert(statement) {
130
- const { tableName, columnName } = statement;
131
- return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP DEFAULT;`;
132
- }
133
- }
134
- class AlterTableAlterColumnSetNotNullConvertor extends Convertor {
135
- can(statement) {
136
- return statement.type === 'alter_table_alter_column_set_notnull';
137
- }
138
- convert(statement) {
139
- const { tableName, columnName } = statement;
140
- return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET NOT NULL;`;
141
- }
142
- }
143
- class AlterTableAlterColumnDropNotNullConvertor extends Convertor {
144
- can(statement) {
145
- return statement.type === 'alter_table_alter_column_drop_notnull';
146
- }
147
- convert(statement) {
148
- const { tableName, columnName } = statement;
149
- return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP NOT NULL;`;
150
- }
151
- }
152
- class CreateForeignKeyConvertor extends Convertor {
153
- can(statement) {
154
- return statement.type === 'create_reference';
155
- }
156
- convert(statement) {
157
- const { fromTable, toTable, fromColumn, toColumn, foreignKeyName, onDelete, onUpdate } = statement;
158
- const onDeleteStatement = onDelete || "";
159
- const onUpdateStatement = onUpdate || "";
160
- return `ALTER TABLE ${fromTable} ADD CONSTRAINT ${foreignKeyName} FOREIGN KEY (${fromColumn}) REFERENCES ${toTable}(${toColumn}) ${onDeleteStatement} ${onUpdateStatement}`.replace(/ +/g, ' ').trim() + ';';
161
- }
162
- }
163
- class CreateIndexConvertor extends Convertor {
164
- can(statement) {
165
- return statement.type === 'create_index';
166
- }
167
- convert(statement) {
168
- const { tableName, indexName, value } = statement;
169
- // since postgresql 9.5
170
- const indexPart = statement.isUnique ? 'UNIQUE INDEX' : 'INDEX';
171
- return `CREATE ${indexPart} IF NOT EXISTS ${indexName} ON ${tableName} (${value});`;
172
- }
173
- }
174
- class DropIndexConvertor extends Convertor {
175
- can(statement) {
176
- return statement.type === 'drop_index';
177
- }
178
- convert(statement) {
179
- const { indexName } = statement;
180
- return `DROP INDEX IF EXISTS ${indexName};`;
181
- }
182
- }
183
- const convertors = [];
184
- convertors.push(new CreateTableConvertor());
185
- convertors.push(new CreateTypeEnumConvertor());
186
- convertors.push(new DropTableConvertor());
187
- convertors.push(new RenameTableConvertor());
188
- convertors.push(new AlterTableRenameColumnConvertor());
189
- convertors.push(new AlterTableDropColumnConvertor());
190
- convertors.push(new AlterTableAddColumnConvertor());
191
- convertors.push(new AlterTableAlterColumnSetTypeConvertor());
192
- convertors.push(new CreateIndexConvertor());
193
- convertors.push(new DropIndexConvertor());
194
- convertors.push(new AlterTypeAddValueConvertor());
195
- convertors.push(new AlterTableAlterColumnSetNotNullConvertor());
196
- convertors.push(new AlterTableAlterColumnDropNotNullConvertor());
197
- convertors.push(new AlterTableAlterColumnSetDefaultConvertor());
198
- convertors.push(new AlterTableAlterColumnDropDefaultConvertor());
199
- convertors.push(new CreateForeignKeyConvertor());
200
- const fromJson = (statements) => {
201
- const result = statements.map(statement => {
202
- const filtered = convertors.filter(it => {
203
- return it.can(statement);
204
- });
205
- const convertor = filtered.length === 1 ? filtered[0] : undefined;
206
- if (!convertor) {
207
- console.log('no convertor:', statement.type);
208
- return 'dry run';
209
- }
210
- return convertor.convert(statement);
211
- });
212
- return result;
213
- };
214
- exports.fromJson = fromJson;
215
- https: //blog.yo1.dog/updating-enum-values-in-postgresql-the-safe-and-easy-way/
216
-
217
- // test case for enum altering
218
- `
219
- create table users (
220
- id int,
221
- name character varying(128)
222
- );
223
-
224
- create type venum as enum('one', 'two', 'three');
225
- alter table users add column typed venum;
226
-
227
- insert into users(id, name, typed) values (1, 'name1', 'one');
228
- insert into users(id, name, typed) values (2, 'name2', 'two');
229
- insert into users(id, name, typed) values (3, 'name3', 'three');
230
-
231
- alter type venum rename to __venum;
232
- create type venum as enum ('one', 'two', 'three', 'four', 'five');
233
-
234
- ALTER TABLE users ALTER COLUMN typed TYPE venum USING typed::text::venum;
235
-
236
- insert into users(id, name, typed) values (4, 'name4', 'four');
237
- insert into users(id, name, typed) values (5, 'name5', 'five');
238
-
239
- drop type __venum;
240
- `;
241
- //# sourceMappingURL=sqlgenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlgenerator.js","sourceRoot":"","sources":["../../src/sqlgenerator.ts"],"names":[],"mappings":"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"}
@@ -1,270 +0,0 @@
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 resolveColumnsMachine_1 = __importDefault(require("../cli/machines/resolveColumnsMachine"));
7
- const xstate_1 = require("xstate");
8
- test('Dry run, empty data', () => {
9
- const resolveTablesMachine = resolveColumnsMachine_1.default({ name: 'Test', deleted: [], added: [] });
10
- const service = xstate_1.interpret(resolveTablesMachine).start();
11
- service.subscribe((state) => {
12
- const { created, renamed, deleted, } = state.context;
13
- if (state.changed && state.matches('done')) {
14
- expect({
15
- created,
16
- renamed,
17
- deleted,
18
- }).toStrictEqual({
19
- created: [],
20
- renamed: [],
21
- deleted: [],
22
- });
23
- service.stop();
24
- }
25
- });
26
- });
27
- test('Dry run, empty missing', () => {
28
- const resolveTablesMachine = resolveColumnsMachine_1.default({ name: 'Test', deleted: [], added: [{ name: 'new1' }, { name: 'new2' }] });
29
- const service = xstate_1.interpret(resolveTablesMachine).start();
30
- service.subscribe((state) => {
31
- const { created, renamed, deleted, } = state.context;
32
- if (state.changed && state.matches('done')) {
33
- expect({
34
- created,
35
- renamed,
36
- deleted,
37
- }).toStrictEqual({
38
- created: [{ name: 'new1' }, { name: 'new2' }],
39
- renamed: [],
40
- deleted: [],
41
- });
42
- service.stop();
43
- }
44
- });
45
- });
46
- test('Dry run, empty new', () => {
47
- const resolveTablesMachine = resolveColumnsMachine_1.default({ name: 'Test', deleted: [{ name: 'missing1' }, { name: 'missing2' }], added: [] });
48
- const service = xstate_1.interpret(resolveTablesMachine).start();
49
- service.subscribe((state) => {
50
- const { created, renamed, deleted, } = state.context;
51
- if (state.changed && state.matches('done')) {
52
- expect({
53
- created,
54
- renamed,
55
- deleted,
56
- }).toStrictEqual({
57
- created: [],
58
- renamed: [],
59
- deleted: [{ name: 'missing1' }, { name: 'missing2' }],
60
- });
61
- service.stop();
62
- }
63
- });
64
- });
65
- test('Delete 2 columns and resolve remaining new columns', () => {
66
- const resolveTablesMachine = resolveColumnsMachine_1.default({
67
- name: 'Test',
68
- deleted: [
69
- { name: 'missing1' },
70
- { name: 'missing2' }
71
- ],
72
- added: [{ name: 'new1' }, { name: 'new2' }]
73
- });
74
- const service = xstate_1.interpret(resolveTablesMachine).start();
75
- service.subscribe((state) => {
76
- const { created, renamed, deleted, } = state.context;
77
- if (state.changed && state.matches('done')) {
78
- expect({
79
- created,
80
- renamed,
81
- deleted,
82
- }).toStrictEqual({
83
- created: [{ name: 'new1' }, { name: 'new2' }],
84
- renamed: [],
85
- deleted: [{ name: 'missing1' }, { name: 'missing2' }],
86
- });
87
- service.stop();
88
- }
89
- });
90
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
91
- service.send({ type: 'DELETED' });
92
- service.send({ type: 'CONFIRM' });
93
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
94
- service.send({ type: 'DELETED' });
95
- service.send({ type: 'CONFIRM' });
96
- });
97
- test('Rename 1 column', (done) => {
98
- const machine = resolveColumnsMachine_1.default({
99
- name: 'Table',
100
- deleted: [
101
- { name: 'from' },
102
- ],
103
- added: [
104
- { name: 'to' },
105
- ]
106
- });
107
- const service = xstate_1.interpret(machine).start();
108
- service.subscribe((state) => {
109
- const { created, renamed, deleted, } = state.context;
110
- if (state.changed && state.matches('done')) {
111
- expect({
112
- created,
113
- renamed,
114
- deleted,
115
- }).toStrictEqual({
116
- created: [],
117
- renamed: [
118
- { from: { name: 'from' }, to: { name: 'to' } },
119
- ],
120
- deleted: []
121
- });
122
- service.stop();
123
- done();
124
- }
125
- });
126
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
127
- service.send({ type: 'RENAMED' });
128
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
129
- service.send({ type: 'CONFIRM' });
130
- });
131
- test('Rename 2 columns and resolve remaining missing columns', () => {
132
- const resolveTablesMachine = resolveColumnsMachine_1.default({
133
- name: 'Test',
134
- deleted: [
135
- { name: 'missing1' },
136
- { name: 'missing2' },
137
- { name: 'missing3' },
138
- ],
139
- added: [
140
- { name: 'new1' },
141
- { name: 'new2' }
142
- ]
143
- });
144
- const service = xstate_1.interpret(resolveTablesMachine).start();
145
- service.subscribe((state) => {
146
- const { created, renamed, deleted, } = state.context;
147
- if (state.changed && state.matches('done')) {
148
- expect({
149
- created,
150
- renamed,
151
- deleted,
152
- }).toStrictEqual({
153
- created: [],
154
- renamed: [
155
- { from: { name: 'missing1' }, to: { name: 'new1' } },
156
- { from: { name: 'missing2' }, to: { name: 'new2' } }
157
- ],
158
- deleted: [{ name: 'missing3' }]
159
- });
160
- service.stop();
161
- }
162
- });
163
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
164
- service.send({ type: 'RENAMED' });
165
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
166
- service.send({ type: 'CONFIRM' });
167
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
168
- service.send({ type: 'RENAMED' });
169
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
170
- service.send({ type: 'CONFIRM' });
171
- });
172
- test('Rename 2 columns and delete 2 columns', () => {
173
- const resolveTablesMachine = resolveColumnsMachine_1.default({
174
- name: 'Test',
175
- deleted: [
176
- { name: 'missing1' },
177
- { name: 'missing2' },
178
- { name: 'missing3' },
179
- { name: 'missing4' },
180
- ],
181
- added: [
182
- { name: 'new1' },
183
- { name: 'new2' },
184
- ]
185
- });
186
- const service = xstate_1.interpret(resolveTablesMachine).start();
187
- service.subscribe((state) => {
188
- const { created, renamed, deleted, } = state.context;
189
- if (state.changed && state.matches('done')) {
190
- expect({
191
- created,
192
- renamed,
193
- deleted
194
- }).toStrictEqual({
195
- created: [],
196
- renamed: [
197
- { from: { name: 'missing1' }, to: { name: 'new1' } },
198
- { from: { name: 'missing3' }, to: { name: 'new2' } }
199
- ],
200
- deleted: [{ name: 'missing2' }, { name: 'missing4' }]
201
- });
202
- service.stop();
203
- }
204
- });
205
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
206
- service.send({ type: 'RENAMED' });
207
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
208
- service.send({ type: 'CONFIRM' });
209
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
210
- service.send({ type: 'DELETED' });
211
- service.send({ type: 'CONFIRM' });
212
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
213
- service.send({ type: 'RENAMED' });
214
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
215
- service.send({ type: 'CONFIRM' });
216
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
217
- service.send({ type: 'DELETED' });
218
- service.send({ type: 'CONFIRM' });
219
- });
220
- test('Delete 2 columns, rename 2 columns and resolve remaining missing', () => {
221
- const resolveTablesMachine = resolveColumnsMachine_1.default({
222
- name: 'Test',
223
- deleted: [
224
- { name: 'missing1' },
225
- { name: 'missing2' },
226
- { name: 'missing3' },
227
- { name: 'missing4' },
228
- { name: 'missing5' },
229
- { name: 'missing6' },
230
- ],
231
- added: [
232
- { name: 'new1' },
233
- { name: 'new2' },
234
- ]
235
- });
236
- const service = xstate_1.interpret(resolveTablesMachine).start();
237
- service.subscribe((state) => {
238
- const { created, renamed, deleted, } = state.context;
239
- if (state.changed && state.matches('done')) {
240
- expect({
241
- created,
242
- renamed,
243
- deleted,
244
- }).toStrictEqual({
245
- created: [],
246
- renamed: [
247
- { from: { name: 'missing2' }, to: { name: 'new1' } },
248
- { from: { name: 'missing4' }, to: { name: 'new2' } }
249
- ],
250
- deleted: [{ name: 'missing1' }, { name: 'missing3' }, { name: 'missing5' }, { name: 'missing6' }]
251
- });
252
- service.stop();
253
- }
254
- });
255
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
256
- service.send({ type: 'DELETED' });
257
- service.send({ type: 'CONFIRM' });
258
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
259
- service.send({ type: 'RENAMED' });
260
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
261
- service.send({ type: 'CONFIRM' });
262
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
263
- service.send({ type: 'DELETED' });
264
- service.send({ type: 'CONFIRM' });
265
- service.send({ type: 'CHOICE_ITEM', itemIndex: 0 });
266
- service.send({ type: 'RENAMED' });
267
- service.send({ type: 'CHOICE_NEW_ITEM', itemIndex: 0 });
268
- service.send({ type: 'CONFIRM' });
269
- });
270
- //# sourceMappingURL=columnsMachine.test.js.map