@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.
- package/README.md +1 -1
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +15 -3
- package/dist/connect.js.map +1 -1
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +5 -2
- package/dist/createMigration.js.map +1 -1
- package/dist/defaultSnapshot.d.ts +1 -1
- package/dist/defaultSnapshot.d.ts.map +1 -1
- package/dist/defaultSnapshot.js +1 -1
- package/dist/defaultSnapshot.js.map +1 -1
- package/dist/getMigrationTemplate.d.ts +1 -0
- package/dist/getMigrationTemplate.d.ts.map +1 -1
- package/dist/getMigrationTemplate.js +3 -2
- package/dist/getMigrationTemplate.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +12 -1
- package/dist/init.js.map +1 -1
- package/dist/requireDrizzleKit.js +1 -1
- package/dist/requireDrizzleKit.js.map +1 -1
- package/dist/schema/build.d.ts +16 -16
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +14 -6
- package/dist/schema/build.js.map +1 -1
- package/dist/schema/createIndex.d.ts +2 -2
- package/dist/schema/createIndex.d.ts.map +1 -1
- package/dist/schema/createIndex.js +4 -2
- package/dist/schema/createIndex.js.map +1 -1
- package/dist/schema/traverseFields.d.ts +7 -2
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +167 -69
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/schema/withDefault.d.ts +4 -0
- package/dist/schema/withDefault.d.ts.map +1 -0
- package/dist/schema/withDefault.js +12 -0
- package/dist/schema/withDefault.js.map +1 -0
- package/dist/types.d.ts +20 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +10 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { createTableName, hasLocalesTable, validateExistingBlockIsIdentical } from '@payloadcms/drizzle';
|
|
2
2
|
import { relations } from 'drizzle-orm';
|
|
3
|
-
import {
|
|
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
|
-
|
|
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)
|
|
20
|
-
|
|
21
|
-
|
|
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')
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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')
|
|
294
|
+
if (!hasManyTextField || subHasManyTextField === 'index') {
|
|
295
|
+
hasManyTextField = subHasManyTextField;
|
|
296
|
+
}
|
|
272
297
|
}
|
|
273
298
|
if (subHasManyNumberField) {
|
|
274
|
-
if (!hasManyNumberField || subHasManyNumberField === 'index')
|
|
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
|
-
|
|
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')
|
|
417
|
+
if (!hasManyTextField || subHasManyTextField === 'index') {
|
|
418
|
+
hasManyTextField = subHasManyTextField;
|
|
419
|
+
}
|
|
380
420
|
}
|
|
381
421
|
if (subHasManyNumberField) {
|
|
382
|
-
if (!hasManyNumberField || subHasManyNumberField === 'index')
|
|
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)
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
if (
|
|
471
|
-
|
|
472
|
-
|
|
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)
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
if (
|
|
502
|
-
|
|
503
|
-
|
|
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)
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
if (
|
|
538
|
-
|
|
539
|
-
|
|
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)
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
if (
|
|
572
|
-
|
|
573
|
-
|
|
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.
|
|
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')
|
|
590
|
-
|
|
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
|
|
709
|
+
if (Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock) {
|
|
612
710
|
hasLocalizedRelationshipField = true;
|
|
613
711
|
}
|
|
614
712
|
break;
|