@anthonyalayo/drizzle-kit 1.0.2 → 1.0.5

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 (172) hide show
  1. package/api.d.mts +2891 -0
  2. package/api.d.ts +2891 -0
  3. package/api.js +47534 -0
  4. package/api.mjs +47521 -0
  5. package/bin.cjs +80043 -0
  6. package/{src/index.ts → index-Z-1TKnbX.d.mts} +123 -141
  7. package/index-Z-1TKnbX.d.ts +308 -0
  8. package/index.d.mts +2 -0
  9. package/index.d.ts +2 -0
  10. package/index.js +32 -0
  11. package/index.mjs +7 -0
  12. package/package.json +2 -2
  13. package/utils.js +6056 -0
  14. package/utils.mjs +6032 -0
  15. package/.gitignore +0 -25
  16. package/build.dev.ts +0 -51
  17. package/build.ts +0 -112
  18. package/imports-checker/analyze.ts +0 -78
  19. package/imports-checker/checker.ts +0 -296
  20. package/imports-checker/grammar/grammar.ohm +0 -121
  21. package/imports-checker/grammar/grammar.ohm-bundle.d.ts +0 -164
  22. package/imports-checker/grammar/grammar.ohm-bundle.js +0 -753
  23. package/imports-checker/index.ts +0 -48
  24. package/patches/difflib@0.2.4.patch +0 -31
  25. package/src/@types/utils.ts +0 -58
  26. package/src/api.ts +0 -504
  27. package/src/cli/commands/_es5.ts +0 -2
  28. package/src/cli/commands/check.ts +0 -52
  29. package/src/cli/commands/drop.ts +0 -60
  30. package/src/cli/commands/introspect.ts +0 -772
  31. package/src/cli/commands/libSqlPushUtils.ts +0 -355
  32. package/src/cli/commands/migrate.ts +0 -1526
  33. package/src/cli/commands/mysqlIntrospect.ts +0 -53
  34. package/src/cli/commands/mysqlPushUtils.ts +0 -352
  35. package/src/cli/commands/mysqlUp.ts +0 -102
  36. package/src/cli/commands/pgIntrospect.ts +0 -55
  37. package/src/cli/commands/pgPushUtils.ts +0 -269
  38. package/src/cli/commands/pgUp.ts +0 -217
  39. package/src/cli/commands/push.ts +0 -637
  40. package/src/cli/commands/singlestoreIntrospect.ts +0 -53
  41. package/src/cli/commands/singlestorePushUtils.ts +0 -456
  42. package/src/cli/commands/singlestoreUp.ts +0 -1
  43. package/src/cli/commands/sqliteIntrospect.ts +0 -96
  44. package/src/cli/commands/sqlitePushUtils.ts +0 -322
  45. package/src/cli/commands/sqliteUp.ts +0 -52
  46. package/src/cli/commands/utils.ts +0 -858
  47. package/src/cli/connections.ts +0 -914
  48. package/src/cli/index.ts +0 -48
  49. package/src/cli/schema.ts +0 -794
  50. package/src/cli/selector-ui.ts +0 -38
  51. package/src/cli/utils.ts +0 -112
  52. package/src/cli/validations/cli.ts +0 -79
  53. package/src/cli/validations/common.ts +0 -193
  54. package/src/cli/validations/libsql.ts +0 -27
  55. package/src/cli/validations/mysql.ts +0 -61
  56. package/src/cli/validations/outputs.ts +0 -91
  57. package/src/cli/validations/postgres.ts +0 -83
  58. package/src/cli/validations/singlestore.ts +0 -61
  59. package/src/cli/validations/sqlite.ts +0 -104
  60. package/src/cli/validations/studio.ts +0 -24
  61. package/src/cli/views.ts +0 -658
  62. package/src/extensions/getTablesFilterByExtensions.ts +0 -16
  63. package/src/extensions/vector.ts +0 -10
  64. package/src/global.ts +0 -61
  65. package/src/introspect-mysql.ts +0 -1030
  66. package/src/introspect-pg.ts +0 -1435
  67. package/src/introspect-singlestore.ts +0 -913
  68. package/src/introspect-sqlite.ts +0 -533
  69. package/src/jsonDiffer.js +0 -882
  70. package/src/jsonStatements.ts +0 -3590
  71. package/src/loader.mjs +0 -57
  72. package/src/migrationPreparator.ts +0 -217
  73. package/src/schemaValidator.ts +0 -23
  74. package/src/serializer/index.ts +0 -142
  75. package/src/serializer/mysqlImports.ts +0 -38
  76. package/src/serializer/mysqlSchema.ts +0 -423
  77. package/src/serializer/mysqlSerializer.ts +0 -999
  78. package/src/serializer/pgImports.ts +0 -106
  79. package/src/serializer/pgSchema.ts +0 -937
  80. package/src/serializer/pgSerializer.ts +0 -2223
  81. package/src/serializer/singlestoreImports.ts +0 -38
  82. package/src/serializer/singlestoreSchema.ts +0 -257
  83. package/src/serializer/singlestoreSerializer.ts +0 -767
  84. package/src/serializer/sqliteImports.ts +0 -41
  85. package/src/serializer/sqliteSchema.ts +0 -352
  86. package/src/serializer/sqliteSerializer.ts +0 -931
  87. package/src/serializer/studio.ts +0 -694
  88. package/src/serializer/utils.ts +0 -45
  89. package/src/simulator.ts +0 -157
  90. package/src/snapshotsDiffer.ts +0 -4398
  91. package/src/sqlgenerator.ts +0 -4212
  92. package/src/statementCombiner.ts +0 -597
  93. package/src/utils/certs.ts +0 -44
  94. package/src/utils/words.ts +0 -1333
  95. package/src/utils.ts +0 -370
  96. package/tests/bin.test.ts +0 -58
  97. package/tests/cli/d1http.config.ts +0 -12
  98. package/tests/cli/drizzle.config.ts +0 -9
  99. package/tests/cli/durable-sqlite.config.ts +0 -7
  100. package/tests/cli/expo.config.ts +0 -7
  101. package/tests/cli/postgres.config.ts +0 -13
  102. package/tests/cli/postgres2.config.ts +0 -17
  103. package/tests/cli/schema.ts +0 -1
  104. package/tests/cli/turso.config.ts +0 -10
  105. package/tests/cli-export.test.ts +0 -79
  106. package/tests/cli-generate.test.ts +0 -259
  107. package/tests/cli-migrate.test.ts +0 -103
  108. package/tests/cli-push.test.ts +0 -126
  109. package/tests/common.ts +0 -15
  110. package/tests/indexes/common.ts +0 -21
  111. package/tests/indexes/pg.test.ts +0 -245
  112. package/tests/introspect/libsql.test.ts +0 -35
  113. package/tests/introspect/mysql.test.ts +0 -319
  114. package/tests/introspect/pg.test.ts +0 -894
  115. package/tests/introspect/singlestore.test.ts +0 -275
  116. package/tests/introspect/sqlite.test.ts +0 -122
  117. package/tests/libsql-checks.test.ts +0 -308
  118. package/tests/libsql-statements.test.ts +0 -989
  119. package/tests/libsql-views.test.ts +0 -218
  120. package/tests/migrate/libsq-schema.ts +0 -6
  121. package/tests/migrate/libsql-migrate.test.ts +0 -58
  122. package/tests/migrate/migrations/0000_little_blizzard.sql +0 -4
  123. package/tests/migrate/migrations/0001_nebulous_storm.sql +0 -10
  124. package/tests/migrate/migrations/meta/0000_snapshot.json +0 -40
  125. package/tests/migrate/migrations/meta/0001_snapshot.json +0 -40
  126. package/tests/migrate/migrations/meta/_journal.json +0 -20
  127. package/tests/mysql-checks.test.ts +0 -291
  128. package/tests/mysql-generated.test.ts +0 -1290
  129. package/tests/mysql-schemas.test.ts +0 -156
  130. package/tests/mysql-views.test.ts +0 -553
  131. package/tests/mysql.test.ts +0 -863
  132. package/tests/pg-array.test.ts +0 -368
  133. package/tests/pg-checks.test.ts +0 -329
  134. package/tests/pg-columns.test.ts +0 -484
  135. package/tests/pg-domains.test.ts +0 -306
  136. package/tests/pg-enums.test.ts +0 -751
  137. package/tests/pg-generated.test.ts +0 -529
  138. package/tests/pg-identity.test.ts +0 -447
  139. package/tests/pg-schemas.test.ts +0 -105
  140. package/tests/pg-sequences.test.ts +0 -298
  141. package/tests/pg-tables.test.ts +0 -1021
  142. package/tests/pg-views.test.ts +0 -1929
  143. package/tests/push/common.ts +0 -58
  144. package/tests/push/libsql.test.ts +0 -1400
  145. package/tests/push/mysql-push.test.ts +0 -345
  146. package/tests/push/mysql.test.ts +0 -788
  147. package/tests/push/pg.test.ts +0 -4341
  148. package/tests/push/singlestore-push.test.ts +0 -894
  149. package/tests/push/singlestore.test.ts +0 -444
  150. package/tests/push/sqlite.test.ts +0 -1613
  151. package/tests/rls/pg-policy.test.ts +0 -1656
  152. package/tests/rls/pg-role.test.ts +0 -234
  153. package/tests/schemaDiffer.ts +0 -2852
  154. package/tests/singlestore-generated.test.ts +0 -1290
  155. package/tests/singlestore-schemas.test.ts +0 -155
  156. package/tests/singlestore.test.ts +0 -978
  157. package/tests/sqlite-checks.test.ts +0 -308
  158. package/tests/sqlite-columns.test.ts +0 -1049
  159. package/tests/sqlite-generated.test.ts +0 -1726
  160. package/tests/sqlite-tables.test.ts +0 -637
  161. package/tests/sqlite-views.test.ts +0 -218
  162. package/tests/statements-combiner/libsql-statements-combiner.test.ts +0 -1812
  163. package/tests/statements-combiner/singlestore-statements-combiner.test.ts +0 -882
  164. package/tests/statements-combiner/sqlite-statements-combiner.test.ts +0 -1211
  165. package/tests/test/sqlite.test.ts +0 -39
  166. package/tests/testsinglestore.ts +0 -29
  167. package/tests/validations.test.ts +0 -869
  168. package/tests/wrap-param.test.ts +0 -16
  169. package/tsconfig.build.json +0 -4
  170. package/tsconfig.cli-types.json +0 -9
  171. package/tsconfig.json +0 -28
  172. package/vitest.config.ts +0 -34
@@ -1,1211 +0,0 @@
1
- import { JsonStatement } from 'src/jsonStatements';
2
- import { SQLiteSchemaSquashed } from 'src/serializer/sqliteSchema';
3
- import { sqliteCombineStatements } from 'src/statementCombiner';
4
- import { expect, test } from 'vitest';
5
-
6
- test(`renamed column and altered this column type`, async (t) => {
7
- const statements: JsonStatement[] = [
8
- {
9
- type: 'alter_table_rename_column',
10
- tableName: 'user',
11
- oldColumnName: 'lastName',
12
- newColumnName: 'lastName123',
13
- schema: '',
14
- },
15
- {
16
- type: 'alter_table_alter_column_set_type',
17
- tableName: 'user',
18
- columnName: 'lastName123',
19
- newDataType: 'int',
20
- oldDataType: 'text',
21
- schema: '',
22
- columnDefault: undefined,
23
- columnOnUpdate: undefined,
24
- columnNotNull: false,
25
- columnAutoIncrement: false,
26
- columnPk: false,
27
- columnIsUnique: false,
28
- } as unknown as JsonStatement,
29
- ];
30
- const json1: SQLiteSchemaSquashed = {
31
- version: '6',
32
- dialect: 'sqlite',
33
- tables: {
34
- user: {
35
- name: 'user',
36
- columns: {
37
- firstName: {
38
- name: 'firstName',
39
- type: 'int',
40
- primaryKey: true,
41
- notNull: true,
42
- autoincrement: false,
43
- },
44
- lastName: {
45
- name: 'lastName',
46
- type: 'text',
47
- primaryKey: false,
48
- notNull: false,
49
- autoincrement: false,
50
- },
51
- test: {
52
- name: 'test',
53
- type: 'text',
54
- primaryKey: false,
55
- notNull: false,
56
- autoincrement: false,
57
- },
58
- },
59
- indexes: {},
60
- foreignKeys: {},
61
- compositePrimaryKeys: {},
62
- uniqueConstraints: {},
63
- checkConstraints: {},
64
- },
65
- },
66
- enums: {},
67
- views: {},
68
- };
69
- const json2: SQLiteSchemaSquashed = {
70
- version: '6',
71
- dialect: 'sqlite',
72
- tables: {
73
- user: {
74
- name: 'user',
75
- columns: {
76
- firstName: {
77
- name: 'firstName',
78
- type: 'int',
79
- primaryKey: true,
80
- notNull: true,
81
- autoincrement: false,
82
- },
83
- lastName: {
84
- name: 'lastName123',
85
- type: 'int',
86
- primaryKey: false,
87
- notNull: false,
88
- autoincrement: false,
89
- },
90
- test: {
91
- name: 'test',
92
- type: 'int',
93
- primaryKey: false,
94
- notNull: false,
95
- autoincrement: false,
96
- },
97
- },
98
- indexes: {},
99
- foreignKeys: {},
100
- compositePrimaryKeys: {},
101
- uniqueConstraints: {},
102
- checkConstraints: {},
103
- },
104
- },
105
- enums: {},
106
- views: {},
107
- };
108
-
109
- const newJsonStatements = [
110
- {
111
- type: 'recreate_table',
112
- tableName: 'user',
113
- columns: [
114
- {
115
- name: 'firstName',
116
- type: 'int',
117
- primaryKey: true,
118
- notNull: true,
119
- autoincrement: false,
120
- },
121
- {
122
- name: 'lastName123',
123
- type: 'int',
124
- primaryKey: false,
125
- notNull: false,
126
- autoincrement: false,
127
- },
128
- {
129
- name: 'test',
130
- type: 'int',
131
- primaryKey: false,
132
- notNull: false,
133
- autoincrement: false,
134
- },
135
- ],
136
- compositePKs: [],
137
- referenceData: [],
138
- uniqueConstraints: [],
139
- checkConstraints: [],
140
- },
141
- ];
142
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
143
- newJsonStatements,
144
- );
145
- });
146
-
147
- test(`renamed column and droped column "test"`, async (t) => {
148
- const statements: JsonStatement[] = [
149
- {
150
- type: 'alter_table_rename_column',
151
- tableName: 'user',
152
- oldColumnName: 'lastName',
153
- newColumnName: 'lastName123',
154
- schema: '',
155
- },
156
- {
157
- type: 'alter_table_drop_column',
158
- tableName: 'user',
159
- columnName: 'test',
160
- schema: '',
161
- },
162
- ];
163
- const json1: SQLiteSchemaSquashed = {
164
- version: '6',
165
- dialect: 'sqlite',
166
- tables: {
167
- user: {
168
- name: 'user',
169
- columns: {
170
- firstName: {
171
- name: 'firstName',
172
- type: 'int',
173
- primaryKey: true,
174
- notNull: true,
175
- autoincrement: false,
176
- },
177
- lastName: {
178
- name: 'lastName',
179
- type: 'text',
180
- primaryKey: false,
181
- notNull: false,
182
- autoincrement: false,
183
- },
184
- test: {
185
- name: 'test',
186
- type: 'text',
187
- primaryKey: false,
188
- notNull: false,
189
- autoincrement: false,
190
- },
191
- },
192
- indexes: {},
193
- foreignKeys: {},
194
- compositePrimaryKeys: {},
195
- uniqueConstraints: {},
196
- checkConstraints: {},
197
- },
198
- },
199
- enums: {},
200
- views: {},
201
- };
202
- const json2: SQLiteSchemaSquashed = {
203
- version: '6',
204
- dialect: 'sqlite',
205
- tables: {
206
- user: {
207
- name: 'user',
208
- columns: {
209
- firstName: {
210
- name: 'firstName',
211
- type: 'int',
212
- primaryKey: true,
213
- notNull: true,
214
- autoincrement: false,
215
- },
216
- lastName: {
217
- name: 'lastName123',
218
- type: 'int',
219
- primaryKey: false,
220
- notNull: false,
221
- autoincrement: false,
222
- },
223
- test: {
224
- name: 'test',
225
- type: 'int',
226
- primaryKey: false,
227
- notNull: false,
228
- autoincrement: false,
229
- },
230
- },
231
- indexes: {},
232
- foreignKeys: {},
233
- compositePrimaryKeys: {},
234
- uniqueConstraints: {},
235
- checkConstraints: {},
236
- },
237
- },
238
- enums: {},
239
- views: {},
240
- };
241
-
242
- const newJsonStatements: JsonStatement[] = [
243
- {
244
- type: 'alter_table_rename_column',
245
- tableName: 'user',
246
- oldColumnName: 'lastName',
247
- newColumnName: 'lastName123',
248
- schema: '',
249
- },
250
- {
251
- type: 'alter_table_drop_column',
252
- tableName: 'user',
253
- columnName: 'test',
254
- schema: '',
255
- },
256
- ];
257
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
258
- newJsonStatements,
259
- );
260
- });
261
-
262
- test(`droped column that is part of composite pk`, async (t) => {
263
- const statements: JsonStatement[] = [
264
- { type: 'delete_composite_pk', tableName: 'user', data: 'id,iq' },
265
- {
266
- type: 'alter_table_alter_column_set_pk',
267
- tableName: 'user',
268
- schema: '',
269
- columnName: 'id',
270
- },
271
- {
272
- type: 'alter_table_drop_column',
273
- tableName: 'user',
274
- columnName: 'iq',
275
- schema: '',
276
- },
277
- ];
278
- const json1: SQLiteSchemaSquashed = {
279
- version: '6',
280
- dialect: 'sqlite',
281
- tables: {
282
- user: {
283
- name: 'user',
284
- columns: {
285
- id: {
286
- name: 'id',
287
- type: 'int',
288
- primaryKey: false,
289
- notNull: false,
290
- autoincrement: false,
291
- },
292
- first_nam: {
293
- name: 'first_nam',
294
- type: 'text',
295
- primaryKey: false,
296
- notNull: false,
297
- autoincrement: false,
298
- },
299
- iq: {
300
- name: 'iq',
301
- type: 'int',
302
- primaryKey: false,
303
- notNull: false,
304
- autoincrement: false,
305
- },
306
- },
307
- indexes: {},
308
- foreignKeys: {},
309
- compositePrimaryKeys: {
310
- user_id_iq_pk: 'id,iq',
311
- },
312
- uniqueConstraints: {},
313
- checkConstraints: {},
314
- },
315
- },
316
- enums: {},
317
- views: {},
318
- };
319
- const json2: SQLiteSchemaSquashed = {
320
- version: '6',
321
- dialect: 'sqlite',
322
- tables: {
323
- user: {
324
- name: 'user',
325
- columns: {
326
- id: {
327
- name: 'id',
328
- type: 'int',
329
- primaryKey: true,
330
- notNull: false,
331
- autoincrement: false,
332
- },
333
- first_nam: {
334
- name: 'first_nam',
335
- type: 'text',
336
- primaryKey: false,
337
- notNull: false,
338
- autoincrement: false,
339
- },
340
- },
341
- indexes: {},
342
- foreignKeys: {},
343
- compositePrimaryKeys: {},
344
- uniqueConstraints: {},
345
- checkConstraints: {},
346
- },
347
- },
348
- enums: {},
349
- views: {},
350
- };
351
-
352
- const newJsonStatements: JsonStatement[] = [
353
- {
354
- type: 'recreate_table',
355
- tableName: 'user',
356
- columns: [
357
- {
358
- name: 'id',
359
- type: 'int',
360
- primaryKey: true,
361
- notNull: false,
362
- autoincrement: false,
363
- },
364
- {
365
- name: 'first_nam',
366
- type: 'text',
367
- primaryKey: false,
368
- notNull: false,
369
- autoincrement: false,
370
- },
371
- ],
372
- compositePKs: [],
373
- referenceData: [],
374
- uniqueConstraints: [],
375
- checkConstraints: [],
376
- },
377
- ];
378
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
379
- newJsonStatements,
380
- );
381
- });
382
-
383
- test(`drop column "ref"."name", rename column "ref"."age". dropped primary key "user"."id". Set not null to "user"."iq"`, async (t) => {
384
- const statements: JsonStatement[] = [
385
- {
386
- type: 'alter_table_rename_column',
387
- tableName: 'ref',
388
- oldColumnName: 'age',
389
- newColumnName: 'age1',
390
- schema: '',
391
- },
392
- {
393
- type: 'alter_table_alter_column_drop_pk',
394
- tableName: 'user',
395
- columnName: 'id',
396
- schema: '',
397
- },
398
- {
399
- type: 'alter_table_alter_column_drop_autoincrement',
400
- tableName: 'user',
401
- columnName: 'id',
402
- schema: '',
403
- newDataType: 'int',
404
- columnDefault: undefined,
405
- columnOnUpdate: undefined,
406
- columnNotNull: false,
407
- columnAutoIncrement: false,
408
- columnPk: false,
409
- } as unknown as JsonStatement,
410
- {
411
- type: 'alter_table_alter_column_drop_notnull',
412
- tableName: 'user',
413
- columnName: 'id',
414
- schema: '',
415
- newDataType: 'int',
416
- columnDefault: undefined,
417
- columnOnUpdate: undefined,
418
- columnNotNull: false,
419
- columnAutoIncrement: false,
420
- columnPk: false,
421
- } as unknown as JsonStatement,
422
- {
423
- type: 'alter_table_alter_column_set_notnull',
424
- tableName: 'user',
425
- columnName: 'iq',
426
- schema: '',
427
- newDataType: 'int',
428
- columnDefault: undefined,
429
- columnOnUpdate: undefined,
430
- columnNotNull: true,
431
- columnAutoIncrement: false,
432
- columnPk: false,
433
- } as unknown as JsonStatement,
434
- {
435
- type: 'alter_table_drop_column',
436
- tableName: 'ref',
437
- columnName: 'text',
438
- schema: '',
439
- },
440
- ];
441
- const json1: SQLiteSchemaSquashed = {
442
- version: '6',
443
- dialect: 'sqlite',
444
- tables: {
445
- ref: {
446
- name: 'ref',
447
- columns: {
448
- id: {
449
- name: 'id',
450
- type: 'int',
451
- primaryKey: true,
452
- notNull: true,
453
- autoincrement: true,
454
- },
455
- user_iq: {
456
- name: 'user_iq',
457
- type: 'text',
458
- primaryKey: false,
459
- notNull: false,
460
- autoincrement: false,
461
- },
462
- name: {
463
- name: 'name',
464
- type: 'text',
465
- primaryKey: false,
466
- notNull: true,
467
- autoincrement: false,
468
- },
469
- age: {
470
- name: 'age',
471
- type: 'int',
472
- primaryKey: false,
473
- notNull: true,
474
- autoincrement: false,
475
- },
476
- },
477
- indexes: {},
478
- foreignKeys: {
479
- ref_user_iq_user_iq_fk: 'ref_user_iq_user_iq_fk;ref;user_iq;user;iq;no action;no action',
480
- },
481
- compositePrimaryKeys: {},
482
- uniqueConstraints: {},
483
- checkConstraints: {},
484
- },
485
- user: {
486
- name: 'user',
487
- columns: {
488
- id: {
489
- name: 'id',
490
- type: 'int',
491
- primaryKey: true,
492
- notNull: true,
493
- autoincrement: true,
494
- },
495
- first_name: {
496
- name: 'first_name',
497
- type: 'text',
498
- primaryKey: false,
499
- notNull: false,
500
- autoincrement: false,
501
- },
502
- iq: {
503
- name: 'iq',
504
- type: 'int',
505
- primaryKey: false,
506
- notNull: false,
507
- autoincrement: false,
508
- },
509
- },
510
- indexes: {},
511
- foreignKeys: {},
512
- compositePrimaryKeys: {},
513
- uniqueConstraints: {},
514
- checkConstraints: {},
515
- },
516
- },
517
- enums: {},
518
- views: {},
519
- };
520
- const json2: SQLiteSchemaSquashed = {
521
- version: '6',
522
- dialect: 'sqlite',
523
- tables: {
524
- ref: {
525
- name: 'ref',
526
- columns: {
527
- id: {
528
- name: 'id',
529
- type: 'int',
530
- primaryKey: true,
531
- notNull: true,
532
- autoincrement: false,
533
- },
534
- user_iq: {
535
- name: 'user_iq',
536
- type: 'text',
537
- primaryKey: false,
538
- notNull: false,
539
- autoincrement: false,
540
- },
541
- age1: {
542
- name: 'age1',
543
- type: 'int',
544
- primaryKey: false,
545
- notNull: true,
546
- autoincrement: false,
547
- },
548
- },
549
- indexes: {},
550
- foreignKeys: {
551
- ref_user_iq_user_iq_fk: 'ref_user_iq_user_iq_fk;ref;user_iq;user;iq;no action;no action',
552
- },
553
- compositePrimaryKeys: {},
554
- uniqueConstraints: {},
555
- checkConstraints: {},
556
- },
557
- user: {
558
- name: 'user',
559
- columns: {
560
- id: {
561
- name: 'id',
562
- type: 'int',
563
- primaryKey: false,
564
- notNull: true,
565
- autoincrement: false,
566
- },
567
- first_name: {
568
- name: 'first_name',
569
- type: 'text',
570
- primaryKey: false,
571
- notNull: false,
572
- autoincrement: false,
573
- },
574
- iq: {
575
- name: 'iq',
576
- type: 'int',
577
- primaryKey: false,
578
- notNull: true,
579
- autoincrement: false,
580
- },
581
- },
582
- indexes: {},
583
- foreignKeys: {},
584
- compositePrimaryKeys: {},
585
- uniqueConstraints: {},
586
- checkConstraints: {},
587
- },
588
- },
589
- enums: {},
590
- views: {},
591
- };
592
-
593
- const newJsonStatements: JsonStatement[] = [
594
- {
595
- type: 'alter_table_rename_column',
596
- tableName: 'ref',
597
- oldColumnName: 'age',
598
- newColumnName: 'age1',
599
- schema: '',
600
- },
601
- {
602
- type: 'alter_table_drop_column',
603
- tableName: 'ref',
604
- columnName: 'text',
605
- schema: '',
606
- },
607
- {
608
- type: 'recreate_table',
609
- tableName: 'user',
610
- columns: [
611
- {
612
- name: 'id',
613
- type: 'int',
614
- primaryKey: false,
615
- notNull: true,
616
- autoincrement: false,
617
- },
618
- {
619
- name: 'first_name',
620
- type: 'text',
621
- primaryKey: false,
622
- notNull: false,
623
- autoincrement: false,
624
- },
625
- {
626
- name: 'iq',
627
- type: 'int',
628
- primaryKey: false,
629
- notNull: true,
630
- autoincrement: false,
631
- },
632
- ],
633
- compositePKs: [],
634
- referenceData: [],
635
- uniqueConstraints: [],
636
- checkConstraints: [],
637
- },
638
- ];
639
-
640
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
641
- newJsonStatements,
642
- );
643
- });
644
-
645
- test(`create reference on exising column (table includes unique index). expect to recreate column and recreate index`, async (t) => {
646
- const statements: JsonStatement[] = [
647
- {
648
- type: 'create_reference',
649
- tableName: 'unique',
650
- data: 'unique_ref_pk_pk_pk_fk;unique;ref_pk;pk;pk;no action;no action',
651
- schema: '',
652
- },
653
- ];
654
- const json1: SQLiteSchemaSquashed = {
655
- version: '6',
656
- dialect: 'sqlite',
657
- tables: {
658
- pk: {
659
- name: 'pk',
660
- columns: {
661
- pk: {
662
- name: 'pk',
663
- type: 'int',
664
- primaryKey: true,
665
- notNull: true,
666
- autoincrement: false,
667
- },
668
- },
669
- indexes: {},
670
- foreignKeys: {},
671
- compositePrimaryKeys: {},
672
- uniqueConstraints: {},
673
- checkConstraints: {},
674
- },
675
- unique: {
676
- name: 'unique',
677
- columns: {
678
- unique: {
679
- name: 'unique',
680
- type: 'text',
681
- primaryKey: false,
682
- notNull: false,
683
- autoincrement: false,
684
- },
685
- ref_pk: {
686
- name: 'ref_pk',
687
- type: 'int',
688
- primaryKey: false,
689
- notNull: false,
690
- autoincrement: false,
691
- },
692
- },
693
- indexes: {
694
- unique_unique_unique: 'unique_unique_unique;unique;true;',
695
- },
696
- foreignKeys: {},
697
- compositePrimaryKeys: {},
698
- uniqueConstraints: {},
699
- checkConstraints: {},
700
- },
701
- },
702
- enums: {},
703
- views: {},
704
- };
705
- const json2: SQLiteSchemaSquashed = {
706
- version: '6',
707
- dialect: 'sqlite',
708
- tables: {
709
- pk: {
710
- name: 'pk',
711
- columns: {
712
- pk: {
713
- name: 'pk',
714
- type: 'int',
715
- primaryKey: true,
716
- notNull: true,
717
- autoincrement: false,
718
- },
719
- },
720
- indexes: {},
721
- foreignKeys: {},
722
- compositePrimaryKeys: {},
723
- uniqueConstraints: {},
724
- checkConstraints: {},
725
- },
726
- unique: {
727
- name: 'unique',
728
- columns: {
729
- unique: {
730
- name: 'unique',
731
- type: 'text',
732
- primaryKey: false,
733
- notNull: false,
734
- autoincrement: false,
735
- },
736
- ref_pk: {
737
- name: 'ref_pk',
738
- type: 'int',
739
- primaryKey: false,
740
- notNull: false,
741
- autoincrement: false,
742
- },
743
- },
744
- indexes: {
745
- unique_unique_unique: 'unique_unique_unique;unique;true;',
746
- },
747
- foreignKeys: {
748
- unique_ref_pk_pk_pk_fk: 'unique_ref_pk_pk_pk_fk;unique;ref_pk;pk;pk;no action;no action',
749
- },
750
- compositePrimaryKeys: {},
751
- uniqueConstraints: {},
752
- checkConstraints: {},
753
- },
754
- },
755
- enums: {},
756
- views: {},
757
- };
758
-
759
- const newJsonStatements: JsonStatement[] = [
760
- {
761
- type: 'recreate_table',
762
- tableName: 'unique',
763
- columns: [
764
- {
765
- name: 'unique',
766
- type: 'text',
767
- primaryKey: false,
768
- notNull: false,
769
- autoincrement: false,
770
- },
771
- {
772
- name: 'ref_pk',
773
- type: 'int',
774
- primaryKey: false,
775
- notNull: false,
776
- autoincrement: false,
777
- },
778
- ],
779
- compositePKs: [],
780
- referenceData: [
781
- {
782
- name: 'unique_ref_pk_pk_pk_fk',
783
- tableFrom: 'unique',
784
- tableTo: 'pk',
785
- columnsFrom: ['ref_pk'],
786
- columnsTo: ['pk'],
787
- onDelete: 'no action',
788
- onUpdate: 'no action',
789
- },
790
- ],
791
- uniqueConstraints: [],
792
- checkConstraints: [],
793
- },
794
- {
795
- data: 'unique_unique_unique;unique;true;',
796
- internal: undefined,
797
- schema: '',
798
- tableName: 'unique',
799
- type: 'create_index',
800
- },
801
- ];
802
-
803
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
804
- newJsonStatements,
805
- );
806
- });
807
-
808
- test(`add columns. set fk`, async (t) => {
809
- const statements: JsonStatement[] = [
810
- {
811
- type: 'sqlite_alter_table_add_column',
812
- tableName: 'ref',
813
- column: {
814
- name: 'test',
815
- type: 'integer',
816
- primaryKey: false,
817
- notNull: false,
818
- autoincrement: false,
819
- },
820
- referenceData: undefined,
821
- },
822
- {
823
- type: 'sqlite_alter_table_add_column',
824
- tableName: 'ref',
825
- column: {
826
- name: 'test1',
827
- type: 'integer',
828
- primaryKey: false,
829
- notNull: false,
830
- autoincrement: false,
831
- },
832
- referenceData: undefined,
833
- },
834
- {
835
- type: 'create_reference',
836
- tableName: 'ref',
837
- data: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
838
- schema: '',
839
- columnNotNull: false,
840
- columnDefault: undefined,
841
- columnType: 'integer',
842
- },
843
- ];
844
- const json1: SQLiteSchemaSquashed = {
845
- version: '6',
846
- dialect: 'sqlite',
847
- tables: {
848
- ref: {
849
- name: 'ref',
850
- columns: {
851
- id1: {
852
- name: 'id1',
853
- type: 'text',
854
- primaryKey: false,
855
- notNull: true,
856
- autoincrement: false,
857
- },
858
- new_age: {
859
- name: 'new_age',
860
- type: 'integer',
861
- primaryKey: false,
862
- notNull: false,
863
- autoincrement: false,
864
- },
865
- },
866
- indexes: {},
867
- foreignKeys: {},
868
- compositePrimaryKeys: {},
869
- uniqueConstraints: {},
870
- checkConstraints: {},
871
- },
872
- user: {
873
- name: 'user',
874
- columns: {
875
- id1: {
876
- name: 'id1',
877
- type: 'text',
878
- primaryKey: false,
879
- notNull: true,
880
- autoincrement: false,
881
- },
882
- new_age: {
883
- name: 'new_age',
884
- type: 'integer',
885
- primaryKey: false,
886
- notNull: false,
887
- autoincrement: false,
888
- },
889
- },
890
- indexes: {},
891
- foreignKeys: {},
892
- compositePrimaryKeys: {},
893
- uniqueConstraints: {},
894
- checkConstraints: {},
895
- },
896
- },
897
- enums: {},
898
- views: {},
899
- };
900
- const json2: SQLiteSchemaSquashed = {
901
- version: '6',
902
- dialect: 'sqlite',
903
- tables: {
904
- ref: {
905
- name: 'ref',
906
- columns: {
907
- id1: {
908
- name: 'id1',
909
- type: 'text',
910
- primaryKey: false,
911
- notNull: true,
912
- autoincrement: false,
913
- },
914
- new_age: {
915
- name: 'new_age',
916
- type: 'integer',
917
- primaryKey: false,
918
- notNull: false,
919
- autoincrement: false,
920
- },
921
- test: {
922
- name: 'test',
923
- type: 'integer',
924
- primaryKey: false,
925
- notNull: false,
926
- autoincrement: false,
927
- },
928
- test1: {
929
- name: 'test1',
930
- type: 'integer',
931
- primaryKey: false,
932
- notNull: false,
933
- autoincrement: false,
934
- },
935
- },
936
- indexes: {},
937
- foreignKeys: {
938
- ref_new_age_user_new_age_fk: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
939
- },
940
- compositePrimaryKeys: {},
941
- uniqueConstraints: {},
942
- checkConstraints: {},
943
- },
944
- user: {
945
- name: 'user',
946
- columns: {
947
- id1: {
948
- name: 'id1',
949
- type: 'text',
950
- primaryKey: false,
951
- notNull: true,
952
- autoincrement: false,
953
- },
954
- new_age: {
955
- name: 'new_age',
956
- type: 'integer',
957
- primaryKey: false,
958
- notNull: false,
959
- autoincrement: false,
960
- },
961
- },
962
- indexes: {},
963
- foreignKeys: {},
964
- compositePrimaryKeys: {},
965
- uniqueConstraints: {},
966
- checkConstraints: {},
967
- },
968
- },
969
- enums: {},
970
- views: {},
971
- };
972
-
973
- const newJsonStatements = [
974
- {
975
- columns: [
976
- {
977
- autoincrement: false,
978
- name: 'id1',
979
- notNull: true,
980
- primaryKey: false,
981
- type: 'text',
982
- },
983
- {
984
- autoincrement: false,
985
- name: 'new_age',
986
- notNull: false,
987
- primaryKey: false,
988
- type: 'integer',
989
- },
990
- {
991
- autoincrement: false,
992
- name: 'test',
993
- notNull: false,
994
- primaryKey: false,
995
- type: 'integer',
996
- },
997
- {
998
- autoincrement: false,
999
- name: 'test1',
1000
- notNull: false,
1001
- primaryKey: false,
1002
- type: 'integer',
1003
- },
1004
- ],
1005
- compositePKs: [],
1006
- referenceData: [
1007
- {
1008
- columnsFrom: [
1009
- 'new_age',
1010
- ],
1011
- columnsTo: [
1012
- 'new_age',
1013
- ],
1014
- name: 'ref_new_age_user_new_age_fk',
1015
- onDelete: 'no action',
1016
- onUpdate: 'no action',
1017
- tableFrom: 'ref',
1018
- tableTo: 'user',
1019
- },
1020
- ],
1021
- tableName: 'ref',
1022
- type: 'recreate_table',
1023
- uniqueConstraints: [],
1024
- checkConstraints: [],
1025
- },
1026
- ];
1027
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
1028
- newJsonStatements,
1029
- );
1030
- });
1031
-
1032
- test(`add column and fk`, async (t) => {
1033
- const statements: JsonStatement[] = [
1034
- {
1035
- type: 'sqlite_alter_table_add_column',
1036
- tableName: 'ref',
1037
- column: {
1038
- name: 'test1',
1039
- type: 'integer',
1040
- primaryKey: false,
1041
- notNull: false,
1042
- autoincrement: false,
1043
- },
1044
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1045
- },
1046
- {
1047
- type: 'create_reference',
1048
- tableName: 'ref',
1049
- data: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1050
- schema: '',
1051
- columnNotNull: false,
1052
- columnDefault: undefined,
1053
- columnType: 'integer',
1054
- },
1055
- ];
1056
- const json1: SQLiteSchemaSquashed = {
1057
- version: '6',
1058
- dialect: 'sqlite',
1059
- tables: {
1060
- ref: {
1061
- name: 'ref',
1062
- columns: {
1063
- id1: {
1064
- name: 'id1',
1065
- type: 'text',
1066
- primaryKey: false,
1067
- notNull: true,
1068
- autoincrement: false,
1069
- },
1070
- new_age: {
1071
- name: 'new_age',
1072
- type: 'integer',
1073
- primaryKey: false,
1074
- notNull: false,
1075
- autoincrement: false,
1076
- },
1077
- test1: {
1078
- name: 'test1',
1079
- type: 'integer',
1080
- primaryKey: false,
1081
- notNull: false,
1082
- autoincrement: false,
1083
- },
1084
- },
1085
- indexes: {},
1086
- foreignKeys: {
1087
- ref_test1_user_new_age_fk: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1088
- },
1089
- compositePrimaryKeys: {},
1090
- uniqueConstraints: {},
1091
- checkConstraints: {},
1092
- },
1093
- user: {
1094
- name: 'user',
1095
- columns: {
1096
- id1: {
1097
- name: 'id1',
1098
- type: 'text',
1099
- primaryKey: false,
1100
- notNull: true,
1101
- autoincrement: false,
1102
- },
1103
- new_age: {
1104
- name: 'new_age',
1105
- type: 'integer',
1106
- primaryKey: false,
1107
- notNull: false,
1108
- autoincrement: false,
1109
- },
1110
- },
1111
- indexes: {},
1112
- foreignKeys: {},
1113
- compositePrimaryKeys: {},
1114
- uniqueConstraints: {},
1115
- checkConstraints: {},
1116
- },
1117
- },
1118
- enums: {},
1119
- views: {},
1120
- };
1121
- const json2: SQLiteSchemaSquashed = {
1122
- version: '6',
1123
- dialect: 'sqlite',
1124
- tables: {
1125
- ref: {
1126
- name: 'ref',
1127
- columns: {
1128
- id1: {
1129
- name: 'id1',
1130
- type: 'text',
1131
- primaryKey: false,
1132
- notNull: true,
1133
- autoincrement: false,
1134
- },
1135
- new_age: {
1136
- name: 'new_age',
1137
- type: 'integer',
1138
- primaryKey: false,
1139
- notNull: false,
1140
- autoincrement: false,
1141
- },
1142
- test: {
1143
- name: 'test',
1144
- type: 'integer',
1145
- primaryKey: false,
1146
- notNull: false,
1147
- autoincrement: false,
1148
- },
1149
- test1: {
1150
- name: 'test1',
1151
- type: 'integer',
1152
- primaryKey: false,
1153
- notNull: false,
1154
- autoincrement: false,
1155
- },
1156
- },
1157
- indexes: {},
1158
- foreignKeys: {
1159
- ref_new_age_user_new_age_fk: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1160
- },
1161
- compositePrimaryKeys: {},
1162
- uniqueConstraints: {},
1163
- checkConstraints: {},
1164
- },
1165
- user: {
1166
- name: 'user',
1167
- columns: {
1168
- id1: {
1169
- name: 'id1',
1170
- type: 'text',
1171
- primaryKey: false,
1172
- notNull: true,
1173
- autoincrement: false,
1174
- },
1175
- new_age: {
1176
- name: 'new_age',
1177
- type: 'integer',
1178
- primaryKey: false,
1179
- notNull: false,
1180
- autoincrement: false,
1181
- },
1182
- },
1183
- indexes: {},
1184
- foreignKeys: {},
1185
- compositePrimaryKeys: {},
1186
- uniqueConstraints: {},
1187
- checkConstraints: {},
1188
- },
1189
- },
1190
- enums: {},
1191
- views: {},
1192
- };
1193
-
1194
- const newJsonStatements = [
1195
- {
1196
- type: 'sqlite_alter_table_add_column',
1197
- tableName: 'ref',
1198
- column: {
1199
- name: 'test1',
1200
- type: 'integer',
1201
- primaryKey: false,
1202
- notNull: false,
1203
- autoincrement: false,
1204
- },
1205
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1206
- },
1207
- ];
1208
- expect(sqliteCombineStatements(statements, json2)).toStrictEqual(
1209
- newJsonStatements,
1210
- );
1211
- });