orchid-orm 1.5.29 → 1.5.31

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 (59) hide show
  1. package/dist/index.d.ts +6 -14
  2. package/dist/index.js +26 -21
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +26 -21
  5. package/dist/index.mjs.map +1 -1
  6. package/package.json +12 -22
  7. package/.env.example +0 -1
  8. package/.turbo/turbo-check.log +0 -26
  9. package/.turbo/turbo-test.log +0 -26
  10. package/.turbo/turbo-test:ci.log +0 -26
  11. package/CHANGELOG.md +0 -382
  12. package/coverage/coverage-summary.json +0 -28
  13. package/jest-setup.ts +0 -11
  14. package/rollup.config.js +0 -18
  15. package/src/bin/bin.ts +0 -3
  16. package/src/bin/init.test.ts +0 -810
  17. package/src/bin/init.ts +0 -529
  18. package/src/codegen/appCodeUpdater.test.ts +0 -75
  19. package/src/codegen/appCodeUpdater.ts +0 -53
  20. package/src/codegen/createBaseTableFile.test.ts +0 -53
  21. package/src/codegen/createBaseTableFile.ts +0 -31
  22. package/src/codegen/fileChanges.ts +0 -41
  23. package/src/codegen/testUtils.ts +0 -56
  24. package/src/codegen/tsUtils.ts +0 -180
  25. package/src/codegen/updateMainFile.test.ts +0 -253
  26. package/src/codegen/updateMainFile.ts +0 -210
  27. package/src/codegen/updateTableFile/changeTable.test.ts +0 -804
  28. package/src/codegen/updateTableFile/changeTable.ts +0 -536
  29. package/src/codegen/updateTableFile/createTable.test.ts +0 -139
  30. package/src/codegen/updateTableFile/createTable.ts +0 -51
  31. package/src/codegen/updateTableFile/renameTable.test.ts +0 -124
  32. package/src/codegen/updateTableFile/renameTable.ts +0 -67
  33. package/src/codegen/updateTableFile/updateTableFile.ts +0 -22
  34. package/src/codegen/utils.ts +0 -13
  35. package/src/index.ts +0 -5
  36. package/src/orm.test.ts +0 -92
  37. package/src/orm.ts +0 -98
  38. package/src/relations/belongsTo.test.ts +0 -1122
  39. package/src/relations/belongsTo.ts +0 -352
  40. package/src/relations/hasAndBelongsToMany.test.ts +0 -1335
  41. package/src/relations/hasAndBelongsToMany.ts +0 -472
  42. package/src/relations/hasMany.test.ts +0 -2616
  43. package/src/relations/hasMany.ts +0 -401
  44. package/src/relations/hasOne.test.ts +0 -1701
  45. package/src/relations/hasOne.ts +0 -351
  46. package/src/relations/relations.test.ts +0 -37
  47. package/src/relations/relations.ts +0 -363
  48. package/src/relations/utils.ts +0 -162
  49. package/src/repo.test.ts +0 -200
  50. package/src/repo.ts +0 -119
  51. package/src/table.test.ts +0 -121
  52. package/src/table.ts +0 -184
  53. package/src/test-utils/test-db.ts +0 -32
  54. package/src/test-utils/test-tables.ts +0 -194
  55. package/src/test-utils/test-utils.ts +0 -119
  56. package/src/transaction.test.ts +0 -47
  57. package/src/transaction.ts +0 -27
  58. package/src/utils.ts +0 -9
  59. package/tsconfig.json +0 -14
@@ -1,804 +0,0 @@
1
- import fs from 'fs/promises';
2
- import { asMock, ast, makeTestWritten, tablePath } from '../testUtils';
3
- import { updateTableFile } from './updateTableFile';
4
- import path from 'path';
5
- import { columnTypes, newTableData, TableData } from 'pqb';
6
- import { RakeDbAst } from 'rake-db';
7
-
8
- jest.mock('fs/promises', () => ({
9
- mkdir: jest.fn(),
10
- readFile: jest.fn(),
11
- writeFile: jest.fn(),
12
- }));
13
-
14
- const baseTablePath = path.resolve('baseTable.ts');
15
- const baseTableName = 'BaseTable';
16
- const params = { baseTablePath, baseTableName, tablePath };
17
- const t = columnTypes;
18
-
19
- const testWritten = makeTestWritten(tablePath('some'));
20
-
21
- const tableData = newTableData();
22
-
23
- const change = (
24
- data: Partial<RakeDbAst.ChangeTableItem.Change>,
25
- ): RakeDbAst.ChangeTableItem.Change => ({
26
- type: 'change',
27
- from: {},
28
- to: {},
29
- ...data,
30
- });
31
-
32
- class Table {
33
- table = 'some';
34
- }
35
-
36
- describe('updateTableFile', () => {
37
- beforeEach(() => {
38
- jest.resetAllMocks();
39
- });
40
-
41
- it('should add a single column into empty columns list', async () => {
42
- asMock(fs.readFile)
43
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
44
-
45
- export class SomeTable extends BaseTable {
46
- table = 'some';
47
- columns = this.setColumns((t) => ({}));
48
- }`);
49
-
50
- await updateTableFile({
51
- ...params,
52
- ast: {
53
- ...ast.changeTable,
54
- shape: {
55
- name: { type: 'add', item: t.text(1, 10) },
56
- },
57
- },
58
- });
59
-
60
- testWritten(`import { BaseTable } from '../baseTable';
61
-
62
- export class SomeTable extends BaseTable {
63
- table = 'some';
64
- columns = this.setColumns((t) => ({
65
- name: t.text(1, 10),
66
- }));
67
- }`);
68
- });
69
-
70
- it('should add a single column', async () => {
71
- asMock(fs.readFile)
72
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
73
-
74
- export class SomeTable extends BaseTable {
75
- table = 'some';
76
- columns = this.setColumns((t) => ({
77
- id: t.serial().primaryKey(),
78
- }));
79
- }`);
80
-
81
- await updateTableFile({
82
- ...params,
83
- ast: {
84
- ...ast.changeTable,
85
- shape: {
86
- name: { type: 'add', item: t.text(1, 10) },
87
- },
88
- },
89
- });
90
-
91
- testWritten(`import { BaseTable } from '../baseTable';
92
-
93
- export class SomeTable extends BaseTable {
94
- table = 'some';
95
- columns = this.setColumns((t) => ({
96
- id: t.serial().primaryKey(),
97
- name: t.text(1, 10),
98
- }));
99
- }`);
100
- });
101
-
102
- it('should add multiple column', async () => {
103
- asMock(fs.readFile)
104
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
105
-
106
- export class SomeTable extends BaseTable {
107
- table = 'some';
108
- columns = this.setColumns((t) => ({
109
- id: t.serial().primaryKey(),
110
- }));
111
- }`);
112
-
113
- await updateTableFile({
114
- ...params,
115
- ast: {
116
- ...ast.changeTable,
117
- shape: {
118
- name: { type: 'add', item: t.text(1, 10) },
119
- active: { type: 'add', item: t.boolean() },
120
- },
121
- },
122
- });
123
-
124
- testWritten(`import { BaseTable } from '../baseTable';
125
-
126
- export class SomeTable extends BaseTable {
127
- table = 'some';
128
- columns = this.setColumns((t) => ({
129
- id: t.serial().primaryKey(),
130
- name: t.text(1, 10),
131
- active: t.boolean(),
132
- }));
133
- }`);
134
- });
135
-
136
- it('should insert ending comma before adding', async () => {
137
- asMock(fs.readFile)
138
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
139
-
140
- export class SomeTable extends BaseTable {
141
- table = 'some';
142
- columns = this.setColumns((t) => ({
143
- id: t.serial().primaryKey()
144
- }));
145
- }`);
146
-
147
- await updateTableFile({
148
- ...params,
149
- ast: {
150
- ...ast.changeTable,
151
- shape: {
152
- name: { type: 'add', item: t.text(1, 10) },
153
- active: { type: 'add', item: t.boolean() },
154
- },
155
- },
156
- });
157
-
158
- testWritten(`import { BaseTable } from '../baseTable';
159
-
160
- export class SomeTable extends BaseTable {
161
- table = 'some';
162
- columns = this.setColumns((t) => ({
163
- id: t.serial().primaryKey(),
164
- name: t.text(1, 10),
165
- active: t.boolean(),
166
- }));
167
- }`);
168
- });
169
-
170
- it('should drop column', async () => {
171
- asMock(fs.readFile)
172
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
173
-
174
- export class SomeTable extends BaseTable {
175
- table = 'some';
176
- columns = this.setColumns((t) => ({
177
- id: t.serial().primaryKey(),
178
- name: t.text(),
179
- active: t.boolean(),
180
- }));
181
- }`);
182
-
183
- await updateTableFile({
184
- ...params,
185
- ast: {
186
- ...ast.changeTable,
187
- shape: {
188
- name: { type: 'drop', item: t.text(1, 10) },
189
- },
190
- },
191
- });
192
-
193
- testWritten(`import { BaseTable } from '../baseTable';
194
-
195
- export class SomeTable extends BaseTable {
196
- table = 'some';
197
- columns = this.setColumns((t) => ({
198
- id: t.serial().primaryKey(),
199
- active: t.boolean(),
200
- }));
201
- }`);
202
- });
203
-
204
- it('should drop column at the end', async () => {
205
- asMock(fs.readFile)
206
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
207
-
208
- export class SomeTable extends BaseTable {
209
- table = 'some';
210
- columns = this.setColumns((t) => ({
211
- id: t.serial().primaryKey(),
212
- name: t.text(),
213
- }));
214
- }`);
215
-
216
- await updateTableFile({
217
- ...params,
218
- ast: {
219
- ...ast.changeTable,
220
- shape: {
221
- name: { type: 'drop', item: t.text(1, 10) },
222
- },
223
- },
224
- });
225
-
226
- testWritten(`import { BaseTable } from '../baseTable';
227
-
228
- export class SomeTable extends BaseTable {
229
- table = 'some';
230
- columns = this.setColumns((t) => ({
231
- id: t.serial().primaryKey(),
232
- }));
233
- }`);
234
- });
235
-
236
- it('should change column type', async () => {
237
- asMock(fs.readFile)
238
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
239
-
240
- export class SomeTable extends BaseTable {
241
- table = 'some';
242
- columns = this.setColumns((t) => ({
243
- name: t.integer(),
244
- }));
245
- }`);
246
-
247
- await updateTableFile({
248
- ...params,
249
- ast: {
250
- ...ast.changeTable,
251
- shape: {
252
- name: {
253
- type: 'change',
254
- from: {},
255
- to: {
256
- column: t.text(1, 10),
257
- type: 'text',
258
- },
259
- },
260
- },
261
- },
262
- });
263
-
264
- testWritten(`import { BaseTable } from '../baseTable';
265
-
266
- export class SomeTable extends BaseTable {
267
- table = 'some';
268
- columns = this.setColumns((t) => ({
269
- name: t.text(1, 10),
270
- }));
271
- }`);
272
- });
273
-
274
- it('should change properties', async () => {
275
- asMock(fs.readFile)
276
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
277
-
278
- export class SomeTable extends BaseTable {
279
- table = 'some';
280
- columns = this.setColumns((t) => ({
281
- changeCollate: t.text().collate('one'),
282
- addCollate: t.text(),
283
- dropCollate: t.text().collate('one'),
284
- changeDefault: t.text().default('one'),
285
- addDefault: t.text(),
286
- dropDefault: t.text().default('one'),
287
- addNullable: t.text(),
288
- dropNullable: t.text().nullable(),
289
- changeCompression: t.text().compression('one'),
290
- addCompression: t.text(),
291
- dropCompression: t.text().compression('one'),
292
- addPrimaryKey: t.text(),
293
- dropPrimaryKey: t.text().primaryKey(),
294
- }));
295
- }`);
296
-
297
- await updateTableFile({
298
- ...params,
299
- ast: {
300
- ...ast.changeTable,
301
- shape: {
302
- changeCollate: change({ to: { collate: 'two' } }),
303
- addCollate: change({ to: { collate: 'two' } }),
304
- dropCollate: change({ from: { collate: 'two' } }),
305
- changeDefault: change({ to: { default: 'two' } }),
306
- addDefault: change({ to: { default: 'two' } }),
307
- dropDefault: change({ from: { default: 'two' } }),
308
- addNullable: change({ to: { nullable: true } }),
309
- dropNullable: change({ from: { nullable: true } }),
310
- changeCompression: change({ to: { compression: 'two' } }),
311
- addCompression: change({ to: { compression: 'two' } }),
312
- dropCompression: change({ from: { compression: 'two' } }),
313
- addPrimaryKey: change({ to: { primaryKey: true } }),
314
- dropPrimaryKey: change({ from: { primaryKey: true } }),
315
- },
316
- },
317
- });
318
-
319
- testWritten(`import { BaseTable } from '../baseTable';
320
-
321
- export class SomeTable extends BaseTable {
322
- table = 'some';
323
- columns = this.setColumns((t) => ({
324
- changeCollate: t.text().collate('two'),
325
- addCollate: t.text().collate('two'),
326
- dropCollate: t.text(),
327
- changeDefault: t.text().default('two'),
328
- addDefault: t.text().default('two'),
329
- dropDefault: t.text(),
330
- addNullable: t.text().nullable(),
331
- dropNullable: t.text(),
332
- changeCompression: t.text().compression('two'),
333
- addCompression: t.text().compression('two'),
334
- dropCompression: t.text(),
335
- addPrimaryKey: t.text().primaryKey(),
336
- dropPrimaryKey: t.text(),
337
- }));
338
- }`);
339
- });
340
-
341
- describe('primaryKey', () => {
342
- const result = `import { BaseTable } from '../baseTable';
343
-
344
- export class SomeTable extends BaseTable {
345
- table = 'some';
346
- columns = this.setColumns((t) => ({
347
- ...t.primaryKey(['one', 'two'], { name: 'name' }),
348
- }));
349
- }`;
350
-
351
- const add = {
352
- ...tableData,
353
- primaryKey: {
354
- columns: ['one', 'two'],
355
- options: { name: 'name' },
356
- },
357
- };
358
-
359
- it('should change primaryKey', async () => {
360
- asMock(fs.readFile)
361
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
362
-
363
- export class SomeTable extends BaseTable {
364
- table = 'some';
365
- columns = this.setColumns((t) => ({
366
- ...t.primaryKey(['foo', 'bar'], { name: 'baz' }),
367
- }));
368
- }`);
369
-
370
- await updateTableFile({
371
- ...params,
372
- ast: {
373
- ...ast.changeTable,
374
- add,
375
- },
376
- });
377
-
378
- testWritten(result);
379
- });
380
-
381
- it('should add primaryKey', async () => {
382
- asMock(fs.readFile)
383
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
384
-
385
- export class SomeTable extends BaseTable {
386
- table = 'some';
387
- columns = this.setColumns((t) => ({
388
- }));
389
- }`);
390
-
391
- await updateTableFile({
392
- ...params,
393
- ast: {
394
- ...ast.changeTable,
395
- add,
396
- },
397
- });
398
-
399
- testWritten(result);
400
- });
401
- });
402
-
403
- describe('indexes', () => {
404
- it('should change column indexes', async () => {
405
- asMock(fs.readFile)
406
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
407
-
408
- export class SomeTable extends BaseTable {
409
- table = 'some';
410
- columns = this.setColumns((t) => ({
411
- name: t.text().index({ order: 'one' }).index({ collate: 'en_US' })
412
- }));
413
- }`);
414
-
415
- await updateTableFile({
416
- ...params,
417
- ast: {
418
- ...ast.changeTable,
419
- shape: {
420
- name: {
421
- type: 'change',
422
- from: { indexes: [{ order: 'one' }, { collate: 'en_US' }] },
423
- to: { indexes: [{ order: 'two' }, { collate: 'en_UK' }] },
424
- },
425
- },
426
- },
427
- });
428
-
429
- testWritten(`import { BaseTable } from '../baseTable';
430
-
431
- export class SomeTable extends BaseTable {
432
- table = 'some';
433
- columns = this.setColumns((t) => ({
434
- name: t.text().index({
435
- order: 'two',
436
- }).index({
437
- collate: 'en_UK',
438
- }),
439
- }));
440
- }`);
441
- });
442
-
443
- it('should add column indexes', async () => {
444
- asMock(fs.readFile)
445
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
446
-
447
- export class SomeTable extends BaseTable {
448
- table = 'some';
449
- columns = this.setColumns((t) => ({
450
- name: t.text(),
451
- }));
452
- }`);
453
-
454
- await updateTableFile({
455
- ...params,
456
- ast: {
457
- ...ast.changeTable,
458
- shape: {
459
- name: {
460
- type: 'change',
461
- from: {},
462
- to: { indexes: [{ order: 'two' }, { collate: 'fr_FR' }] },
463
- },
464
- },
465
- },
466
- });
467
-
468
- testWritten(`import { BaseTable } from '../baseTable';
469
-
470
- export class SomeTable extends BaseTable {
471
- table = 'some';
472
- columns = this.setColumns((t) => ({
473
- name: t.text().index({
474
- order: 'two',
475
- }).index({
476
- collate: 'fr_FR',
477
- }),
478
- }));
479
- }`);
480
- });
481
-
482
- const result = `import { BaseTable } from '../baseTable';
483
-
484
- export class SomeTable extends BaseTable {
485
- table = 'some';
486
- columns = this.setColumns((t) => ({
487
- ...t.index(['6']),
488
- ...t.index(['7', '8']),
489
- ...t.index(
490
- [
491
- '9',
492
- {
493
- column: '10',
494
- order: 'new',
495
- },
496
- ],
497
- {
498
- name: 'newName',
499
- },
500
- ),
501
- }));
502
- }`;
503
-
504
- const add = {
505
- ...tableData,
506
- indexes: [
507
- {
508
- columns: [{ column: '6' }],
509
- options: {},
510
- },
511
- {
512
- columns: [{ column: '7' }, { column: '8' }],
513
- options: {},
514
- },
515
- {
516
- columns: [{ column: '9' }, { column: '10', order: 'new' }],
517
- options: { name: 'newName' },
518
- },
519
- ],
520
- };
521
-
522
- it('should change indexes', async () => {
523
- asMock(fs.readFile)
524
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
525
-
526
- export class SomeTable extends BaseTable {
527
- table = 'some';
528
- columns = this.setColumns((t) => ({
529
- ...t.index('1'),
530
- ...t.index(['2', '3']),
531
- ...t.index(['4', { column: '5', order: 'order' }], { name: 'indexName' }),
532
- }));
533
- }`);
534
-
535
- await updateTableFile({
536
- ...params,
537
- ast: {
538
- ...ast.changeTable,
539
- drop: {
540
- ...tableData,
541
- indexes: [
542
- {
543
- columns: [{ column: '1' }],
544
- options: {},
545
- },
546
- {
547
- columns: [{ column: '2' }, { column: '3' }],
548
- options: {},
549
- },
550
- {
551
- columns: [{ column: '4' }, { column: '5', order: 'order' }],
552
- options: { name: 'indexName' },
553
- },
554
- ],
555
- },
556
- add,
557
- },
558
- });
559
-
560
- testWritten(result);
561
- });
562
-
563
- it('should add indexes', async () => {
564
- asMock(fs.readFile)
565
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
566
-
567
- export class SomeTable extends BaseTable {
568
- table = 'some';
569
- columns = this.setColumns((t) => ({
570
- }));
571
- }`);
572
-
573
- await updateTableFile({
574
- ...params,
575
- ast: {
576
- ...ast.changeTable,
577
- add,
578
- },
579
- });
580
-
581
- testWritten(result);
582
- });
583
- });
584
-
585
- describe('foreignKeys', () => {
586
- it('should change column foreignKeys', async () => {
587
- asMock(fs.readFile)
588
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
589
-
590
- export class SomeTable extends BaseTable {
591
- table = 'some';
592
- columns = this.setColumns((t) => ({
593
- name: t.text().foreignKey('a', 'b').foreignKey('c', 'd')
594
- }));
595
- }`);
596
-
597
- await updateTableFile({
598
- ...params,
599
- ast: {
600
- ...ast.changeTable,
601
- shape: {
602
- name: {
603
- type: 'change',
604
- from: {
605
- foreignKeys: [
606
- { table: 'a', columns: ['b'] },
607
- { table: 'c', columns: ['d'] },
608
- ],
609
- },
610
- to: {
611
- foreignKeys: [
612
- { table: 'e', columns: ['f'] },
613
- { table: 'g', columns: ['h'] },
614
- ],
615
- },
616
- },
617
- },
618
- },
619
- });
620
-
621
- testWritten(`import { BaseTable } from '../baseTable';
622
-
623
- export class SomeTable extends BaseTable {
624
- table = 'some';
625
- columns = this.setColumns((t) => ({
626
- name: t.text().foreignKey('e', 'f').foreignKey('g', 'h'),
627
- }));
628
- }`);
629
- });
630
-
631
- it('should add column indexes', async () => {
632
- asMock(fs.readFile)
633
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
634
-
635
- export class SomeTable extends BaseTable {
636
- table = 'some';
637
- columns = this.setColumns((t) => ({
638
- name: t.text(),
639
- }));
640
- }`);
641
-
642
- await updateTableFile({
643
- ...params,
644
- ast: {
645
- ...ast.changeTable,
646
- shape: {
647
- name: {
648
- type: 'change',
649
- from: {},
650
- to: {
651
- foreignKeys: [
652
- { table: 'e', columns: ['f'] },
653
- { table: 'g', columns: ['h'] },
654
- ],
655
- },
656
- },
657
- },
658
- },
659
- });
660
-
661
- testWritten(`import { BaseTable } from '../baseTable';
662
-
663
- export class SomeTable extends BaseTable {
664
- table = 'some';
665
- columns = this.setColumns((t) => ({
666
- name: t.text().foreignKey('e', 'f').foreignKey('g', 'h'),
667
- }));
668
- }`);
669
- });
670
-
671
- const result = `import { BaseTable } from '../baseTable';
672
-
673
- export class SomeTable extends BaseTable {
674
- table = 'some';
675
- columns = this.setColumns((t) => ({
676
- ...t.foreignKey(
677
- ['7'],
678
- 'some',
679
- ['8'],
680
- {
681
- name: 'first',
682
- match: 'PARTIAL',
683
- },
684
- ),
685
- ...t.foreignKey(
686
- ['9', '10'],
687
- ()=>Table,
688
- ['11', '12'],
689
- {
690
- name: 'second',
691
- match: 'SIMPLE',
692
- onUpdate: 'NO ACTION',
693
- },
694
- ),
695
- }));
696
- }`;
697
-
698
- const add = {
699
- ...tableData,
700
- foreignKeys: [
701
- {
702
- columns: ['7'],
703
- fnOrTable: 'some',
704
- foreignColumns: ['8'],
705
- options: {
706
- name: 'first',
707
- match: 'PARTIAL',
708
- },
709
- },
710
- {
711
- columns: ['9', '10'],
712
- fnOrTable: () => Table,
713
- foreignColumns: ['11', '12'],
714
- options: {
715
- name: 'second',
716
- match: 'SIMPLE',
717
- onUpdate: 'NO ACTION',
718
- },
719
- },
720
- ],
721
- };
722
-
723
- it('should change foreignKeys', async () => {
724
- asMock(fs.readFile)
725
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
726
-
727
- export class SomeTable extends BaseTable {
728
- table = 'some';
729
- columns = this.setColumns((t) => ({
730
- ...t.foreignKey(
731
- ['1'],
732
- () => Table,
733
- ['2'],
734
- ),
735
- ...t.foreignKey(
736
- ['3', '4'],
737
- 'some',
738
- ['5', '6'],
739
- {
740
- name: 'foreignKeyName',
741
- match: 'FULL',
742
- onUpdate: 'CASCADE',
743
- onDelete: 'CASCADE',
744
- },
745
- ),
746
- }));
747
- }`);
748
-
749
- await updateTableFile({
750
- ...params,
751
- ast: {
752
- ...ast.changeTable,
753
- drop: {
754
- ...tableData,
755
- foreignKeys: [
756
- {
757
- columns: ['1'],
758
- fnOrTable: () => Table,
759
- foreignColumns: ['2'],
760
- options: {},
761
- },
762
- {
763
- columns: ['3', '4'],
764
- fnOrTable: 'some',
765
- foreignColumns: ['5', '6'],
766
- options: {
767
- name: 'foreignKeyName',
768
- match: 'FULL',
769
- onUpdate: 'CASCADE',
770
- onDelete: 'CASCADE',
771
- dropMode: 'CASCADE',
772
- },
773
- },
774
- ],
775
- },
776
- add: add as TableData,
777
- },
778
- });
779
-
780
- testWritten(result);
781
- });
782
-
783
- it('should add foreignKeys', async () => {
784
- asMock(fs.readFile)
785
- .mockResolvedValue(`import { BaseTable } from '../baseTable';
786
-
787
- export class SomeTable extends BaseTable {
788
- table = 'some';
789
- columns = this.setColumns((t) => ({
790
- }));
791
- }`);
792
-
793
- await updateTableFile({
794
- ...params,
795
- ast: {
796
- ...ast.changeTable,
797
- add: add as TableData,
798
- },
799
- });
800
-
801
- testWritten(result);
802
- });
803
- });
804
- });