@payloadcms/db-sqlite 3.0.0-canary.1a675ae → 3.0.0-canary.28c161d

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.
@@ -1,15 +1,15 @@
1
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
- import { fieldAffectsData, optionIsObject } from 'payload/shared';
5
+ import { fieldAffectsData, fieldIsVirtual, optionIsObject } from 'payload/shared';
6
6
  import toSnakeCase from 'to-snake-case';
7
7
  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
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, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, withinLocalizedArrayOrBlock })=>{
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 })=>{
13
13
  let hasLocalizedField = false;
14
14
  let hasLocalizedRelationshipField = false;
15
15
  let hasManyTextField = false;
@@ -17,11 +17,22 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
17
17
  let hasManyNumberField = false;
18
18
  let hasLocalizedManyNumberField = false;
19
19
  let parentIDColType = 'integer';
20
- if (columns.id instanceof SQLiteIntegerBuilder) parentIDColType = 'integer';
21
- if (columns.id instanceof SQLiteNumericBuilder) parentIDColType = 'numeric';
22
- 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
+ }
23
29
  fields.forEach((field)=>{
24
- if ('name' in field && field.name === 'id') return;
30
+ if ('name' in field && field.name === 'id') {
31
+ return;
32
+ }
33
+ if (fieldIsVirtual(field)) {
34
+ return;
35
+ }
25
36
  let columnName;
26
37
  let fieldName;
27
38
  let targetTable = columns;
@@ -53,7 +64,10 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
53
64
  adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue;
54
65
  }
55
66
  targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({
56
- name: fieldName,
67
+ name: field.localized ? [
68
+ fieldName,
69
+ '_locale'
70
+ ] : fieldName,
57
71
  columnName,
58
72
  tableName: newTableName,
59
73
  unique
@@ -64,7 +78,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
64
78
  case 'text':
65
79
  {
66
80
  if (field.hasMany) {
67
- const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
81
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
68
82
  if (isLocalized) {
69
83
  hasLocalizedManyTextField = true;
70
84
  }
@@ -91,7 +105,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
91
105
  case 'number':
92
106
  {
93
107
  if (field.hasMany) {
94
- const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
108
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
95
109
  if (isLocalized) {
96
110
  hasLocalizedManyNumberField = true;
97
111
  }
@@ -167,7 +181,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
167
181
  }).onDelete('cascade'),
168
182
  parentIdx: (cols)=>index(`${selectTableName}_parent_idx`).on(cols.parent)
169
183
  };
170
- const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
184
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
171
185
  if (isLocalized) {
172
186
  baseColumns.locale = text('locale', {
173
187
  enum: locales
@@ -251,7 +265,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
251
265
  }).onDelete('cascade'),
252
266
  _parentIDIdx: (cols)=>index(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
253
267
  };
254
- const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
268
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
255
269
  if (isLocalized) {
256
270
  baseColumns._locale = text('_locale', {
257
271
  enum: locales
@@ -265,8 +279,8 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
265
279
  disableNotNull: disableNotNullFromHere,
266
280
  disableUnique,
267
281
  fields: disableUnique ? idToUUID(field.fields) : field.fields,
268
- rootRelationsToBuild,
269
282
  rootRelationships: relationships,
283
+ rootRelationsToBuild,
270
284
  rootTableIDColType,
271
285
  rootTableName,
272
286
  tableName: arrayTableName,
@@ -283,10 +297,14 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
283
297
  hasLocalizedManyTextField = subHasLocalizedManyTextField;
284
298
  }
285
299
  if (subHasManyTextField) {
286
- if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
300
+ if (!hasManyTextField || subHasManyTextField === 'index') {
301
+ hasManyTextField = subHasManyTextField;
302
+ }
287
303
  }
288
304
  if (subHasManyNumberField) {
289
- if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
305
+ if (!hasManyNumberField || subHasManyNumberField === 'index') {
306
+ hasManyNumberField = subHasManyNumberField;
307
+ }
290
308
  }
291
309
  relationsToBuild.set(fieldName, {
292
310
  type: 'many',
@@ -358,7 +376,6 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
358
376
  };
359
377
  const baseExtraConfig = {
360
378
  _orderIdx: (cols)=>index(`${blockTableName}_order_idx`).on(cols._order),
361
- _parentIDIdx: (cols)=>index(`${blockTableName}_parent_id_idx`).on(cols._parentID),
362
379
  _parentIdFk: (cols)=>foreignKey({
363
380
  name: `${blockTableName}_parent_id_fk`,
364
381
  columns: [
@@ -368,9 +385,10 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
368
385
  adapter.tables[rootTableName].id
369
386
  ]
370
387
  }).onDelete('cascade'),
388
+ _parentIDIdx: (cols)=>index(`${blockTableName}_parent_id_idx`).on(cols._parentID),
371
389
  _pathIdx: (cols)=>index(`${blockTableName}_path_idx`).on(cols._path)
372
390
  };
373
- const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
391
+ const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
374
392
  if (isLocalized) {
375
393
  baseColumns._locale = text('_locale', {
376
394
  enum: locales
@@ -384,8 +402,8 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
384
402
  disableNotNull: disableNotNullFromHere,
385
403
  disableUnique,
386
404
  fields: disableUnique ? idToUUID(block.fields) : block.fields,
387
- rootRelationsToBuild,
388
405
  rootRelationships: relationships,
406
+ rootRelationsToBuild,
389
407
  rootTableIDColType,
390
408
  rootTableName,
391
409
  tableName: blockTableName,
@@ -402,10 +420,14 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
402
420
  hasLocalizedManyTextField = subHasLocalizedManyTextField;
403
421
  }
404
422
  if (subHasManyTextField) {
405
- if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
423
+ if (!hasManyTextField || subHasManyTextField === 'index') {
424
+ hasManyTextField = subHasManyTextField;
425
+ }
406
426
  }
407
427
  if (subHasManyNumberField) {
408
- if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
428
+ if (!hasManyNumberField || subHasManyNumberField === 'index') {
429
+ hasManyNumberField = subHasManyNumberField;
430
+ }
409
431
  }
410
432
  adapter.relations[`relations_${blockTableName}`] = relations(adapter.tables[blockTableName], ({ many, one })=>{
411
433
  const result = {
@@ -483,20 +505,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
483
505
  localesIndexes,
484
506
  newTableName,
485
507
  parentTableName,
486
- relationsToBuild,
487
508
  relationships,
509
+ relationsToBuild,
488
510
  rootRelationsToBuild,
489
511
  rootTableIDColType,
490
512
  rootTableName,
491
513
  versions,
492
514
  withinLocalizedArrayOrBlock
493
515
  });
494
- if (groupHasLocalizedField) hasLocalizedField = true;
495
- if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
496
- if (groupHasManyTextField) hasManyTextField = true;
497
- if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true;
498
- if (groupHasManyNumberField) hasManyNumberField = true;
499
- if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
516
+ if (groupHasLocalizedField) {
517
+ hasLocalizedField = true;
518
+ }
519
+ if (groupHasLocalizedRelationshipField) {
520
+ hasLocalizedRelationshipField = true;
521
+ }
522
+ if (groupHasManyTextField) {
523
+ hasManyTextField = true;
524
+ }
525
+ if (groupHasLocalizedManyTextField) {
526
+ hasLocalizedManyTextField = true;
527
+ }
528
+ if (groupHasManyNumberField) {
529
+ hasManyNumberField = true;
530
+ }
531
+ if (groupHasLocalizedManyNumberField) {
532
+ hasLocalizedManyNumberField = true;
533
+ }
500
534
  break;
501
535
  }
502
536
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
@@ -515,20 +549,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
515
549
  localesIndexes,
516
550
  newTableName: `${parentTableName}_${columnName}`,
517
551
  parentTableName,
518
- relationsToBuild,
519
552
  relationships,
553
+ relationsToBuild,
520
554
  rootRelationsToBuild,
521
555
  rootTableIDColType,
522
556
  rootTableName,
523
557
  versions,
524
- withinLocalizedArrayOrBlock
558
+ withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized
525
559
  });
526
- if (groupHasLocalizedField) hasLocalizedField = true;
527
- if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
528
- if (groupHasManyTextField) hasManyTextField = true;
529
- if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true;
530
- if (groupHasManyNumberField) hasManyNumberField = true;
531
- if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
560
+ if (groupHasLocalizedField) {
561
+ hasLocalizedField = true;
562
+ }
563
+ if (groupHasLocalizedRelationshipField) {
564
+ hasLocalizedRelationshipField = true;
565
+ }
566
+ if (groupHasManyTextField) {
567
+ hasManyTextField = true;
568
+ }
569
+ if (groupHasLocalizedManyTextField) {
570
+ hasLocalizedManyTextField = true;
571
+ }
572
+ if (groupHasManyNumberField) {
573
+ hasManyNumberField = true;
574
+ }
575
+ if (groupHasLocalizedManyNumberField) {
576
+ hasLocalizedManyNumberField = true;
577
+ }
532
578
  break;
533
579
  }
534
580
  case 'tabs':
@@ -552,20 +598,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
552
598
  localesIndexes,
553
599
  newTableName,
554
600
  parentTableName,
555
- relationsToBuild,
556
601
  relationships,
602
+ relationsToBuild,
557
603
  rootRelationsToBuild,
558
604
  rootTableIDColType,
559
605
  rootTableName,
560
606
  versions,
561
607
  withinLocalizedArrayOrBlock
562
608
  });
563
- if (tabHasLocalizedField) hasLocalizedField = true;
564
- if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
565
- if (tabHasManyTextField) hasManyTextField = true;
566
- if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true;
567
- if (tabHasManyNumberField) hasManyNumberField = true;
568
- if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
609
+ if (tabHasLocalizedField) {
610
+ hasLocalizedField = true;
611
+ }
612
+ if (tabHasLocalizedRelationshipField) {
613
+ hasLocalizedRelationshipField = true;
614
+ }
615
+ if (tabHasManyTextField) {
616
+ hasManyTextField = true;
617
+ }
618
+ if (tabHasLocalizedManyTextField) {
619
+ hasLocalizedManyTextField = true;
620
+ }
621
+ if (tabHasManyNumberField) {
622
+ hasManyNumberField = true;
623
+ }
624
+ if (tabHasLocalizedManyNumberField) {
625
+ hasLocalizedManyNumberField = true;
626
+ }
569
627
  break;
570
628
  }
571
629
  case 'row':
@@ -587,20 +645,32 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
587
645
  localesIndexes,
588
646
  newTableName,
589
647
  parentTableName,
590
- relationsToBuild,
591
648
  relationships,
649
+ relationsToBuild,
592
650
  rootRelationsToBuild,
593
651
  rootTableIDColType,
594
652
  rootTableName,
595
653
  versions,
596
654
  withinLocalizedArrayOrBlock
597
655
  });
598
- if (rowHasLocalizedField) hasLocalizedField = true;
599
- if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
600
- if (rowHasManyTextField) hasManyTextField = true;
601
- if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true;
602
- if (rowHasManyNumberField) hasManyNumberField = true;
603
- if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
656
+ if (rowHasLocalizedField) {
657
+ hasLocalizedField = true;
658
+ }
659
+ if (rowHasLocalizedRelationshipField) {
660
+ hasLocalizedRelationshipField = true;
661
+ }
662
+ if (rowHasManyTextField) {
663
+ hasManyTextField = true;
664
+ }
665
+ if (rowHasLocalizedManyTextField) {
666
+ hasLocalizedManyTextField = true;
667
+ }
668
+ if (rowHasManyNumberField) {
669
+ hasManyNumberField = true;
670
+ }
671
+ if (rowHasLocalizedManyNumberField) {
672
+ hasLocalizedManyNumberField = true;
673
+ }
604
674
  break;
605
675
  }
606
676
  case 'relationship':
@@ -616,8 +686,12 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
616
686
  // get the id type of the related collection
617
687
  let colType = 'integer';
618
688
  const relatedCollectionCustomID = relationshipConfig.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
619
- if (relatedCollectionCustomID?.type === 'number') colType = 'numeric';
620
- if (relatedCollectionCustomID?.type === 'text') colType = 'text';
689
+ if (relatedCollectionCustomID?.type === 'number') {
690
+ colType = 'numeric';
691
+ }
692
+ if (relatedCollectionCustomID?.type === 'text') {
693
+ colType = 'text';
694
+ }
621
695
  // make the foreign key column for relationship using the correct id column type
622
696
  targetTable[fieldName] = getIDColumn({
623
697
  name: `${columnName}_id`,
@@ -629,7 +703,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
629
703
  // add relationship to table
630
704
  relationsToBuild.set(fieldName, {
631
705
  type: 'one',
632
- localized: adapter.payload.config.localization && field.localized,
706
+ localized: adapter.payload.config.localization && (field.localized || forceLocalized),
633
707
  target: tableName
634
708
  });
635
709
  // add notNull when not required
@@ -642,6 +716,21 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
642
716
  hasLocalizedRelationshipField = true;
643
717
  }
644
718
  break;
719
+ case 'join':
720
+ {
721
+ // fieldName could be 'posts' or 'group_posts'
722
+ // using on as the key for the relation
723
+ const localized = adapter.payload.config.localization && field.localized;
724
+ const target = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${localized ? adapter.localesSuffix : ''}`;
725
+ relationsToBuild.set(fieldName, {
726
+ type: 'many',
727
+ // joins are not localized on the parent table
728
+ localized: false,
729
+ relationName: field.on.replaceAll('.', '_'),
730
+ target
731
+ });
732
+ break;
733
+ }
645
734
  default:
646
735
  break;
647
736
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, SQLiteColumnBuilder } from 'drizzle-orm/sqlite-core'\nimport type { Field, TabAsField } from 'payload'\n\nimport {\n createTableName,\n hasLocalesTable,\n validateExistingBlockIsIdentical,\n} from '@payloadcms/drizzle'\nimport { relations } from 'drizzle-orm'\nimport {\n SQLiteIntegerBuilder,\n SQLiteNumericBuilder,\n SQLiteTextBuilder,\n foreignKey,\n index,\n integer,\n numeric,\n text,\n} from 'drizzle-orm/sqlite-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, IDType, SQLiteAdapter } from '../types.js'\nimport type { BaseExtraConfig, RelationMap } from './build.js'\n\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { getIDColumn } from './getIDColumn.js'\nimport { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: SQLiteAdapter\n columnPrefix?: string\n columns: Record<string, SQLiteColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n locales: [string, ...string[]]\n localesColumns: Record<string, SQLiteColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationsToBuild: RelationMap\n relationships: Set<string>\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof SQLiteIntegerBuilder) parentIDColType = 'integer'\n if (columns.id instanceof SQLiteNumericBuilder) parentIDColType = 'numeric'\n if (columns.id instanceof SQLiteTextBuilder) parentIDColType = 'text'\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') return\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index) &&\n !['array', 'blocks', 'group', 'point', 'relationship', 'upload'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true)\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({\n name: fieldName,\n columnName,\n tableName: newTableName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n\n if (isLocalized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in SQLite for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(text(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(text(columnName), field)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n\n if (isLocalized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(numeric(columnName), field)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = withDefault(text(columnName, { mode: 'json' }), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(text(columnName), field)\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]]\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n order: integer('order').notNull(),\n parent: getIDColumn({\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n primaryKey: false,\n }),\n value: text('value', { enum: options }),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentFk: (cols) =>\n foreignKey({\n name: `${selectTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n\n if (isLocalized) {\n baseColumns.locale = text('locale', { enum: locales }).notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.relations[`relations_${selectTableName}`] = relations(\n adapter.tables[selectTableName],\n ({ one }) => ({\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }),\n )\n } else {\n targetTable[fieldName] = withDefault(text(fieldName, { enum: options }), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(integer(columnName, { mode: 'boolean' }), field)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: getIDColumn({\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n primaryKey: false,\n }),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDFk: (cols) =>\n foreignKey({\n name: `${arrayTableName}_parent_id_fk`,\n columns: [cols['_parentID']],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n\n if (isLocalized) {\n baseColumns._locale = text('_locale', { enum: locales }).notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: arrayTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n adapter.relations[`relations_${arrayTableName}`] = relations(\n adapter.tables[arrayTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`], {\n relationName: '_locales',\n })\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[arrayWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: getIDColumn({\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n primaryKey: false,\n }),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _parentIdFk: (cols) =>\n foreignKey({\n name: `${blockTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [adapter.tables[rootTableName].id],\n }).onDelete('cascade'),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n\n if (isLocalized) {\n baseColumns._locale = text('_locale', { enum: locales }).notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationsToBuild,\n rootRelationships: relationships,\n rootTableIDColType,\n rootTableName,\n tableName: blockTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index')\n hasManyTextField = subHasManyTextField\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index')\n hasManyNumberField = subHasManyNumberField\n }\n\n adapter.relations[`relations_${blockTableName}`] = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n relationName: `_blocks_${block.slug}`,\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n { relationName: '_locales' },\n )\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[blockWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (groupHasLocalizedField) hasLocalizedField = true\n if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (groupHasManyTextField) hasManyTextField = true\n if (groupHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (groupHasManyNumberField) hasManyNumberField = true\n if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (tabHasLocalizedField) hasLocalizedField = true\n if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (tabHasManyTextField) hasManyTextField = true\n if (tabHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (tabHasManyNumberField) hasManyNumberField = true\n if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (rowHasLocalizedField) hasLocalizedField = true\n if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true\n if (rowHasManyTextField) hasManyTextField = true\n if (rowHasLocalizedManyTextField) hasLocalizedManyTextField = true\n if (rowHasManyNumberField) hasManyNumberField = true\n if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => relationships.add(relation))\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType: IDType = 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') colType = 'numeric'\n if (relatedCollectionCustomID?.type === 'text') colType = 'text'\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = getIDColumn({\n name: `${columnName}_id`,\n type: colType,\n primaryKey: false,\n }).references(() => adapter.tables[tableName].id, { onDelete: 'set null' })\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && field.localized,\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["createTableName","hasLocalesTable","validateExistingBlockIsIdentical","relations","SQLiteIntegerBuilder","SQLiteNumericBuilder","SQLiteTextBuilder","foreignKey","index","integer","numeric","text","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","buildTable","createIndex","getIDColumn","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","locales","localesColumns","localesIndexes","newTableName","parentTableName","relationsToBuild","relationships","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","withinLocalizedArrayOrBlock","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","type","hasMany","unique","includes","constraintValue","fieldConstraints","tableName","isLocalized","Boolean","mode","options","map","option","value","selectTableName","prefix","versionsCustomName","baseColumns","order","notNull","parent","primaryKey","enum","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","localeIdx","set","target","one","references","relationName","disableNotNullFromHere","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDFk","_parentIDIdx","_locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","many","result","_locales","localesSuffix","key","arrayWithLocalized","blocks","block","blockTableName","_path","_parentIdFk","_pathIdx","slug","blockWithLocalized","process","env","NODE_ENV","table","tableLocales","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","Array","isArray","relationTo","relation","add","relationshipConfig","collections","tableNameMap","get","colType","relatedCollectionCustomID","find","required"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, SQLiteColumnBuilder } from 'drizzle-orm/sqlite-core'\nimport type { Field, TabAsField } from 'payload'\n\nimport {\n createTableName,\n hasLocalesTable,\n validateExistingBlockIsIdentical,\n} from '@payloadcms/drizzle'\nimport { relations } from 'drizzle-orm'\nimport {\n foreignKey,\n index,\n integer,\n numeric,\n SQLiteIntegerBuilder,\n SQLiteNumericBuilder,\n SQLiteTextBuilder,\n text,\n} from 'drizzle-orm/sqlite-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, IDType, SQLiteAdapter } from '../types.js'\nimport type { BaseExtraConfig, RelationMap } from './build.js'\n\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { getIDColumn } from './getIDColumn.js'\nimport { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: SQLiteAdapter\n columnPrefix?: string\n columns: Record<string, SQLiteColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n locales: [string, ...string[]]\n localesColumns: Record<string, SQLiteColumnBuilder>\n localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n newTableName: string\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n if (columns.id instanceof SQLiteIntegerBuilder) {\n parentIDColType = 'integer'\n }\n if (columns.id instanceof SQLiteNumericBuilder) {\n parentIDColType = 'numeric'\n }\n if (columns.id instanceof SQLiteTextBuilder) {\n parentIDColType = 'text'\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\n }\n\n if (fieldIsVirtual(field)) {\n return\n }\n\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index) &&\n !['array', 'blocks', 'group', 'point', 'relationship', 'upload'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true)\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n targetIndexes[`${newTableName}_${field.name}Idx`] = createIndex({\n name: field.localized ? [fieldName, '_locale'] : fieldName,\n columnName,\n tableName: newTableName,\n unique,\n })\n }\n }\n\n switch (field.type) {\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in SQLite for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(text(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(text(columnName), field)\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(numeric(columnName), field)\n }\n break\n }\n\n case 'richText':\n case 'json': {\n targetTable[fieldName] = withDefault(text(columnName, { mode: 'json' }), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(text(columnName), field)\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]]\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n order: integer('order').notNull(),\n parent: getIDColumn({\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n primaryKey: false,\n }),\n value: text('value', { enum: options }),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n orderIdx: (cols) => index(`${selectTableName}_order_idx`).on(cols.order),\n parentFk: (cols) =>\n foreignKey({\n name: `${selectTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n parentIdx: (cols) => index(`${selectTableName}_parent_idx`).on(cols.parent),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = text('locale', { enum: locales }).notNull()\n baseExtraConfig.localeIdx = (cols) =>\n index(`${selectTableName}_locale_idx`).on(cols.locale)\n }\n\n if (field.index) {\n baseExtraConfig.value = (cols) => index(`${selectTableName}_value_idx`).on(cols.value)\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.relations[`relations_${selectTableName}`] = relations(\n adapter.tables[selectTableName],\n ({ one }) => ({\n parent: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[selectTableName].parent],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }),\n )\n } else {\n targetTable[fieldName] = withDefault(text(fieldName, { enum: options }), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(integer(columnName, { mode: 'boolean' }), field)\n break\n }\n\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: getIDColumn({\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n primaryKey: false,\n }),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${arrayTableName}_order_idx`).on(cols._order),\n _parentIDFk: (cols) =>\n foreignKey({\n name: `${arrayTableName}_parent_id_fk`,\n columns: [cols['_parentID']],\n foreignColumns: [adapter.tables[parentTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${arrayTableName}_parent_id_idx`).on(cols._parentID),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = text('_locale', { enum: locales }).notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${arrayTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n tableName: arrayTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n adapter.relations[`relations_${arrayTableName}`] = relations(\n adapter.tables[arrayTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[parentTableName], {\n fields: [adapter.tables[arrayTableName]._parentID],\n references: [adapter.tables[parentTableName].id],\n relationName: fieldName,\n }),\n }\n\n if (hasLocalesTable(field.fields)) {\n result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`], {\n relationName: '_locales',\n })\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[arrayWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n\n break\n }\n\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, SQLiteColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: getIDColumn({\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n primaryKey: false,\n }),\n _path: text('_path').notNull(),\n }\n\n const baseExtraConfig: BaseExtraConfig = {\n _orderIdx: (cols) => index(`${blockTableName}_order_idx`).on(cols._order),\n _parentIdFk: (cols) =>\n foreignKey({\n name: `${blockTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [adapter.tables[rootTableName].id],\n }).onDelete('cascade'),\n _parentIDIdx: (cols) => index(`${blockTableName}_parent_id_idx`).on(cols._parentID),\n _pathIdx: (cols) => index(`${blockTableName}_path_idx`).on(cols._path),\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = text('_locale', { enum: locales }).notNull()\n baseExtraConfig._localeIdx = (cols) =>\n index(`${blockTableName}_locale_idx`).on(cols._locale)\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseExtraConfig,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n tableName: blockTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n adapter.relations[`relations_${blockTableName}`] = relations(\n adapter.tables[blockTableName],\n ({ many, one }) => {\n const result: Record<string, Relation<string>> = {\n _parentID: one(adapter.tables[rootTableName], {\n fields: [adapter.tables[blockTableName]._parentID],\n references: [adapter.tables[rootTableName].id],\n relationName: `_blocks_${block.slug}`,\n }),\n }\n\n if (hasLocalesTable(block.fields)) {\n result._locales = many(\n adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n { relationName: '_locales' },\n )\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n result[key] = one(adapter.tables[target], {\n fields: [adapter.tables[blockWithLocalized][key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n return result\n },\n )\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.tables[blockTableName],\n tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n\n case 'tab':\n case 'group': {\n if (!('name' in field)) {\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.fields,\n forceLocalized: field.localized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (tabHasLocalizedField) {\n hasLocalizedField = true\n }\n if (tabHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (tabHasManyTextField) {\n hasManyTextField = true\n }\n if (tabHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (tabHasManyNumberField) {\n hasManyNumberField = true\n }\n if (tabHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'row':\n case 'collapsible': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n const {\n hasLocalizedField: rowHasLocalizedField,\n hasLocalizedManyNumberField: rowHasLocalizedManyNumberField,\n hasLocalizedManyTextField: rowHasLocalizedManyTextField,\n hasLocalizedRelationshipField: rowHasLocalizedRelationshipField,\n hasManyNumberField: rowHasManyNumberField,\n hasManyTextField: rowHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.fields,\n forceLocalized,\n indexes,\n locales,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n versions,\n withinLocalizedArrayOrBlock,\n })\n\n if (rowHasLocalizedField) {\n hasLocalizedField = true\n }\n if (rowHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (rowHasManyTextField) {\n hasManyTextField = true\n }\n if (rowHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (rowHasManyNumberField) {\n hasManyNumberField = true\n }\n if (rowHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => relationships.add(relation))\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType: IDType = 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') {\n colType = 'numeric'\n }\n if (relatedCollectionCustomID?.type === 'text') {\n colType = 'text'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = getIDColumn({\n name: `${columnName}_id`,\n type: colType,\n primaryKey: false,\n }).references(() => adapter.tables[tableName].id, { onDelete: 'set null' })\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (field.localized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n case 'join': {\n // fieldName could be 'posts' or 'group_posts'\n // using on as the key for the relation\n const localized = adapter.payload.config.localization && field.localized\n const target = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${localized ? adapter.localesSuffix : ''}`\n relationsToBuild.set(fieldName, {\n type: 'many',\n // joins are not localized on the parent table\n localized: false,\n relationName: field.on.replaceAll('.', '_'),\n target,\n })\n break\n }\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull()\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["createTableName","hasLocalesTable","validateExistingBlockIsIdentical","relations","foreignKey","index","integer","numeric","SQLiteIntegerBuilder","SQLiteNumericBuilder","SQLiteTextBuilder","text","InvalidConfiguration","fieldAffectsData","fieldIsVirtual","optionIsObject","toSnakeCase","buildTable","createIndex","getIDColumn","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","locales","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","withinLocalizedArrayOrBlock","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","id","forEach","field","name","columnName","fieldName","targetTable","targetIndexes","replace","payload","config","localization","localized","type","hasMany","unique","includes","constraintValue","fieldConstraints","tableName","isLocalized","Boolean","mode","options","map","option","value","selectTableName","prefix","versionsCustomName","baseColumns","order","notNull","parent","primaryKey","enum","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","localeIdx","set","target","one","references","relationName","disableNotNullFromHere","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDFk","_parentIDIdx","_locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","many","result","_locales","localesSuffix","key","arrayWithLocalized","blocks","block","blockTableName","_path","_parentIdFk","_pathIdx","slug","blockWithLocalized","process","env","NODE_ENV","table","tableLocales","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","Array","isArray","relationTo","relation","add","relationshipConfig","collections","tableNameMap","get","colType","relatedCollectionCustomID","find","required","collection","replaceAll"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withDefault.d.ts","sourceRoot":"","sources":["../../src/schema/withDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,WAAW,WACd,mBAAmB,SACpB,kBAAkB,KACxB,mBAUF,CAAA"}
1
+ {"version":3,"file":"withDefault.d.ts","sourceRoot":"","sources":["../../src/schema/withDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,WAAW,WACd,mBAAmB,SACpB,kBAAkB,KACxB,mBAWF,CAAA"}