@payloadcms/db-sqlite 3.0.0-canary.6d066c2 → 3.0.0-canary.79ab53e

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/connect.d.ts.map +1 -1
  3. package/dist/connect.js +15 -3
  4. package/dist/connect.js.map +1 -1
  5. package/dist/createMigration.d.ts.map +1 -1
  6. package/dist/createMigration.js +5 -2
  7. package/dist/createMigration.js.map +1 -1
  8. package/dist/defaultSnapshot.d.ts +1 -1
  9. package/dist/defaultSnapshot.d.ts.map +1 -1
  10. package/dist/defaultSnapshot.js +1 -1
  11. package/dist/defaultSnapshot.js.map +1 -1
  12. package/dist/getMigrationTemplate.d.ts +1 -0
  13. package/dist/getMigrationTemplate.d.ts.map +1 -1
  14. package/dist/getMigrationTemplate.js +3 -2
  15. package/dist/getMigrationTemplate.js.map +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +3 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/init.d.ts.map +1 -1
  20. package/dist/init.js +12 -1
  21. package/dist/init.js.map +1 -1
  22. package/dist/requireDrizzleKit.js +1 -1
  23. package/dist/requireDrizzleKit.js.map +1 -1
  24. package/dist/schema/build.d.ts +16 -16
  25. package/dist/schema/build.d.ts.map +1 -1
  26. package/dist/schema/build.js +14 -6
  27. package/dist/schema/build.js.map +1 -1
  28. package/dist/schema/createIndex.d.ts +2 -2
  29. package/dist/schema/createIndex.d.ts.map +1 -1
  30. package/dist/schema/createIndex.js +4 -2
  31. package/dist/schema/createIndex.js.map +1 -1
  32. package/dist/schema/traverseFields.d.ts +7 -2
  33. package/dist/schema/traverseFields.d.ts.map +1 -1
  34. package/dist/schema/traverseFields.js +167 -69
  35. package/dist/schema/traverseFields.js.map +1 -1
  36. package/dist/schema/withDefault.d.ts +4 -0
  37. package/dist/schema/withDefault.d.ts.map +1 -0
  38. package/dist/schema/withDefault.js +12 -0
  39. package/dist/schema/withDefault.js.map +1 -0
  40. package/dist/types.d.ts +20 -16
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js.map +1 -1
  43. package/package.json +10 -8
@@ -1,6 +1,6 @@
1
- /* eslint-disable no-param-reassign */ import { createTableName, hasLocalesTable, validateExistingBlockIsIdentical } from '@payloadcms/drizzle';
1
+ import { createTableName, hasLocalesTable, validateExistingBlockIsIdentical } from '@payloadcms/drizzle';
2
2
  import { relations } from 'drizzle-orm';
3
- import { SQLiteIntegerBuilder, SQLiteNumericBuilder, SQLiteTextBuilder, foreignKey, index, integer, numeric, text } from 'drizzle-orm/sqlite-core';
3
+ import { foreignKey, index, integer, numeric, SQLiteIntegerBuilder, SQLiteNumericBuilder, SQLiteTextBuilder, text } from 'drizzle-orm/sqlite-core';
4
4
  import { InvalidConfiguration } from 'payload';
5
5
  import { fieldAffectsData, optionIsObject } from 'payload/shared';
6
6
  import toSnakeCase from 'to-snake-case';
@@ -8,7 +8,8 @@ import { buildTable } from './build.js';
8
8
  import { createIndex } from './createIndex.js';
9
9
  import { getIDColumn } from './getIDColumn.js';
10
10
  import { idToUUID } from './idToUUID.js';
11
- export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, locales, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions })=>{
11
+ import { withDefault } from './withDefault.js';
12
+ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, locales, localesColumns, localesIndexes, newTableName, parentTableName, relationships, relationsToBuild, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, withinLocalizedArrayOrBlock })=>{
12
13
  let hasLocalizedField = false;
13
14
  let hasLocalizedRelationshipField = false;
14
15
  let hasManyTextField = false;
@@ -16,11 +17,19 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
16
17
  let hasManyNumberField = false;
17
18
  let hasLocalizedManyNumberField = false;
18
19
  let parentIDColType = 'integer';
19
- if (columns.id instanceof SQLiteIntegerBuilder) parentIDColType = 'integer';
20
- if (columns.id instanceof SQLiteNumericBuilder) parentIDColType = 'numeric';
21
- if (columns.id instanceof SQLiteTextBuilder) parentIDColType = 'text';
20
+ if (columns.id instanceof SQLiteIntegerBuilder) {
21
+ parentIDColType = 'integer';
22
+ }
23
+ if (columns.id instanceof SQLiteNumericBuilder) {
24
+ parentIDColType = 'numeric';
25
+ }
26
+ if (columns.id instanceof SQLiteTextBuilder) {
27
+ parentIDColType = 'text';
28
+ }
22
29
  fields.forEach((field)=>{
23
- if ('name' in field && field.name === 'id') return;
30
+ if ('name' in field && field.name === 'id') {
31
+ return;
32
+ }
24
33
  let columnName;
25
34
  let fieldName;
26
35
  let targetTable = columns;
@@ -63,7 +72,8 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
63
72
  case 'text':
64
73
  {
65
74
  if (field.hasMany) {
66
- if (field.localized) {
75
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
76
+ if (isLocalized) {
67
77
  hasLocalizedManyTextField = true;
68
78
  }
69
79
  if (field.index) {
@@ -75,7 +85,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
75
85
  throw new InvalidConfiguration('Unique is not supported in SQLite for hasMany text fields.');
76
86
  }
77
87
  } else {
78
- targetTable[fieldName] = text(columnName);
88
+ targetTable[fieldName] = withDefault(text(columnName), field);
79
89
  }
80
90
  break;
81
91
  }
@@ -83,13 +93,14 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
83
93
  case 'code':
84
94
  case 'textarea':
85
95
  {
86
- targetTable[fieldName] = text(columnName);
96
+ targetTable[fieldName] = withDefault(text(columnName), field);
87
97
  break;
88
98
  }
89
99
  case 'number':
90
100
  {
91
101
  if (field.hasMany) {
92
- if (field.localized) {
102
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
103
+ if (isLocalized) {
93
104
  hasLocalizedManyNumberField = true;
94
105
  }
95
106
  if (field.index) {
@@ -101,21 +112,21 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
101
112
  throw new InvalidConfiguration('Unique is not supported in Postgres for hasMany number fields.');
102
113
  }
103
114
  } else {
104
- targetTable[fieldName] = numeric(columnName);
115
+ targetTable[fieldName] = withDefault(numeric(columnName), field);
105
116
  }
106
117
  break;
107
118
  }
108
119
  case 'richText':
109
120
  case 'json':
110
121
  {
111
- targetTable[fieldName] = text(columnName, {
122
+ targetTable[fieldName] = withDefault(text(columnName, {
112
123
  mode: 'json'
113
- });
124
+ }), field);
114
125
  break;
115
126
  }
116
127
  case 'date':
117
128
  {
118
- targetTable[fieldName] = text(columnName);
129
+ targetTable[fieldName] = withDefault(text(columnName), field);
119
130
  break;
120
131
  }
121
132
  case 'point':
@@ -164,7 +175,8 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
164
175
  }).onDelete('cascade'),
165
176
  parentIdx: (cols)=>index(`${selectTableName}_parent_idx`).on(cols.parent)
166
177
  };
167
- if (field.localized) {
178
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
179
+ if (isLocalized) {
168
180
  baseColumns.locale = text('locale', {
169
181
  enum: locales
170
182
  }).notNull();
@@ -202,17 +214,17 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
202
214
  })
203
215
  }));
204
216
  } else {
205
- targetTable[fieldName] = text(fieldName, {
217
+ targetTable[fieldName] = withDefault(text(fieldName, {
206
218
  enum: options
207
- });
219
+ }), field);
208
220
  }
209
221
  break;
210
222
  }
211
223
  case 'checkbox':
212
224
  {
213
- targetTable[fieldName] = integer(columnName, {
225
+ targetTable[fieldName] = withDefault(integer(columnName, {
214
226
  mode: 'boolean'
215
- });
227
+ }), field);
216
228
  break;
217
229
  }
218
230
  case 'array':
@@ -247,31 +259,46 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
247
259
  }).onDelete('cascade'),
248
260
  _parentIDIdx: (cols)=>index(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
249
261
  };
250
- if (field.localized && adapter.payload.config.localization) {
262
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
263
+ if (isLocalized) {
251
264
  baseColumns._locale = text('_locale', {
252
265
  enum: locales
253
266
  }).notNull();
254
267
  baseExtraConfig._localeIdx = (cols)=>index(`${arrayTableName}_locale_idx`).on(cols._locale);
255
268
  }
256
- const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = buildTable({
269
+ const { hasLocalizedManyNumberField: subHasLocalizedManyNumberField, hasLocalizedManyTextField: subHasLocalizedManyTextField, hasLocalizedRelationshipField: subHasLocalizedRelationshipField, hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = buildTable({
257
270
  adapter,
258
271
  baseColumns,
259
272
  baseExtraConfig,
260
273
  disableNotNull: disableNotNullFromHere,
261
274
  disableUnique,
262
275
  fields: disableUnique ? idToUUID(field.fields) : field.fields,
263
- rootRelationsToBuild,
264
276
  rootRelationships: relationships,
277
+ rootRelationsToBuild,
265
278
  rootTableIDColType,
266
279
  rootTableName,
267
280
  tableName: arrayTableName,
268
- versions
281
+ versions,
282
+ withinLocalizedArrayOrBlock: isLocalized
269
283
  });
284
+ if (subHasLocalizedManyNumberField) {
285
+ hasLocalizedManyNumberField = subHasLocalizedManyNumberField;
286
+ }
287
+ if (subHasLocalizedRelationshipField) {
288
+ hasLocalizedRelationshipField = subHasLocalizedRelationshipField;
289
+ }
290
+ if (subHasLocalizedManyTextField) {
291
+ hasLocalizedManyTextField = subHasLocalizedManyTextField;
292
+ }
270
293
  if (subHasManyTextField) {
271
- if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
294
+ if (!hasManyTextField || subHasManyTextField === 'index') {
295
+ hasManyTextField = subHasManyTextField;
296
+ }
272
297
  }
273
298
  if (subHasManyNumberField) {
274
- if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
299
+ if (!hasManyNumberField || subHasManyNumberField === 'index') {
300
+ hasManyNumberField = subHasManyNumberField;
301
+ }
275
302
  }
276
303
  relationsToBuild.set(fieldName, {
277
304
  type: 'many',
@@ -343,7 +370,6 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
343
370
  };
344
371
  const baseExtraConfig = {
345
372
  _orderIdx: (cols)=>index(`${blockTableName}_order_idx`).on(cols._order),
346
- _parentIDIdx: (cols)=>index(`${blockTableName}_parent_id_idx`).on(cols._parentID),
347
373
  _parentIdFk: (cols)=>foreignKey({
348
374
  name: `${blockTableName}_parent_id_fk`,
349
375
  columns: [
@@ -353,33 +379,49 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
353
379
  adapter.tables[rootTableName].id
354
380
  ]
355
381
  }).onDelete('cascade'),
382
+ _parentIDIdx: (cols)=>index(`${blockTableName}_parent_id_idx`).on(cols._parentID),
356
383
  _pathIdx: (cols)=>index(`${blockTableName}_path_idx`).on(cols._path)
357
384
  };
358
- if (field.localized && adapter.payload.config.localization) {
385
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
386
+ if (isLocalized) {
359
387
  baseColumns._locale = text('_locale', {
360
388
  enum: locales
361
389
  }).notNull();
362
390
  baseExtraConfig._localeIdx = (cols)=>index(`${blockTableName}_locale_idx`).on(cols._locale);
363
391
  }
364
- const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = buildTable({
392
+ const { hasLocalizedManyNumberField: subHasLocalizedManyNumberField, hasLocalizedManyTextField: subHasLocalizedManyTextField, hasLocalizedRelationshipField: subHasLocalizedRelationshipField, hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = buildTable({
365
393
  adapter,
366
394
  baseColumns,
367
395
  baseExtraConfig,
368
396
  disableNotNull: disableNotNullFromHere,
369
397
  disableUnique,
370
398
  fields: disableUnique ? idToUUID(block.fields) : block.fields,
371
- rootRelationsToBuild,
372
399
  rootRelationships: relationships,
400
+ rootRelationsToBuild,
373
401
  rootTableIDColType,
374
402
  rootTableName,
375
403
  tableName: blockTableName,
376
- versions
404
+ versions,
405
+ withinLocalizedArrayOrBlock: isLocalized
377
406
  });
407
+ if (subHasLocalizedManyNumberField) {
408
+ hasLocalizedManyNumberField = subHasLocalizedManyNumberField;
409
+ }
410
+ if (subHasLocalizedRelationshipField) {
411
+ hasLocalizedRelationshipField = subHasLocalizedRelationshipField;
412
+ }
413
+ if (subHasLocalizedManyTextField) {
414
+ hasLocalizedManyTextField = subHasLocalizedManyTextField;
415
+ }
378
416
  if (subHasManyTextField) {
379
- if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
417
+ if (!hasManyTextField || subHasManyTextField === 'index') {
418
+ hasManyTextField = subHasManyTextField;
419
+ }
380
420
  }
381
421
  if (subHasManyNumberField) {
382
- if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
422
+ if (!hasManyNumberField || subHasManyNumberField === 'index') {
423
+ hasManyNumberField = subHasManyNumberField;
424
+ }
383
425
  }
384
426
  adapter.relations[`relations_${blockTableName}`] = relations(adapter.tables[blockTableName], ({ many, one })=>{
385
427
  const result = {
@@ -457,19 +499,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
457
499
  localesIndexes,
458
500
  newTableName,
459
501
  parentTableName,
460
- relationsToBuild,
461
502
  relationships,
503
+ relationsToBuild,
462
504
  rootRelationsToBuild,
463
505
  rootTableIDColType,
464
506
  rootTableName,
465
- versions
507
+ versions,
508
+ withinLocalizedArrayOrBlock
466
509
  });
467
- if (groupHasLocalizedField) hasLocalizedField = true;
468
- if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
469
- if (groupHasManyTextField) hasManyTextField = true;
470
- if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true;
471
- if (groupHasManyNumberField) hasManyNumberField = true;
472
- if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
510
+ if (groupHasLocalizedField) {
511
+ hasLocalizedField = true;
512
+ }
513
+ if (groupHasLocalizedRelationshipField) {
514
+ hasLocalizedRelationshipField = true;
515
+ }
516
+ if (groupHasManyTextField) {
517
+ hasManyTextField = true;
518
+ }
519
+ if (groupHasLocalizedManyTextField) {
520
+ hasLocalizedManyTextField = true;
521
+ }
522
+ if (groupHasManyNumberField) {
523
+ hasManyNumberField = true;
524
+ }
525
+ if (groupHasLocalizedManyNumberField) {
526
+ hasLocalizedManyNumberField = true;
527
+ }
473
528
  break;
474
529
  }
475
530
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
@@ -488,19 +543,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
488
543
  localesIndexes,
489
544
  newTableName: `${parentTableName}_${columnName}`,
490
545
  parentTableName,
491
- relationsToBuild,
492
546
  relationships,
547
+ relationsToBuild,
493
548
  rootRelationsToBuild,
494
549
  rootTableIDColType,
495
550
  rootTableName,
496
- versions
551
+ versions,
552
+ withinLocalizedArrayOrBlock
497
553
  });
498
- if (groupHasLocalizedField) hasLocalizedField = true;
499
- if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
500
- if (groupHasManyTextField) hasManyTextField = true;
501
- if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true;
502
- if (groupHasManyNumberField) hasManyNumberField = true;
503
- if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
554
+ if (groupHasLocalizedField) {
555
+ hasLocalizedField = true;
556
+ }
557
+ if (groupHasLocalizedRelationshipField) {
558
+ hasLocalizedRelationshipField = true;
559
+ }
560
+ if (groupHasManyTextField) {
561
+ hasManyTextField = true;
562
+ }
563
+ if (groupHasLocalizedManyTextField) {
564
+ hasLocalizedManyTextField = true;
565
+ }
566
+ if (groupHasManyNumberField) {
567
+ hasManyNumberField = true;
568
+ }
569
+ if (groupHasLocalizedManyNumberField) {
570
+ hasLocalizedManyNumberField = true;
571
+ }
504
572
  break;
505
573
  }
506
574
  case 'tabs':
@@ -524,19 +592,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
524
592
  localesIndexes,
525
593
  newTableName,
526
594
  parentTableName,
527
- relationsToBuild,
528
595
  relationships,
596
+ relationsToBuild,
529
597
  rootRelationsToBuild,
530
598
  rootTableIDColType,
531
599
  rootTableName,
532
- versions
600
+ versions,
601
+ withinLocalizedArrayOrBlock
533
602
  });
534
- if (tabHasLocalizedField) hasLocalizedField = true;
535
- if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
536
- if (tabHasManyTextField) hasManyTextField = true;
537
- if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true;
538
- if (tabHasManyNumberField) hasManyNumberField = true;
539
- if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
603
+ if (tabHasLocalizedField) {
604
+ hasLocalizedField = true;
605
+ }
606
+ if (tabHasLocalizedRelationshipField) {
607
+ hasLocalizedRelationshipField = true;
608
+ }
609
+ if (tabHasManyTextField) {
610
+ hasManyTextField = true;
611
+ }
612
+ if (tabHasLocalizedManyTextField) {
613
+ hasLocalizedManyTextField = true;
614
+ }
615
+ if (tabHasManyNumberField) {
616
+ hasManyNumberField = true;
617
+ }
618
+ if (tabHasLocalizedManyNumberField) {
619
+ hasLocalizedManyNumberField = true;
620
+ }
540
621
  break;
541
622
  }
542
623
  case 'row':
@@ -558,26 +639,39 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
558
639
  localesIndexes,
559
640
  newTableName,
560
641
  parentTableName,
561
- relationsToBuild,
562
642
  relationships,
643
+ relationsToBuild,
563
644
  rootRelationsToBuild,
564
645
  rootTableIDColType,
565
646
  rootTableName,
566
- versions
647
+ versions,
648
+ withinLocalizedArrayOrBlock
567
649
  });
568
- if (rowHasLocalizedField) hasLocalizedField = true;
569
- if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
570
- if (rowHasManyTextField) hasManyTextField = true;
571
- if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true;
572
- if (rowHasManyNumberField) hasManyNumberField = true;
573
- if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
650
+ if (rowHasLocalizedField) {
651
+ hasLocalizedField = true;
652
+ }
653
+ if (rowHasLocalizedRelationshipField) {
654
+ hasLocalizedRelationshipField = true;
655
+ }
656
+ if (rowHasManyTextField) {
657
+ hasManyTextField = true;
658
+ }
659
+ if (rowHasLocalizedManyTextField) {
660
+ hasLocalizedManyTextField = true;
661
+ }
662
+ if (rowHasManyNumberField) {
663
+ hasManyNumberField = true;
664
+ }
665
+ if (rowHasLocalizedManyNumberField) {
666
+ hasLocalizedManyNumberField = true;
667
+ }
574
668
  break;
575
669
  }
576
670
  case 'relationship':
577
671
  case 'upload':
578
672
  if (Array.isArray(field.relationTo)) {
579
673
  field.relationTo.forEach((relation)=>relationships.add(relation));
580
- } else if (field.type === 'relationship' && field.hasMany) {
674
+ } else if (field.hasMany) {
581
675
  relationships.add(field.relationTo);
582
676
  } else {
583
677
  // simple relationships get a column on the targetTable with a foreign key to the relationTo table
@@ -586,8 +680,12 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
586
680
  // get the id type of the related collection
587
681
  let colType = 'integer';
588
682
  const relatedCollectionCustomID = relationshipConfig.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
589
- if (relatedCollectionCustomID?.type === 'number') colType = 'numeric';
590
- if (relatedCollectionCustomID?.type === 'text') colType = 'text';
683
+ if (relatedCollectionCustomID?.type === 'number') {
684
+ colType = 'numeric';
685
+ }
686
+ if (relatedCollectionCustomID?.type === 'text') {
687
+ colType = 'text';
688
+ }
591
689
  // make the foreign key column for relationship using the correct id column type
592
690
  targetTable[fieldName] = getIDColumn({
593
691
  name: `${columnName}_id`,
@@ -608,7 +706,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
608
706
  }
609
707
  break;
610
708
  }
611
- if (adapter.payload.config.localization && field.localized) {
709
+ if (Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock) {
612
710
  hasLocalizedRelationshipField = true;
613
711
  }
614
712
  break;