@payloadcms/drizzle 3.0.0-beta.104 → 3.0.0-beta.106
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/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +10 -6
- package/dist/createVersion.js.map +1 -1
- package/dist/postgres/schema/traverseFields.d.ts.map +1 -1
- package/dist/postgres/schema/traverseFields.js +5 -5
- package/dist/postgres/schema/traverseFields.js.map +1 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +2 -1
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,QAAQ,EACR,cAAc,EACd,MAAM,EACN,GAA0B,EAC1B,WAAW,GACZ,EAAE,iBAAiB,CAAC,CAAC,CAAC,+
|
|
1
|
+
{"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,QAAQ,EACR,cAAc,EACd,MAAM,EACN,GAA0B,EAC1B,WAAW,GACZ,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAiDxB"}
|
package/dist/createVersion.js
CHANGED
|
@@ -13,14 +13,18 @@ export async function createVersion({ autosave, collectionSlug, parent, req = {}
|
|
|
13
13
|
if (version.id) {
|
|
14
14
|
delete version.id;
|
|
15
15
|
}
|
|
16
|
+
const data = {
|
|
17
|
+
autosave,
|
|
18
|
+
latest: true,
|
|
19
|
+
parent,
|
|
20
|
+
version
|
|
21
|
+
};
|
|
22
|
+
if ('createdAt' in version) {
|
|
23
|
+
data.createdAt = version.createdAt;
|
|
24
|
+
}
|
|
16
25
|
const result = await upsertRow({
|
|
17
26
|
adapter: this,
|
|
18
|
-
data
|
|
19
|
-
autosave,
|
|
20
|
-
latest: true,
|
|
21
|
-
parent,
|
|
22
|
-
version
|
|
23
|
-
},
|
|
27
|
+
data,
|
|
24
28
|
db,
|
|
25
29
|
fields: buildVersionCollectionFields(collection),
|
|
26
30
|
operation: 'create',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import type { CreateVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n autosave,\n collectionSlug,\n parent,\n req = {} as PayloadRequest,\n versionData,\n }: CreateVersionArgs<T>,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const defaultTableName = toSnakeCase(collection.slug)\n\n const tableName = this.tableNameMap.get(`_${defaultTableName}${this.versionsSuffix}`)\n\n const version = { ...versionData }\n if (version.id) {\n delete version.id\n }\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data
|
|
1
|
+
{"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import type { CreateVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n autosave,\n collectionSlug,\n parent,\n req = {} as PayloadRequest,\n versionData,\n }: CreateVersionArgs<T>,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const defaultTableName = toSnakeCase(collection.slug)\n\n const tableName = this.tableNameMap.get(`_${defaultTableName}${this.versionsSuffix}`)\n\n const version = { ...versionData }\n if (version.id) {\n delete version.id\n }\n\n const data: Record<string, unknown> = {\n autosave,\n latest: true,\n parent,\n version,\n }\n\n if ('createdAt' in version) {\n data.createdAt = version.createdAt\n }\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data,\n db,\n fields: buildVersionCollectionFields(collection),\n operation: 'create',\n req,\n tableName,\n })\n\n const table = this.tables[tableName]\n\n if (collection.versions.drafts) {\n await this.execute({\n db,\n sql: sql`\n UPDATE ${table}\n SET latest = false\n WHERE ${table.id} != ${result.id}\n AND ${table.parent} = ${parent}\n `,\n })\n }\n\n return result\n}\n"],"names":["sql","buildVersionCollectionFields","toSnakeCase","upsertRow","createVersion","autosave","collectionSlug","parent","req","versionData","db","sessions","transactionID","drizzle","collection","payload","collections","config","defaultTableName","slug","tableName","tableNameMap","get","versionsSuffix","version","id","data","latest","createdAt","result","adapter","fields","operation","table","tables","versions","drafts","execute"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,cAEpB,EACEC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,WAAW,EACU;IAEvB,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMH,KAAKI,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,eAAe,CAACW,MAAM;IAClE,MAAMC,mBAAmBhB,YAAYY,WAAWK,IAAI;IAEpD,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,EAAEJ,iBAAiB,EAAE,IAAI,CAACK,cAAc,CAAC,CAAC;IAEpF,MAAMC,UAAU;QAAE,GAAGf,WAAW;IAAC;IACjC,IAAIe,QAAQC,EAAE,EAAE;QACd,OAAOD,QAAQC,EAAE;IACnB;IAEA,MAAMC,OAAgC;QACpCrB;QACAsB,QAAQ;QACRpB;QACAiB;IACF;IAEA,IAAI,eAAeA,SAAS;QAC1BE,KAAKE,SAAS,GAAGJ,QAAQI,SAAS;IACpC;IAEA,MAAMC,SAAS,MAAM1B,UAA8B;QACjD2B,SAAS,IAAI;QACbJ;QACAhB;QACAqB,QAAQ9B,6BAA6Ba;QACrCkB,WAAW;QACXxB;QACAY;IACF;IAEA,MAAMa,QAAQ,IAAI,CAACC,MAAM,CAACd,UAAU;IAEpC,IAAIN,WAAWqB,QAAQ,CAACC,MAAM,EAAE;QAC9B,MAAM,IAAI,CAACC,OAAO,CAAC;YACjB3B;YACAV,KAAKA,GAAG,CAAC;aACF,EAAEiC,MAAM;;YAET,EAAEA,MAAMR,EAAE,CAAC,IAAI,EAAEI,OAAOJ,EAAE,CAAC;YAC3B,EAAEQ,MAAM1B,MAAM,CAAC,GAAG,EAAEA,OAAO;IACnC,CAAC;QACD;IACF;IAEA,OAAOsB;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAqBhD,OAAO,KAAK,EAEV,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACZ,MAAM,aAAa,CAAA;AAWpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,gBAAgB,EAAE,WAAW,CAAA;IAC7B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,qTAqBxB,IAAI,KAAG,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAqBhD,OAAO,KAAK,EAEV,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACZ,MAAM,aAAa,CAAA;AAWpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,gBAAgB,EAAE,WAAW,CAAA;IAC7B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,qTAqBxB,IAAI,KAAG,MAg0BT,CAAA"}
|
|
@@ -75,7 +75,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
|
|
|
75
75
|
case 'text':
|
|
76
76
|
{
|
|
77
77
|
if (field.hasMany) {
|
|
78
|
-
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
|
78
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
|
79
79
|
if (isLocalized) {
|
|
80
80
|
hasLocalizedManyTextField = true;
|
|
81
81
|
}
|
|
@@ -102,7 +102,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
|
|
|
102
102
|
case 'number':
|
|
103
103
|
{
|
|
104
104
|
if (field.hasMany) {
|
|
105
|
-
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
|
105
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
|
106
106
|
if (isLocalized) {
|
|
107
107
|
hasLocalizedManyNumberField = true;
|
|
108
108
|
}
|
|
@@ -182,7 +182,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
|
|
|
182
182
|
}).onDelete('cascade'),
|
|
183
183
|
parentIdx: (cols)=>index(`${selectTableName}_parent_idx`).on(cols.parent)
|
|
184
184
|
};
|
|
185
|
-
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
|
185
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
|
186
186
|
if (isLocalized) {
|
|
187
187
|
baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
|
|
188
188
|
baseExtraConfig.localeIdx = (cols)=>index(`${selectTableName}_locale_idx`).on(cols.locale);
|
|
@@ -256,7 +256,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
|
|
|
256
256
|
}).onDelete('cascade'),
|
|
257
257
|
_parentIDIdx: (cols)=>index(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
|
|
258
258
|
};
|
|
259
|
-
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
|
259
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
|
260
260
|
if (isLocalized) {
|
|
261
261
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
|
262
262
|
baseExtraConfig._localeIdx = (cols)=>index(`${arrayTableName}_locale_idx`).on(cols._locale);
|
|
@@ -373,7 +373,7 @@ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull,
|
|
|
373
373
|
_parentIDIdx: (cols)=>index(`${blockTableName}_parent_id_idx`).on(cols._parentID),
|
|
374
374
|
_pathIdx: (cols)=>index(`${blockTableName}_path_idx`).on(cols._path)
|
|
375
375
|
};
|
|
376
|
-
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
|
376
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
|
377
377
|
if (isLocalized) {
|
|
378
378
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
|
379
379
|
baseExtraConfig._localeIdx = (cols)=>index(`${blockTableName}_locale_idx`).on(cols._locale);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/postgres/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n boolean,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n BaseExtraConfig,\n BasePostgresAdapter,\n GenericColumns,\n IDType,\n RelationMap,\n} from '../types.js'\n\nimport { createTableName } from '../../createTableName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\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: string\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 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 const throwValidationError = true\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 PgUUIDBuilder) {\n parentIDColType = 'uuid'\n }\n if (columns.id instanceof PgNumericBuilder) {\n parentIDColType = 'numeric'\n }\n if (columns.id instanceof PgVarcharBuilder) {\n parentIDColType = 'varchar'\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\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: 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 Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(varchar(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(jsonb(columnName), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n }),\n field,\n )\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n adapter.enums[enumName] = adapter.pgSchema.enum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id').notNull(),\n value: adapter.enums[enumName]('value'),\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 = adapter.enums.enum__locales('locale').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(adapter.enums[enumName](fieldName), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(boolean(columnName), 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 throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id').notNull(),\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 = adapter.enums.enum__locales('_locale').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 throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id').notNull(),\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\n if (isLocalized) {\n baseColumns._locale = adapter.enums.enum__locales('_locale').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 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 localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\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 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 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 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 = adapter.idType === 'uuid' ? 'uuid' : '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 = 'varchar'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = parentIDColumnMap[colType](`${columnName}_id`).references(\n () => adapter.tables[tableName].id,\n { onDelete: 'set null' },\n )\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\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":["relations","boolean","foreignKey","index","integer","jsonb","numeric","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","createTableName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","withinLocalizedArrayOrBlock","throwValidationError","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","precision","withTimezone","enumName","prefix","target","enums","pgSchema","enum","options","map","option","value","selectTableName","versionsCustomName","baseColumns","order","notNull","parent","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","enum__locales","localeIdx","set","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","idType","relatedCollectionCustomID","find","required"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/postgres/schema/traverseFields.ts"],"sourcesContent":["import type { Relation } from 'drizzle-orm'\nimport type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core'\nimport type { Field, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n boolean,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n PgNumericBuilder,\n PgUUIDBuilder,\n PgVarcharBuilder,\n text,\n timestamp,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n BaseExtraConfig,\n BasePostgresAdapter,\n GenericColumns,\n IDType,\n RelationMap,\n} from '../types.js'\n\nimport { createTableName } from '../../createTableName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { idToUUID } from './idToUUID.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n columnPrefix?: string\n columns: Record<string, PgColumnBuilder>\n disableNotNull: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: (Field | TabAsField)[]\n forceLocalized?: boolean\n indexes: Record<string, (cols: GenericColumns) => IndexBuilder>\n localesColumns: Record<string, PgColumnBuilder>\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: string\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 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 const throwValidationError = true\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 PgUUIDBuilder) {\n parentIDColType = 'uuid'\n }\n if (columns.id instanceof PgNumericBuilder) {\n parentIDColType = 'numeric'\n }\n if (columns.id instanceof PgVarcharBuilder) {\n parentIDColType = 'varchar'\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\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: 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 Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n }\n break\n }\n case 'email':\n case 'code':\n case 'textarea': {\n targetTable[fieldName] = withDefault(varchar(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(jsonb(columnName), field)\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n timestamp(columnName, {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n }),\n field,\n )\n break\n }\n\n case 'point': {\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n adapter.enums[enumName] = adapter.pgSchema.enum(\n enumName,\n field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n }) as [string, ...string[]],\n )\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n const baseColumns: Record<string, PgColumnBuilder> = {\n order: integer('order').notNull(),\n parent: parentIDColumnMap[parentIDColType]('parent_id').notNull(),\n value: adapter.enums[enumName]('value'),\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 = adapter.enums.enum__locales('locale').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(adapter.enums[enumName](fieldName), field)\n }\n break\n }\n\n case 'checkbox': {\n targetTable[fieldName] = withDefault(boolean(columnName), 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 throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[parentIDColType]('_parent_id').notNull(),\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 = adapter.enums.enum__locales('_locale').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 throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.tables[blockTableName]) {\n const baseColumns: Record<string, PgColumnBuilder> = {\n _order: integer('_order').notNull(),\n _parentID: parentIDColumnMap[rootTableIDColType]('_parent_id').notNull(),\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 = adapter.enums.enum__locales('_locale').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 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 localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\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 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 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 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 = adapter.idType === 'uuid' ? 'uuid' : '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 = 'varchar'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = parentIDColumnMap[colType](`${columnName}_id`).references(\n () => adapter.tables[tableName].id,\n { onDelete: 'set null' },\n )\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\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":["relations","boolean","foreignKey","index","integer","jsonb","numeric","PgNumericBuilder","PgUUIDBuilder","PgVarcharBuilder","text","timestamp","varchar","InvalidConfiguration","fieldAffectsData","optionIsObject","toSnakeCase","createTableName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","versions","withinLocalizedArrayOrBlock","throwValidationError","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","precision","withTimezone","enumName","prefix","target","enums","pgSchema","enum","options","map","option","value","selectTableName","versionsCustomName","baseColumns","order","notNull","parent","baseExtraConfig","orderIdx","cols","on","parentFk","foreignColumns","tables","onDelete","parentIdx","locale","enum__locales","localeIdx","set","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","idType","relatedCollectionCustomID","find","required"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,+IAc7D,kBAAkB,KAAG,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,+IAc7D,kBAAkB,KAAG,CAwgBvB,CAAA"}
|
|
@@ -355,6 +355,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
|
|
|
355
355
|
valuesToTransform.push({
|
|
356
356
|
ref: localizedFieldData,
|
|
357
357
|
table: {
|
|
358
|
+
...table,
|
|
358
359
|
...localeRow
|
|
359
360
|
}
|
|
360
361
|
});
|
|
@@ -393,7 +394,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
|
|
|
393
394
|
relationships,
|
|
394
395
|
table,
|
|
395
396
|
texts,
|
|
396
|
-
withinArrayOrBlockLocale
|
|
397
|
+
withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale
|
|
397
398
|
});
|
|
398
399
|
if ('_order' in ref) {
|
|
399
400
|
delete ref._order;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { Field, SanitizedConfig, TabAsField } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: (Field | TabAsField)[]\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (field.type === 'tabs') {\n traverseFields({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n if (\n field.type === 'collapsible' ||\n field.type === 'row' ||\n (field.type === 'tab' && !('name' in field))\n ) {\n traverseFields({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields: field.fields,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n if (fieldAffectsData(field)) {\n const fieldName = `${fieldPrefix || ''}${field.name}`\n const fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n\n if (Array.isArray(blocks[blockFieldPath])) {\n if (field.localized) {\n result[field.name] = {}\n\n blocks[blockFieldPath].forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.fields,\n numbers,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n result[field.name] = blocks[blockFieldPath].reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.fields,\n numbers,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n field.localized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (field.localized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n result[field.name] = fieldData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (field.localized && Array.isArray(table._locales)) {\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'tab':\n case 'group': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = field.localized && locale ? locale : field.name\n\n if (field.localized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n }\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldAffectsData","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","numbers","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","type","tabs","map","tab","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","Array","isArray","localized","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","_order","acc","i","blockFieldPath","forEach","Object","entries","localizedBlocks","block","find","slug","blockType","blockResult","relationTo","hasMany","localization","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","value","val","groupFieldPrefix","groupData","refKey","String","Number","parseFloat","Date","toISOString","payload","collections","customIDType","keys","length"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { Field, SanitizedConfig, TabAsField } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: (Field | TabAsField)[]\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (field.type === 'tabs') {\n traverseFields({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n if (\n field.type === 'collapsible' ||\n field.type === 'row' ||\n (field.type === 'tab' && !('name' in field))\n ) {\n traverseFields({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields: field.fields,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n if (fieldAffectsData(field)) {\n const fieldName = `${fieldPrefix || ''}${field.name}`\n const fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n\n if (Array.isArray(blocks[blockFieldPath])) {\n if (field.localized) {\n result[field.name] = {}\n\n blocks[blockFieldPath].forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.fields,\n numbers,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n result[field.name] = blocks[blockFieldPath].reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.fields,\n numbers,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n field.localized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (field.localized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n result[field.name] = fieldData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (field.localized && Array.isArray(table._locales)) {\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...table,\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'tab':\n case 'group': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = field.localized && locale ? locale : field.name\n\n if (field.localized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.fields,\n numbers,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n }\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldAffectsData","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","numbers","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","type","tabs","map","tab","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","Array","isArray","localized","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","_order","acc","i","blockFieldPath","forEach","Object","entries","localizedBlocks","block","find","slug","blockType","blockResult","relationTo","hasMany","localization","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","value","val","groupFieldPrefix","groupData","refKey","String","Number","parseFloat","Date","toISOString","payload","collections","customIDType","keys","length"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.106",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"@types/pg": "8.10.2",
|
|
47
47
|
"@types/to-snake-case": "1.0.0",
|
|
48
48
|
"@payloadcms/eslint-config": "3.0.0-beta.97",
|
|
49
|
-
"payload": "3.0.0-beta.
|
|
49
|
+
"payload": "3.0.0-beta.106"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"payload": "3.0.0-beta.
|
|
52
|
+
"payload": "3.0.0-beta.106"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"build": "pnpm build:swc && pnpm build:types",
|