@anthonyalayo/drizzle-kit 1.0.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,1812 +0,0 @@
1
- import { JsonAddColumnStatement, JsonSqliteAddColumnStatement, JsonStatement } from 'src/jsonStatements';
2
- import { SQLiteSchemaSquashed } from 'src/serializer/sqliteSchema';
3
- import { SQLiteAlterTableAddColumnConvertor } from 'src/sqlgenerator';
4
- import { libSQLCombineStatements } from 'src/statementCombiner';
5
- import { expect, test } from 'vitest';
6
-
7
- /**
8
- * ! before:
9
- *
10
- * user: {
11
- * id INT;
12
- * first_name INT;
13
- * iq INT;
14
- * PRIMARY KEY (id, iq)
15
- * INDEXES: {
16
- * UNIQUE id;
17
- * }
18
- * }
19
- *
20
- * ! after:
21
- *
22
- * new_user: {
23
- * id INT;
24
- * first_name INT;
25
- * iq INT;
26
- * PRIMARY KEY (id, iq)
27
- * INDEXES: {}
28
- * }
29
- *
30
- * rename table and drop unique index
31
- * expect to get "rename_table" statement and then "recreate_table"
32
- */
33
- test(`rename table and drop index`, async (t) => {
34
- const statements: JsonStatement[] = [
35
- {
36
- type: 'rename_table',
37
- fromSchema: '',
38
- toSchema: '',
39
- tableNameFrom: 'user',
40
- tableNameTo: 'new_user',
41
- },
42
- {
43
- type: 'drop_index',
44
- tableName: 'new_user',
45
- data: 'user_first_name_unique;first_name;true;',
46
- schema: '',
47
- },
48
- ];
49
- const json1: SQLiteSchemaSquashed = {
50
- version: '6',
51
- dialect: 'sqlite',
52
- tables: {
53
- user: {
54
- name: 'user',
55
- columns: {
56
- id: {
57
- name: 'id',
58
- type: 'int',
59
- primaryKey: false,
60
- notNull: false,
61
- autoincrement: false,
62
- },
63
- first_name: {
64
- name: 'first_name',
65
- type: 'int',
66
- primaryKey: false,
67
- notNull: false,
68
- autoincrement: false,
69
- },
70
- iq: {
71
- name: 'iq',
72
- type: 'int',
73
- primaryKey: false,
74
- notNull: true,
75
- autoincrement: false,
76
- },
77
- },
78
- indexes: {
79
- user_first_name_unique: 'user_first_name_unique;first_name;true;',
80
- },
81
- foreignKeys: {},
82
- compositePrimaryKeys: {
83
- user_id_iq_pk: 'id,iq',
84
- },
85
- uniqueConstraints: {},
86
- checkConstraints: {},
87
- },
88
- },
89
- enums: {},
90
- views: {},
91
- };
92
- const json2: SQLiteSchemaSquashed = {
93
- version: '6',
94
- dialect: 'sqlite',
95
- tables: {
96
- new_user: {
97
- name: 'new_user',
98
- columns: {
99
- id: {
100
- name: 'id',
101
- type: 'int',
102
- primaryKey: false,
103
- notNull: false,
104
- autoincrement: false,
105
- },
106
- first_name: {
107
- name: 'first_name',
108
- type: 'int',
109
- primaryKey: false,
110
- notNull: false,
111
- autoincrement: false,
112
- },
113
- iq: {
114
- name: 'iq',
115
- type: 'int',
116
- primaryKey: false,
117
- notNull: true,
118
- autoincrement: false,
119
- },
120
- },
121
- indexes: {},
122
- foreignKeys: {},
123
- compositePrimaryKeys: {
124
- new_user_id_iq_pk: 'id,iq',
125
- },
126
- uniqueConstraints: {},
127
- checkConstraints: {},
128
- },
129
- },
130
- enums: {},
131
- views: {},
132
- };
133
-
134
- const newJsonStatements = [
135
- {
136
- type: 'rename_table',
137
- fromSchema: '',
138
- toSchema: '',
139
- tableNameFrom: 'user',
140
- tableNameTo: 'new_user',
141
- },
142
- {
143
- type: 'drop_index',
144
- tableName: 'new_user',
145
- data: 'user_first_name_unique;first_name;true;',
146
- schema: '',
147
- },
148
- ];
149
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
150
- newJsonStatements,
151
- );
152
- });
153
-
154
- /**
155
- * ! before:
156
- *
157
- * autoincrement1: {
158
- * id INT PRIMARY KEY;
159
- * }
160
- *
161
- * autoincrement2: {
162
- * id INT PRIMARY KEY AUTOINCREMENT;
163
- * }
164
- *
165
- * dropNotNull: {
166
- * id INT NOT NULL;
167
- * }
168
- *
169
- * ! after:
170
- *
171
- * autoincrement1: {
172
- * id INT PRIMARY KEY AUTOINCREMENT;
173
- * }
174
- *
175
- * autoincrement2: {
176
- * id INT PRI<ARY KEY;
177
- * }
178
- *
179
- * dropNotNull: {
180
- * id INT;
181
- * }
182
- *
183
- * drop autoincrement for autoincrement1
184
- * set autoincrement for autoincrement2
185
- *
186
- * expect to:
187
- * - get "recreate_table" for autoincrement1
188
- * - get "recreate_table" for autoincrement2
189
- * - get "drop_notnull" for dropNotNull
190
- */
191
- test(`drop, set autoincrement. drop not null`, async (t) => {
192
- const statements: JsonStatement[] = [
193
- {
194
- type: 'alter_table_alter_column_set_autoincrement',
195
- tableName: 'autoincrement1',
196
- columnName: 'id',
197
- schema: '',
198
- newDataType: 'int',
199
- columnDefault: undefined,
200
- columnOnUpdate: undefined,
201
- columnNotNull: true,
202
- columnAutoIncrement: true,
203
- columnPk: true,
204
- } as unknown as JsonStatement,
205
- {
206
- type: 'alter_table_alter_column_drop_autoincrement',
207
- tableName: 'autoincrement2',
208
- columnName: 'id',
209
- schema: '',
210
- newDataType: 'int',
211
- columnDefault: undefined,
212
- columnOnUpdate: undefined,
213
- columnNotNull: true,
214
- columnAutoIncrement: false,
215
- columnPk: true,
216
- } as unknown as JsonStatement,
217
- {
218
- type: 'alter_table_alter_column_drop_notnull',
219
- tableName: 'dropNotNull',
220
- columnName: 'id',
221
- schema: '',
222
- newDataType: 'int',
223
- columnDefault: undefined,
224
- columnOnUpdate: undefined,
225
- columnNotNull: false,
226
- columnAutoIncrement: false,
227
- columnPk: false,
228
- } as unknown as JsonStatement,
229
- ];
230
- const json1: SQLiteSchemaSquashed = {
231
- version: '6',
232
- dialect: 'sqlite',
233
- tables: {
234
- autoincrement1: {
235
- name: 'autoincrement1',
236
- columns: {
237
- id: {
238
- name: 'id',
239
- type: 'int',
240
- primaryKey: true,
241
- notNull: true,
242
- autoincrement: false,
243
- },
244
- },
245
- indexes: {},
246
- foreignKeys: {},
247
- compositePrimaryKeys: {},
248
- uniqueConstraints: {},
249
- checkConstraints: {},
250
- },
251
- autoincrement2: {
252
- name: 'autoincrement2',
253
- columns: {
254
- id: {
255
- name: 'id',
256
- type: 'int',
257
- primaryKey: true,
258
- notNull: false,
259
- autoincrement: true,
260
- },
261
- },
262
- indexes: {},
263
- foreignKeys: {},
264
- compositePrimaryKeys: {},
265
- uniqueConstraints: {},
266
- checkConstraints: {},
267
- },
268
- dropNotNull: {
269
- name: 'dropNotNull',
270
- columns: {
271
- id: {
272
- name: 'id',
273
- type: 'int',
274
- primaryKey: false,
275
- notNull: true,
276
- autoincrement: false,
277
- },
278
- },
279
- indexes: {},
280
- foreignKeys: {},
281
- compositePrimaryKeys: {},
282
- uniqueConstraints: {},
283
- checkConstraints: {},
284
- },
285
- },
286
- enums: {},
287
- views: {},
288
- };
289
- const json2: SQLiteSchemaSquashed = {
290
- version: '6',
291
- dialect: 'sqlite',
292
- tables: {
293
- autoincrement1: {
294
- name: 'autoincrement1',
295
- columns: {
296
- id: {
297
- name: 'id',
298
- type: 'int',
299
- primaryKey: true,
300
- notNull: true,
301
- autoincrement: true,
302
- },
303
- },
304
- indexes: {},
305
- foreignKeys: {},
306
- compositePrimaryKeys: {},
307
- uniqueConstraints: {},
308
- checkConstraints: {},
309
- },
310
- autoincrement2: {
311
- name: 'autoincrement2',
312
- columns: {
313
- id: {
314
- name: 'id',
315
- type: 'int',
316
- primaryKey: true,
317
- notNull: true,
318
- autoincrement: false,
319
- },
320
- },
321
- indexes: {},
322
- foreignKeys: {},
323
- compositePrimaryKeys: {},
324
- uniqueConstraints: {},
325
- checkConstraints: {},
326
- },
327
- dropNotNull: {
328
- name: 'dropNotNull',
329
- columns: {
330
- id: {
331
- name: 'id',
332
- type: 'int',
333
- primaryKey: false,
334
- notNull: false,
335
- autoincrement: false,
336
- },
337
- },
338
- indexes: {},
339
- foreignKeys: {},
340
- compositePrimaryKeys: {},
341
- uniqueConstraints: {},
342
- checkConstraints: {},
343
- },
344
- },
345
- enums: {},
346
- views: {},
347
- };
348
-
349
- const newJsonStatements = [
350
- {
351
- type: 'recreate_table',
352
- tableName: 'autoincrement1',
353
- columns: [
354
- {
355
- name: 'id',
356
- type: 'int',
357
- primaryKey: true,
358
- notNull: true,
359
- autoincrement: true,
360
- },
361
- ],
362
- compositePKs: [],
363
- referenceData: [],
364
- uniqueConstraints: [],
365
- checkConstraints: [],
366
- },
367
- {
368
- type: 'recreate_table',
369
- tableName: 'autoincrement2',
370
- columns: [
371
- {
372
- name: 'id',
373
- type: 'int',
374
- primaryKey: true,
375
- notNull: true,
376
- autoincrement: false,
377
- },
378
- ],
379
- compositePKs: [],
380
- referenceData: [],
381
- uniqueConstraints: [],
382
- checkConstraints: [],
383
- },
384
- {
385
- type: 'alter_table_alter_column_drop_notnull',
386
- tableName: 'dropNotNull',
387
- columnName: 'id',
388
- schema: '',
389
- newDataType: 'int',
390
- columnDefault: undefined,
391
- columnOnUpdate: undefined,
392
- columnNotNull: false,
393
- columnAutoIncrement: false,
394
- columnPk: false,
395
- },
396
- ];
397
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
398
- newJsonStatements,
399
- );
400
- });
401
-
402
- /**
403
- * ! before:
404
- *
405
- * pk1: {
406
- * id INT;
407
- * }
408
- *
409
- * pk2: {
410
- * id INT PRIMARY KEY;
411
- * }
412
- *
413
- * ref_table: {
414
- * id INT;
415
- * }
416
- *
417
- * create_reference: {
418
- * id INT;
419
- * }
420
- *
421
- * ! after:
422
- *
423
- * pk1: {
424
- * id INT PRIMARY KEY;
425
- * }
426
- *
427
- * pk2: {
428
- * id INT;
429
- * }
430
- *
431
- * ref_table: {
432
- * id INT;
433
- * }
434
- *
435
- * create_reference: {
436
- * id INT -> ref_table INT;
437
- * }
438
- *
439
- * drop primary key for pk2
440
- * set primary key for pk1
441
- * "create_reference" reference on "ref_table"
442
- *
443
- * expect to:
444
- * - "recreate_table" statement for pk1
445
- * - "recreate_table" statement for pk2
446
- * - "create_reference" statement for create_reference
447
- */
448
- test(`drop and set primary key. create reference`, async (t) => {
449
- const statements: JsonStatement[] = [
450
- {
451
- type: 'alter_table_alter_column_set_pk',
452
- tableName: 'pk1',
453
- schema: '',
454
- columnName: 'id',
455
- },
456
- {
457
- type: 'alter_table_alter_column_set_notnull',
458
- tableName: 'pk1',
459
- columnName: 'id',
460
- schema: '',
461
- newDataType: 'int',
462
- columnDefault: undefined,
463
- columnOnUpdate: undefined,
464
- columnNotNull: true,
465
- columnAutoIncrement: false,
466
- columnPk: true,
467
- } as unknown as JsonStatement,
468
- {
469
- type: 'alter_table_alter_column_drop_pk',
470
- tableName: 'pk2',
471
- columnName: 'id',
472
- schema: '',
473
- },
474
- {
475
- type: 'alter_table_alter_column_drop_notnull',
476
- tableName: 'pk2',
477
- columnName: 'id',
478
- schema: '',
479
- newDataType: 'int',
480
- columnDefault: undefined,
481
- columnOnUpdate: undefined,
482
- columnNotNull: false,
483
- columnAutoIncrement: false,
484
- columnPk: false,
485
- } as unknown as JsonStatement,
486
- {
487
- type: 'create_reference',
488
- tableName: 'create_reference',
489
- data: 'create_reference_id_ref_table_id_fk;create_reference;id;ref_table;id;no action;no action',
490
- schema: '',
491
- columnNotNull: false,
492
- columnDefault: undefined,
493
- columnType: 'int',
494
- },
495
- ];
496
- const json1: SQLiteSchemaSquashed = {
497
- version: '6',
498
- dialect: 'sqlite',
499
- tables: {
500
- create_reference: {
501
- name: 'create_reference',
502
- columns: {
503
- id: {
504
- name: 'id',
505
- type: 'int',
506
- primaryKey: false,
507
- notNull: false,
508
- autoincrement: false,
509
- },
510
- },
511
- indexes: {},
512
- foreignKeys: {},
513
- compositePrimaryKeys: {},
514
- uniqueConstraints: {},
515
- checkConstraints: {},
516
- },
517
- pk1: {
518
- name: 'pk1',
519
- columns: {
520
- id: {
521
- name: 'id',
522
- type: 'int',
523
- primaryKey: false,
524
- notNull: false,
525
- autoincrement: false,
526
- },
527
- },
528
- indexes: {},
529
- foreignKeys: {},
530
- compositePrimaryKeys: {},
531
- uniqueConstraints: {},
532
- checkConstraints: {},
533
- },
534
- pk2: {
535
- name: 'pk2',
536
- columns: {
537
- id: {
538
- name: 'id',
539
- type: 'int',
540
- primaryKey: true,
541
- notNull: true,
542
- autoincrement: false,
543
- },
544
- },
545
- indexes: {},
546
- foreignKeys: {},
547
- compositePrimaryKeys: {},
548
- uniqueConstraints: {},
549
- checkConstraints: {},
550
- },
551
- ref_table: {
552
- name: 'ref_table',
553
- columns: {
554
- id: {
555
- name: 'id',
556
- type: 'int',
557
- primaryKey: true,
558
- notNull: true,
559
- autoincrement: false,
560
- },
561
- },
562
- indexes: {},
563
- foreignKeys: {},
564
- compositePrimaryKeys: {},
565
- uniqueConstraints: {},
566
- checkConstraints: {},
567
- },
568
- },
569
- enums: {},
570
- views: {},
571
- };
572
- const json2: SQLiteSchemaSquashed = {
573
- version: '6',
574
- dialect: 'sqlite',
575
- tables: {
576
- create_reference: {
577
- name: 'create_reference',
578
- columns: {
579
- id: {
580
- name: 'id',
581
- type: 'int',
582
- primaryKey: false,
583
- notNull: false,
584
- autoincrement: false,
585
- },
586
- },
587
- indexes: {},
588
- foreignKeys: {
589
- create_reference_id_ref_table_id_fk:
590
- 'create_reference_id_ref_table_id_fk;create_reference;id;ref_table;id;no action;no action',
591
- },
592
- compositePrimaryKeys: {},
593
- uniqueConstraints: {},
594
- checkConstraints: {},
595
- },
596
- pk1: {
597
- name: 'pk1',
598
- columns: {
599
- id: {
600
- name: 'id',
601
- type: 'int',
602
- primaryKey: true,
603
- notNull: true,
604
- autoincrement: false,
605
- },
606
- },
607
- indexes: {},
608
- foreignKeys: {},
609
- compositePrimaryKeys: {},
610
- uniqueConstraints: {},
611
- checkConstraints: {},
612
- },
613
- pk2: {
614
- name: 'pk2',
615
- columns: {
616
- id: {
617
- name: 'id',
618
- type: 'int',
619
- primaryKey: false,
620
- notNull: false,
621
- autoincrement: false,
622
- },
623
- },
624
- indexes: {},
625
- foreignKeys: {},
626
- compositePrimaryKeys: {},
627
- uniqueConstraints: {},
628
- checkConstraints: {},
629
- },
630
- ref_table: {
631
- name: 'ref_table',
632
- columns: {
633
- id: {
634
- name: 'id',
635
- type: 'int',
636
- primaryKey: true,
637
- notNull: true,
638
- autoincrement: false,
639
- },
640
- },
641
- indexes: {},
642
- foreignKeys: {},
643
- compositePrimaryKeys: {},
644
- uniqueConstraints: {},
645
- checkConstraints: {},
646
- },
647
- },
648
- enums: {},
649
- views: {},
650
- };
651
-
652
- const newJsonStatements = [
653
- {
654
- type: 'recreate_table',
655
- tableName: 'pk1',
656
- columns: [
657
- {
658
- name: 'id',
659
- type: 'int',
660
- primaryKey: true,
661
- notNull: true,
662
- autoincrement: false,
663
- },
664
- ],
665
- compositePKs: [],
666
- referenceData: [],
667
- uniqueConstraints: [],
668
- checkConstraints: [],
669
- },
670
- {
671
- type: 'recreate_table',
672
- tableName: 'pk2',
673
- columns: [
674
- {
675
- name: 'id',
676
- type: 'int',
677
- primaryKey: false,
678
- notNull: false,
679
- autoincrement: false,
680
- },
681
- ],
682
- compositePKs: [],
683
- referenceData: [],
684
- uniqueConstraints: [],
685
- checkConstraints: [],
686
- },
687
- {
688
- type: 'create_reference',
689
- tableName: 'create_reference',
690
- data: 'create_reference_id_ref_table_id_fk;create_reference;id;ref_table;id;no action;no action',
691
- schema: '',
692
- columnNotNull: false,
693
- columnDefault: undefined,
694
- columnType: 'int',
695
- },
696
- ];
697
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
698
- newJsonStatements,
699
- );
700
- });
701
-
702
- /**
703
- * ! before:
704
- *
705
- * fk1: {
706
- * fk_id INT;
707
- * fk_id1 INT;
708
- * }
709
- *
710
- * fk2: {
711
- * fk2_id INT; -> composite reference on ref_table id INT
712
- * fk2_id1 INT; -> composite reference on ref_table id1 INT
713
- * }
714
- *
715
- * ref_table: {
716
- * id INT;
717
- * id1 INT;
718
- * }
719
- *
720
- * ! after:
721
- *
722
- * fk1: {
723
- * fk_id INT; -> composite reference on ref_table id INT
724
- * fk_id1 INT; -> composite reference on ref_table id1 INT
725
- * }
726
- *
727
- * fk2: {
728
- * fk2_id INT;
729
- * fk2_id1 INT;
730
- * }
731
- *
732
- * ref_table: {
733
- * id INT;
734
- * id1 INT;
735
- * }
736
- *
737
- * set multi column reference for fk1
738
- * drop multi column reference for fk2
739
- *
740
- * expect to:
741
- * - "recreate_table" statement for fk1
742
- * - "recreate_table" statement for fk2
743
- */
744
- test(`set and drop multiple columns reference`, async (t) => {
745
- const statements: JsonStatement[] = [
746
- {
747
- type: 'delete_reference',
748
- tableName: 'fk1',
749
- data: 'fk1_fk_id_fk_id1_ref_table_id_id1_fk;fk1;fk_id,fk_id1;ref_table;id,id1;no action;no action',
750
- schema: '',
751
- isMulticolumn: true,
752
- },
753
- {
754
- type: 'create_reference',
755
- tableName: 'fk2',
756
- data: 'fk2_fk2_id_fk2_id1_ref_table_id_id1_fk;fk2;fk2_id,fk2_id1;ref_table;id,id1;no action;no action',
757
- schema: '',
758
- isMulticolumn: true,
759
- },
760
- ];
761
- const json1: SQLiteSchemaSquashed = {
762
- version: '6',
763
- dialect: 'sqlite',
764
- tables: {
765
- fk1: {
766
- name: 'fk1',
767
- columns: {
768
- fk_id: {
769
- name: 'fk_id',
770
- type: 'int',
771
- primaryKey: false,
772
- notNull: false,
773
- autoincrement: false,
774
- },
775
- fk_id1: {
776
- name: 'fk_id1',
777
- type: 'int',
778
- primaryKey: false,
779
- notNull: false,
780
- autoincrement: false,
781
- },
782
- },
783
- indexes: {},
784
- foreignKeys: {
785
- fk1_fk_id_fk_id1_ref_table_id_id1_fk:
786
- 'fk1_fk_id_fk_id1_ref_table_id_id1_fk;fk1;fk_id,fk_id1;ref_table;id,id1;no action;no action',
787
- },
788
- compositePrimaryKeys: {},
789
- uniqueConstraints: {},
790
- checkConstraints: {},
791
- },
792
- fk2: {
793
- name: 'fk2',
794
- columns: {
795
- fk2_id: {
796
- name: 'fk2_id',
797
- type: 'int',
798
- primaryKey: false,
799
- notNull: false,
800
- autoincrement: false,
801
- },
802
- fk2_id1: {
803
- name: 'fk2_id1',
804
- type: 'int',
805
- primaryKey: false,
806
- notNull: false,
807
- autoincrement: false,
808
- },
809
- },
810
- indexes: {},
811
- foreignKeys: {},
812
- compositePrimaryKeys: {},
813
- uniqueConstraints: {},
814
- checkConstraints: {},
815
- },
816
- ref_table: {
817
- name: 'ref_table',
818
- columns: {
819
- id: {
820
- name: 'id',
821
- type: 'int',
822
- primaryKey: false,
823
- notNull: false,
824
- autoincrement: false,
825
- },
826
- id1: {
827
- name: 'id1',
828
- type: 'int',
829
- primaryKey: false,
830
- notNull: false,
831
- autoincrement: false,
832
- },
833
- },
834
- indexes: {},
835
- foreignKeys: {},
836
- compositePrimaryKeys: {},
837
- uniqueConstraints: {},
838
- checkConstraints: {},
839
- },
840
- },
841
- enums: {},
842
- views: {},
843
- };
844
- const json2: SQLiteSchemaSquashed = {
845
- version: '6',
846
- dialect: 'sqlite',
847
- tables: {
848
- fk1: {
849
- name: 'fk1',
850
- columns: {
851
- fk_id: {
852
- name: 'fk_id',
853
- type: 'int',
854
- primaryKey: false,
855
- notNull: false,
856
- autoincrement: false,
857
- },
858
- fk_id1: {
859
- name: 'fk_id1',
860
- type: 'int',
861
- primaryKey: false,
862
- notNull: false,
863
- autoincrement: false,
864
- },
865
- },
866
- indexes: {},
867
- foreignKeys: {},
868
- compositePrimaryKeys: {},
869
- uniqueConstraints: {},
870
- checkConstraints: {},
871
- },
872
- fk2: {
873
- name: 'fk2',
874
- columns: {
875
- fk2_id: {
876
- name: 'fk2_id',
877
- type: 'int',
878
- primaryKey: false,
879
- notNull: false,
880
- autoincrement: false,
881
- },
882
- fk2_id1: {
883
- name: 'fk2_id1',
884
- type: 'int',
885
- primaryKey: false,
886
- notNull: false,
887
- autoincrement: false,
888
- },
889
- },
890
- indexes: {},
891
- foreignKeys: {
892
- fk2_fk2_id_fk2_id1_ref_table_id_id1_fk:
893
- 'fk2_fk2_id_fk2_id1_ref_table_id_id1_fk;fk2;fk2_id,fk2_id1;ref_table;id,id1;no action;no action',
894
- },
895
- compositePrimaryKeys: {},
896
- uniqueConstraints: {},
897
- checkConstraints: {},
898
- },
899
- ref_table: {
900
- name: 'ref_table',
901
- columns: {
902
- id: {
903
- name: 'id',
904
- type: 'int',
905
- primaryKey: false,
906
- notNull: false,
907
- autoincrement: false,
908
- },
909
- id1: {
910
- name: 'id1',
911
- type: 'int',
912
- primaryKey: false,
913
- notNull: false,
914
- autoincrement: false,
915
- },
916
- },
917
- indexes: {},
918
- foreignKeys: {},
919
- compositePrimaryKeys: {},
920
- uniqueConstraints: {},
921
- checkConstraints: {},
922
- },
923
- },
924
- enums: {},
925
- views: {},
926
- };
927
-
928
- const newJsonStatements = [
929
- {
930
- type: 'recreate_table',
931
- tableName: 'fk1',
932
- columns: [
933
- {
934
- name: 'fk_id',
935
- type: 'int',
936
- primaryKey: false,
937
- notNull: false,
938
- autoincrement: false,
939
- },
940
- {
941
- name: 'fk_id1',
942
- type: 'int',
943
- primaryKey: false,
944
- notNull: false,
945
- autoincrement: false,
946
- },
947
- ],
948
- compositePKs: [],
949
- referenceData: [],
950
- uniqueConstraints: [],
951
- checkConstraints: [],
952
- },
953
- {
954
- type: 'recreate_table',
955
- tableName: 'fk2',
956
- columns: [
957
- {
958
- name: 'fk2_id',
959
- type: 'int',
960
- primaryKey: false,
961
- notNull: false,
962
- autoincrement: false,
963
- },
964
- {
965
- name: 'fk2_id1',
966
- type: 'int',
967
- primaryKey: false,
968
- notNull: false,
969
- autoincrement: false,
970
- },
971
- ],
972
- compositePKs: [],
973
- referenceData: [
974
- {
975
- name: 'fk2_fk2_id_fk2_id1_ref_table_id_id1_fk',
976
- tableFrom: 'fk2',
977
- tableTo: 'ref_table',
978
- columnsFrom: ['fk2_id', 'fk2_id1'],
979
- columnsTo: ['id', 'id1'],
980
- onDelete: 'no action',
981
- onUpdate: 'no action',
982
- },
983
- ],
984
- uniqueConstraints: [],
985
- checkConstraints: [],
986
- },
987
- ];
988
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
989
- newJsonStatements,
990
- );
991
- });
992
-
993
- /**
994
- * ! before:
995
- *
996
- * pk: {
997
- * pk TEXT PRIMARY KEY;
998
- * }
999
- *
1000
- * simple: {
1001
- * simple TEXT;
1002
- * }
1003
- *
1004
- * unique: {
1005
- * unique INT UNIQUE;
1006
- * }
1007
- *
1008
- * ! after:
1009
- *
1010
- * pk: {
1011
- * pk INT PRIMARY KEY;
1012
- * }
1013
- *
1014
- * simple: {
1015
- * simple INT;
1016
- * }
1017
- *
1018
- * unique: {
1019
- * unique TEXT UNIQUE;
1020
- * }
1021
- *
1022
- * set new type for primary key column
1023
- * set new type for unique column
1024
- * set new type for column without pk or unique
1025
- *
1026
- * expect to:
1027
- * - "recreate_table" statement for pk
1028
- * - "recreate_table" statement for unique
1029
- * - "alter_table_alter_column_set_type" statement for simple
1030
- * - "create_index" statement for unique
1031
- */
1032
- test(`set new type for primary key, unique and normal column`, async (t) => {
1033
- const statements: JsonStatement[] = [
1034
- {
1035
- type: 'alter_table_alter_column_set_type',
1036
- tableName: 'pk',
1037
- columnName: 'pk',
1038
- newDataType: 'int',
1039
- oldDataType: 'text',
1040
- schema: '',
1041
- columnDefault: undefined,
1042
- columnOnUpdate: undefined,
1043
- columnNotNull: true,
1044
- columnAutoIncrement: false,
1045
- columnPk: true,
1046
- } as unknown as JsonStatement,
1047
- {
1048
- type: 'alter_table_alter_column_set_type',
1049
- tableName: 'simple',
1050
- columnName: 'simple',
1051
- newDataType: 'int',
1052
- oldDataType: 'text',
1053
- schema: '',
1054
- columnDefault: undefined,
1055
- columnOnUpdate: undefined,
1056
- columnNotNull: false,
1057
- columnAutoIncrement: false,
1058
- columnPk: false,
1059
- } as unknown as JsonStatement,
1060
- {
1061
- type: 'alter_table_alter_column_set_type',
1062
- tableName: 'unique',
1063
- columnName: 'unique',
1064
- newDataType: 'text',
1065
- oldDataType: 'int',
1066
- schema: '',
1067
- columnDefault: undefined,
1068
- columnOnUpdate: undefined,
1069
- columnNotNull: false,
1070
- columnAutoIncrement: false,
1071
- columnPk: false,
1072
- } as unknown as JsonStatement,
1073
- ];
1074
- const json1: SQLiteSchemaSquashed = {
1075
- version: '6',
1076
- dialect: 'sqlite',
1077
- tables: {
1078
- pk: {
1079
- name: 'pk',
1080
- columns: {
1081
- pk: {
1082
- name: 'pk',
1083
- type: 'text',
1084
- primaryKey: true,
1085
- notNull: true,
1086
- autoincrement: false,
1087
- },
1088
- },
1089
- indexes: {},
1090
- foreignKeys: {},
1091
- compositePrimaryKeys: {},
1092
- uniqueConstraints: {},
1093
- checkConstraints: {},
1094
- },
1095
- simple: {
1096
- name: 'simple',
1097
- columns: {
1098
- simple: {
1099
- name: 'simple',
1100
- type: 'text',
1101
- primaryKey: false,
1102
- notNull: false,
1103
- autoincrement: false,
1104
- },
1105
- },
1106
- indexes: {},
1107
- foreignKeys: {},
1108
- compositePrimaryKeys: {},
1109
- uniqueConstraints: {},
1110
- checkConstraints: {},
1111
- },
1112
- unique: {
1113
- name: 'unique',
1114
- columns: {
1115
- unique: {
1116
- name: 'unique',
1117
- type: 'int',
1118
- primaryKey: false,
1119
- notNull: false,
1120
- autoincrement: false,
1121
- },
1122
- },
1123
- indexes: {
1124
- unique_unique_unique: 'unique_unique_unique;unique;true;',
1125
- },
1126
- foreignKeys: {},
1127
- compositePrimaryKeys: {},
1128
- uniqueConstraints: {},
1129
- checkConstraints: {},
1130
- },
1131
- },
1132
- enums: {},
1133
- views: {},
1134
- };
1135
- const json2: SQLiteSchemaSquashed = {
1136
- version: '6',
1137
- dialect: 'sqlite',
1138
- tables: {
1139
- pk: {
1140
- name: 'pk',
1141
- columns: {
1142
- pk: {
1143
- name: 'pk',
1144
- type: 'int',
1145
- primaryKey: true,
1146
- notNull: true,
1147
- autoincrement: false,
1148
- },
1149
- },
1150
- indexes: {},
1151
- foreignKeys: {},
1152
- compositePrimaryKeys: {},
1153
- uniqueConstraints: {},
1154
- checkConstraints: {},
1155
- },
1156
- simple: {
1157
- name: 'simple',
1158
- columns: {
1159
- simple: {
1160
- name: 'simple',
1161
- type: 'int',
1162
- primaryKey: false,
1163
- notNull: false,
1164
- autoincrement: false,
1165
- },
1166
- },
1167
- indexes: {},
1168
- foreignKeys: {},
1169
- compositePrimaryKeys: {},
1170
- uniqueConstraints: {},
1171
- checkConstraints: {},
1172
- },
1173
- unique: {
1174
- name: 'unique',
1175
- columns: {
1176
- unique: {
1177
- name: 'unique',
1178
- type: 'text',
1179
- primaryKey: false,
1180
- notNull: false,
1181
- autoincrement: false,
1182
- },
1183
- },
1184
- indexes: {
1185
- unique_unique_unique: 'unique_unique_unique;unique;true;',
1186
- },
1187
- foreignKeys: {},
1188
- compositePrimaryKeys: {},
1189
- uniqueConstraints: {},
1190
- checkConstraints: {},
1191
- },
1192
- },
1193
- enums: {},
1194
- views: {},
1195
- };
1196
-
1197
- const newJsonStatements = [
1198
- {
1199
- type: 'recreate_table',
1200
- tableName: 'pk',
1201
- columns: [
1202
- {
1203
- name: 'pk',
1204
- type: 'int',
1205
- primaryKey: true,
1206
- notNull: true,
1207
- autoincrement: false,
1208
- },
1209
- ],
1210
- compositePKs: [],
1211
- referenceData: [],
1212
- uniqueConstraints: [],
1213
- checkConstraints: [],
1214
- },
1215
- {
1216
- type: 'alter_table_alter_column_set_type',
1217
- tableName: 'simple',
1218
- columnName: 'simple',
1219
- newDataType: 'int',
1220
- oldDataType: 'text',
1221
- schema: '',
1222
- columnDefault: undefined,
1223
- columnOnUpdate: undefined,
1224
- columnNotNull: false,
1225
- columnAutoIncrement: false,
1226
- columnPk: false,
1227
- },
1228
- {
1229
- type: 'alter_table_alter_column_set_type',
1230
- tableName: 'unique',
1231
- columnName: 'unique',
1232
- newDataType: 'text',
1233
- oldDataType: 'int',
1234
- schema: '',
1235
- columnDefault: undefined,
1236
- columnOnUpdate: undefined,
1237
- columnNotNull: false,
1238
- columnAutoIncrement: false,
1239
- columnPk: false,
1240
- },
1241
- ];
1242
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
1243
- newJsonStatements,
1244
- );
1245
- });
1246
-
1247
- test(`add columns. set fk`, async (t) => {
1248
- const statements: JsonStatement[] = [
1249
- {
1250
- type: 'sqlite_alter_table_add_column',
1251
- tableName: 'ref',
1252
- column: {
1253
- name: 'test',
1254
- type: 'integer',
1255
- primaryKey: false,
1256
- notNull: false,
1257
- autoincrement: false,
1258
- },
1259
- referenceData: undefined,
1260
- },
1261
- {
1262
- type: 'sqlite_alter_table_add_column',
1263
- tableName: 'ref',
1264
- column: {
1265
- name: 'test1',
1266
- type: 'integer',
1267
- primaryKey: false,
1268
- notNull: false,
1269
- autoincrement: false,
1270
- },
1271
- referenceData: undefined,
1272
- },
1273
- {
1274
- type: 'create_reference',
1275
- tableName: 'ref',
1276
- data: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1277
- schema: '',
1278
- columnNotNull: false,
1279
- columnDefault: undefined,
1280
- columnType: 'integer',
1281
- },
1282
- ];
1283
- const json1: SQLiteSchemaSquashed = {
1284
- version: '6',
1285
- dialect: 'sqlite',
1286
- tables: {
1287
- ref: {
1288
- name: 'ref',
1289
- columns: {
1290
- id1: {
1291
- name: 'id1',
1292
- type: 'text',
1293
- primaryKey: false,
1294
- notNull: true,
1295
- autoincrement: false,
1296
- },
1297
- new_age: {
1298
- name: 'new_age',
1299
- type: 'integer',
1300
- primaryKey: false,
1301
- notNull: false,
1302
- autoincrement: false,
1303
- },
1304
- },
1305
- indexes: {},
1306
- foreignKeys: {},
1307
- compositePrimaryKeys: {},
1308
- uniqueConstraints: {},
1309
- checkConstraints: {},
1310
- },
1311
- user: {
1312
- name: 'user',
1313
- columns: {
1314
- id1: {
1315
- name: 'id1',
1316
- type: 'text',
1317
- primaryKey: false,
1318
- notNull: true,
1319
- autoincrement: false,
1320
- },
1321
- new_age: {
1322
- name: 'new_age',
1323
- type: 'integer',
1324
- primaryKey: false,
1325
- notNull: false,
1326
- autoincrement: false,
1327
- },
1328
- },
1329
- indexes: {},
1330
- foreignKeys: {},
1331
- compositePrimaryKeys: {},
1332
- uniqueConstraints: {},
1333
- checkConstraints: {},
1334
- },
1335
- },
1336
- enums: {},
1337
- views: {},
1338
- };
1339
- const json2: SQLiteSchemaSquashed = {
1340
- version: '6',
1341
- dialect: 'sqlite',
1342
- tables: {
1343
- ref: {
1344
- name: 'ref',
1345
- columns: {
1346
- id1: {
1347
- name: 'id1',
1348
- type: 'text',
1349
- primaryKey: false,
1350
- notNull: true,
1351
- autoincrement: false,
1352
- },
1353
- new_age: {
1354
- name: 'new_age',
1355
- type: 'integer',
1356
- primaryKey: false,
1357
- notNull: false,
1358
- autoincrement: false,
1359
- },
1360
- test: {
1361
- name: 'test',
1362
- type: 'integer',
1363
- primaryKey: false,
1364
- notNull: false,
1365
- autoincrement: false,
1366
- },
1367
- test1: {
1368
- name: 'test1',
1369
- type: 'integer',
1370
- primaryKey: false,
1371
- notNull: false,
1372
- autoincrement: false,
1373
- },
1374
- },
1375
- indexes: {},
1376
- foreignKeys: {
1377
- ref_new_age_user_new_age_fk: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1378
- },
1379
- compositePrimaryKeys: {},
1380
- uniqueConstraints: {},
1381
- checkConstraints: {},
1382
- },
1383
- user: {
1384
- name: 'user',
1385
- columns: {
1386
- id1: {
1387
- name: 'id1',
1388
- type: 'text',
1389
- primaryKey: false,
1390
- notNull: true,
1391
- autoincrement: false,
1392
- },
1393
- new_age: {
1394
- name: 'new_age',
1395
- type: 'integer',
1396
- primaryKey: false,
1397
- notNull: false,
1398
- autoincrement: false,
1399
- },
1400
- },
1401
- indexes: {},
1402
- foreignKeys: {},
1403
- compositePrimaryKeys: {},
1404
- uniqueConstraints: {},
1405
- checkConstraints: {},
1406
- },
1407
- },
1408
- enums: {},
1409
- views: {},
1410
- };
1411
-
1412
- const newJsonStatements = [
1413
- {
1414
- type: 'sqlite_alter_table_add_column',
1415
- tableName: 'ref',
1416
- column: {
1417
- name: 'test',
1418
- type: 'integer',
1419
- primaryKey: false,
1420
- notNull: false,
1421
- autoincrement: false,
1422
- },
1423
- referenceData: undefined,
1424
- },
1425
- {
1426
- type: 'sqlite_alter_table_add_column',
1427
- tableName: 'ref',
1428
- column: {
1429
- name: 'test1',
1430
- type: 'integer',
1431
- primaryKey: false,
1432
- notNull: false,
1433
- autoincrement: false,
1434
- },
1435
- referenceData: undefined,
1436
- },
1437
- {
1438
- type: 'create_reference',
1439
- tableName: 'ref',
1440
- data: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1441
- schema: '',
1442
- columnNotNull: false,
1443
- columnDefault: undefined,
1444
- columnType: 'integer',
1445
- },
1446
- ];
1447
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
1448
- newJsonStatements,
1449
- );
1450
- });
1451
-
1452
- test(`add column and fk`, async (t) => {
1453
- const statements: JsonStatement[] = [
1454
- {
1455
- type: 'sqlite_alter_table_add_column',
1456
- tableName: 'ref',
1457
- column: {
1458
- name: 'test1',
1459
- type: 'integer',
1460
- primaryKey: false,
1461
- notNull: false,
1462
- autoincrement: false,
1463
- },
1464
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1465
- },
1466
- {
1467
- type: 'create_reference',
1468
- tableName: 'ref',
1469
- data: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1470
- schema: '',
1471
- columnNotNull: false,
1472
- columnDefault: undefined,
1473
- columnType: 'integer',
1474
- },
1475
- ];
1476
- const json1: SQLiteSchemaSquashed = {
1477
- version: '6',
1478
- dialect: 'sqlite',
1479
- tables: {
1480
- ref: {
1481
- name: 'ref',
1482
- columns: {
1483
- id1: {
1484
- name: 'id1',
1485
- type: 'text',
1486
- primaryKey: false,
1487
- notNull: true,
1488
- autoincrement: false,
1489
- },
1490
- new_age: {
1491
- name: 'new_age',
1492
- type: 'integer',
1493
- primaryKey: false,
1494
- notNull: false,
1495
- autoincrement: false,
1496
- },
1497
- test1: {
1498
- name: 'test1',
1499
- type: 'integer',
1500
- primaryKey: false,
1501
- notNull: false,
1502
- autoincrement: false,
1503
- },
1504
- },
1505
- indexes: {},
1506
- foreignKeys: {
1507
- ref_test1_user_new_age_fk: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1508
- },
1509
- compositePrimaryKeys: {},
1510
- uniqueConstraints: {},
1511
- checkConstraints: {},
1512
- },
1513
- user: {
1514
- name: 'user',
1515
- columns: {
1516
- id1: {
1517
- name: 'id1',
1518
- type: 'text',
1519
- primaryKey: false,
1520
- notNull: true,
1521
- autoincrement: false,
1522
- },
1523
- new_age: {
1524
- name: 'new_age',
1525
- type: 'integer',
1526
- primaryKey: false,
1527
- notNull: false,
1528
- autoincrement: false,
1529
- },
1530
- },
1531
- indexes: {},
1532
- foreignKeys: {},
1533
- compositePrimaryKeys: {},
1534
- uniqueConstraints: {},
1535
- checkConstraints: {},
1536
- },
1537
- },
1538
- enums: {},
1539
- views: {},
1540
- };
1541
- const json2: SQLiteSchemaSquashed = {
1542
- version: '6',
1543
- dialect: 'sqlite',
1544
- tables: {
1545
- ref: {
1546
- name: 'ref',
1547
- columns: {
1548
- id1: {
1549
- name: 'id1',
1550
- type: 'text',
1551
- primaryKey: false,
1552
- notNull: true,
1553
- autoincrement: false,
1554
- },
1555
- new_age: {
1556
- name: 'new_age',
1557
- type: 'integer',
1558
- primaryKey: false,
1559
- notNull: false,
1560
- autoincrement: false,
1561
- },
1562
- test: {
1563
- name: 'test',
1564
- type: 'integer',
1565
- primaryKey: false,
1566
- notNull: false,
1567
- autoincrement: false,
1568
- },
1569
- test1: {
1570
- name: 'test1',
1571
- type: 'integer',
1572
- primaryKey: false,
1573
- notNull: false,
1574
- autoincrement: false,
1575
- },
1576
- },
1577
- indexes: {},
1578
- foreignKeys: {
1579
- ref_new_age_user_new_age_fk: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1580
- },
1581
- compositePrimaryKeys: {},
1582
- uniqueConstraints: {},
1583
- checkConstraints: {},
1584
- },
1585
- user: {
1586
- name: 'user',
1587
- columns: {
1588
- id1: {
1589
- name: 'id1',
1590
- type: 'text',
1591
- primaryKey: false,
1592
- notNull: true,
1593
- autoincrement: false,
1594
- },
1595
- new_age: {
1596
- name: 'new_age',
1597
- type: 'integer',
1598
- primaryKey: false,
1599
- notNull: false,
1600
- autoincrement: false,
1601
- },
1602
- },
1603
- indexes: {},
1604
- foreignKeys: {},
1605
- compositePrimaryKeys: {},
1606
- uniqueConstraints: {},
1607
- checkConstraints: {},
1608
- },
1609
- },
1610
- enums: {},
1611
- views: {},
1612
- };
1613
-
1614
- const newJsonStatements = [
1615
- {
1616
- type: 'sqlite_alter_table_add_column',
1617
- tableName: 'ref',
1618
- column: {
1619
- name: 'test1',
1620
- type: 'integer',
1621
- primaryKey: false,
1622
- notNull: false,
1623
- autoincrement: false,
1624
- },
1625
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1626
- },
1627
- ];
1628
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
1629
- newJsonStatements,
1630
- );
1631
- });
1632
-
1633
- test(`add column and fk`, async (t) => {
1634
- const statements: JsonStatement[] = [
1635
- {
1636
- type: 'sqlite_alter_table_add_column',
1637
- tableName: 'ref',
1638
- column: {
1639
- name: 'test1',
1640
- type: 'integer',
1641
- primaryKey: false,
1642
- notNull: false,
1643
- autoincrement: false,
1644
- },
1645
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1646
- },
1647
- {
1648
- type: 'create_reference',
1649
- tableName: 'ref',
1650
- data: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1651
- schema: '',
1652
- columnNotNull: false,
1653
- columnDefault: undefined,
1654
- columnType: 'integer',
1655
- },
1656
- ];
1657
- const json1: SQLiteSchemaSquashed = {
1658
- version: '6',
1659
- dialect: 'sqlite',
1660
- tables: {
1661
- ref: {
1662
- name: 'ref',
1663
- columns: {
1664
- id1: {
1665
- name: 'id1',
1666
- type: 'text',
1667
- primaryKey: false,
1668
- notNull: true,
1669
- autoincrement: false,
1670
- },
1671
- new_age: {
1672
- name: 'new_age',
1673
- type: 'integer',
1674
- primaryKey: false,
1675
- notNull: false,
1676
- autoincrement: false,
1677
- },
1678
- test1: {
1679
- name: 'test1',
1680
- type: 'integer',
1681
- primaryKey: false,
1682
- notNull: false,
1683
- autoincrement: false,
1684
- },
1685
- },
1686
- indexes: {},
1687
- foreignKeys: {
1688
- ref_test1_user_new_age_fk: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1689
- },
1690
- compositePrimaryKeys: {},
1691
- uniqueConstraints: {},
1692
- checkConstraints: {},
1693
- },
1694
- user: {
1695
- name: 'user',
1696
- columns: {
1697
- id1: {
1698
- name: 'id1',
1699
- type: 'text',
1700
- primaryKey: false,
1701
- notNull: true,
1702
- autoincrement: false,
1703
- },
1704
- new_age: {
1705
- name: 'new_age',
1706
- type: 'integer',
1707
- primaryKey: false,
1708
- notNull: false,
1709
- autoincrement: false,
1710
- },
1711
- },
1712
- indexes: {},
1713
- foreignKeys: {},
1714
- compositePrimaryKeys: {},
1715
- uniqueConstraints: {},
1716
- checkConstraints: {},
1717
- },
1718
- },
1719
- enums: {},
1720
- views: {},
1721
- };
1722
- const json2: SQLiteSchemaSquashed = {
1723
- version: '6',
1724
- dialect: 'sqlite',
1725
- tables: {
1726
- ref: {
1727
- name: 'ref',
1728
- columns: {
1729
- id1: {
1730
- name: 'id1',
1731
- type: 'text',
1732
- primaryKey: false,
1733
- notNull: true,
1734
- autoincrement: false,
1735
- },
1736
- new_age: {
1737
- name: 'new_age',
1738
- type: 'integer',
1739
- primaryKey: false,
1740
- notNull: false,
1741
- autoincrement: false,
1742
- },
1743
- test: {
1744
- name: 'test',
1745
- type: 'integer',
1746
- primaryKey: false,
1747
- notNull: false,
1748
- autoincrement: false,
1749
- },
1750
- test1: {
1751
- name: 'test1',
1752
- type: 'integer',
1753
- primaryKey: false,
1754
- notNull: false,
1755
- autoincrement: false,
1756
- },
1757
- },
1758
- indexes: {},
1759
- foreignKeys: {
1760
- ref_new_age_user_new_age_fk: 'ref_new_age_user_new_age_fk;ref;new_age;user;new_age;no action;no action',
1761
- },
1762
- compositePrimaryKeys: {},
1763
- uniqueConstraints: {},
1764
- checkConstraints: {},
1765
- },
1766
- user: {
1767
- name: 'user',
1768
- columns: {
1769
- id1: {
1770
- name: 'id1',
1771
- type: 'text',
1772
- primaryKey: false,
1773
- notNull: true,
1774
- autoincrement: false,
1775
- },
1776
- new_age: {
1777
- name: 'new_age',
1778
- type: 'integer',
1779
- primaryKey: false,
1780
- notNull: false,
1781
- autoincrement: false,
1782
- },
1783
- },
1784
- indexes: {},
1785
- foreignKeys: {},
1786
- compositePrimaryKeys: {},
1787
- uniqueConstraints: {},
1788
- checkConstraints: {},
1789
- },
1790
- },
1791
- enums: {},
1792
- views: {},
1793
- };
1794
-
1795
- const newJsonStatements = [
1796
- {
1797
- type: 'sqlite_alter_table_add_column',
1798
- tableName: 'ref',
1799
- column: {
1800
- name: 'test1',
1801
- type: 'integer',
1802
- primaryKey: false,
1803
- notNull: false,
1804
- autoincrement: false,
1805
- },
1806
- referenceData: 'ref_test1_user_new_age_fk;ref;test1;user;new_age;no action;no action',
1807
- },
1808
- ];
1809
- expect(libSQLCombineStatements(statements, json2)).toStrictEqual(
1810
- newJsonStatements,
1811
- );
1812
- });