@payloadcms/drizzle 3.0.0-beta.127 → 3.0.0-beta.129
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/countGlobalVersions.d.ts +3 -0
- package/dist/countGlobalVersions.d.ts.map +1 -0
- package/dist/countGlobalVersions.js +27 -0
- package/dist/countGlobalVersions.js.map +1 -0
- package/dist/countVersions.d.ts +3 -0
- package/dist/countVersions.d.ts.map +1 -0
- package/dist/countVersions.js +27 -0
- package/dist/countVersions.js.map +1 -0
- package/dist/exports/postgres.d.ts +0 -1
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +0 -1
- package/dist/exports/postgres.js.map +1 -1
- package/dist/find/traverseFields.js +51 -51
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/postgres/createJSONQuery/index.d.ts +2 -9
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.js +34 -46
- package/dist/postgres/createJSONQuery/index.js.map +1 -1
- package/dist/postgres/schema/traverseFields.js +246 -246
- package/dist/postgres/schema/traverseFields.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +170 -170
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +16 -10
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/transform/read/traverseFields.js +15 -15
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/upsertRow/index.js +2 -2
- package/dist/upsertRow/index.js.map +1 -1
- package/license.md +22 -0
- package/package.json +10 -3
|
@@ -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, SanitizedJoins, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n boolean,\n foreignKey,\n geometry,\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, fieldIsVirtual, 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 { buildIndexName } from '../../utilities/buildIndexName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { geometryColumn } from './geometryColumn.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 disableRelsTableUnique?: 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 uniqueRelationships: Set<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 disableRelsTableUnique,\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 uniqueRelationships,\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 if (fieldIsVirtual(field)) {\n return\n }\n\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index || ['relationship', 'upload'].includes(field.type)) &&\n !['array', 'blocks', 'group'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true) &&\n !('relationTo' in field && Array.isArray(field.relationTo))\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\n const indexName = buildIndexName({ name: `${newTableName}_${columnName}`, adapter })\n\n targetIndexes[indexName] = createIndex({\n name: field.localized ? [fieldName, '_locale'] : fieldName,\n indexName,\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 targetTable[fieldName] = withDefault(geometryColumn(columnName), field)\n if (!adapter.extensions.postgis) {\n adapter.extensions.postgis = true\n }\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](columnName), 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 disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\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 disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\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 uniqueRelationships,\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 uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'tabs': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: tabHasLocalizedField,\n hasLocalizedManyNumberField: tabHasLocalizedManyNumberField,\n hasLocalizedManyTextField: tabHasLocalizedManyTextField,\n hasLocalizedRelationshipField: tabHasLocalizedRelationshipField,\n hasManyNumberField: tabHasManyNumberField,\n hasManyTextField: tabHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n uniqueRelationships,\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 uniqueRelationships,\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) => {\n relationships.add(relation)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(relation)\n }\n })\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(field.relationTo)\n }\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 || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n\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","fieldIsVirtual","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","geometryColumn","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","uniqueRelationships","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","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","isLocalized","Boolean","mode","precision","withTimezone","extensions","postgis","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","tableName","set","one","references","relationName","disableNotNullFromHere","admin","condition","arrayTableName","_order","_parentID","_orderIdx","_parentIDFk","_parentIDIdx","_locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","rootUniqueRelationships","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","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, SanitizedJoins, TabAsField } from 'payload'\n\nimport { relations } from 'drizzle-orm'\nimport {\n boolean,\n foreignKey,\n geometry,\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, fieldIsVirtual, 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 { buildIndexName } from '../../utilities/buildIndexName.js'\nimport { hasLocalesTable } from '../../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { createIndex } from './createIndex.js'\nimport { geometryColumn } from './geometryColumn.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 disableRelsTableUnique?: 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 uniqueRelationships: Set<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 disableRelsTableUnique,\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 uniqueRelationships,\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 if (fieldIsVirtual(field)) {\n return\n }\n\n let columnName: string\n let fieldName: string\n\n let targetTable = columns\n let targetIndexes = indexes\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index || ['relationship', 'upload'].includes(field.type)) &&\n !['array', 'blocks', 'group'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true) &&\n !('relationTo' in field && Array.isArray(field.relationTo))\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\n const indexName = buildIndexName({ name: `${newTableName}_${columnName}`, adapter })\n\n targetIndexes[indexName] = createIndex({\n name: field.localized ? [fieldName, '_locale'] : fieldName,\n indexName,\n unique,\n })\n }\n }\n\n switch (field.type) {\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 disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.fields) : field.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\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 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 disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.fields) : block.fields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\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 case 'checkbox': {\n targetTable[fieldName] = withDefault(boolean(columnName), field)\n break\n }\n case 'code':\n\n case 'email':\n\n case 'textarea': {\n targetTable[fieldName] = withDefault(varchar(columnName), field)\n break\n }\n case 'collapsible':\n\n case 'row': {\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 uniqueRelationships,\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 '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 'group':\n case 'tab': {\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 uniqueRelationships,\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 uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'json':\n\n case 'richText': {\n targetTable[fieldName] = withDefault(jsonb(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 'point': {\n targetTable[fieldName] = withDefault(geometryColumn(columnName), field)\n if (!adapter.extensions.postgis) {\n adapter.extensions.postgis = true\n }\n break\n }\n case 'radio':\n\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](columnName), field)\n }\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => {\n relationships.add(relation)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(relation)\n }\n })\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(field.relationTo)\n }\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 || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull()\n }\n break\n }\n\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\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 uniqueRelationships,\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 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\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","fieldIsVirtual","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","createIndex","geometryColumn","idToUUID","parentIDColumnMap","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","uniqueRelationships","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","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","prefix","versionsCustomName","baseColumns","_order","notNull","_parentID","baseExtraConfig","_orderIdx","cols","on","_parentIDFk","foreignColumns","tables","onDelete","_parentIDIdx","isLocalized","_locale","enums","enum__locales","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","rootRelationships","rootUniqueRelationships","tableName","set","target","many","one","result","references","relationName","_locales","localesSuffix","key","arrayWithLocalized","blocks","block","blockTableName","_path","_parentIdFk","_pathIdx","slug","blockWithLocalized","process","env","NODE_ENV","table","tableLocales","rowHasLocalizedField","rowHasLocalizedManyNumberField","rowHasLocalizedManyTextField","rowHasLocalizedRelationshipField","rowHasManyNumberField","rowHasManyTextField","mode","precision","withTimezone","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","extensions","postgis","enumName","pgSchema","enum","options","map","option","value","selectTableName","order","parent","orderIdx","parentFk","parentIdx","locale","localeIdx","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","required","tabHasLocalizedField","tabHasLocalizedManyNumberField","tabHasLocalizedManyTextField","tabHasLocalizedRelationshipField","tabHasManyNumberField","tabHasManyTextField","tabs","tab"],"mappings":"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"}
|
|
@@ -43,176 +43,6 @@ import { getTableAlias } from './getTableAlias.js';
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
switch(field.type){
|
|
46
|
-
case 'tabs':
|
|
47
|
-
{
|
|
48
|
-
return getTableColumnFromPath({
|
|
49
|
-
adapter,
|
|
50
|
-
aliasTable,
|
|
51
|
-
collectionPath,
|
|
52
|
-
columnPrefix,
|
|
53
|
-
constraintPath,
|
|
54
|
-
constraints,
|
|
55
|
-
fields: field.tabs.map((tab)=>({
|
|
56
|
-
...tab,
|
|
57
|
-
type: 'tab'
|
|
58
|
-
})),
|
|
59
|
-
joins,
|
|
60
|
-
locale,
|
|
61
|
-
pathSegments: pathSegments.slice(1),
|
|
62
|
-
rootTableName,
|
|
63
|
-
selectFields,
|
|
64
|
-
tableName: newTableName,
|
|
65
|
-
tableNameSuffix,
|
|
66
|
-
value
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
case 'tab':
|
|
70
|
-
{
|
|
71
|
-
if (tabHasName(field)) {
|
|
72
|
-
return getTableColumnFromPath({
|
|
73
|
-
adapter,
|
|
74
|
-
aliasTable,
|
|
75
|
-
collectionPath,
|
|
76
|
-
columnPrefix: `${columnPrefix}${field.name}_`,
|
|
77
|
-
constraintPath: `${constraintPath}${field.name}.`,
|
|
78
|
-
constraints,
|
|
79
|
-
fields: field.fields,
|
|
80
|
-
joins,
|
|
81
|
-
locale,
|
|
82
|
-
pathSegments: pathSegments.slice(1),
|
|
83
|
-
rootTableName,
|
|
84
|
-
selectFields,
|
|
85
|
-
tableName: newTableName,
|
|
86
|
-
tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,
|
|
87
|
-
value
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return getTableColumnFromPath({
|
|
91
|
-
adapter,
|
|
92
|
-
aliasTable,
|
|
93
|
-
collectionPath,
|
|
94
|
-
columnPrefix,
|
|
95
|
-
constraintPath,
|
|
96
|
-
constraints,
|
|
97
|
-
fields: field.fields,
|
|
98
|
-
joins,
|
|
99
|
-
locale,
|
|
100
|
-
pathSegments: pathSegments.slice(1),
|
|
101
|
-
rootTableName,
|
|
102
|
-
selectFields,
|
|
103
|
-
tableName: newTableName,
|
|
104
|
-
tableNameSuffix,
|
|
105
|
-
value
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
case 'group':
|
|
109
|
-
{
|
|
110
|
-
if (locale && field.localized && adapter.payload.config.localization) {
|
|
111
|
-
newTableName = `${tableName}${adapter.localesSuffix}`;
|
|
112
|
-
let condition = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
|
|
113
|
-
if (locale !== 'all') {
|
|
114
|
-
condition = and(condition, eq(adapter.tables[newTableName]._locale, locale));
|
|
115
|
-
}
|
|
116
|
-
addJoinTable({
|
|
117
|
-
condition,
|
|
118
|
-
joins,
|
|
119
|
-
table: adapter.tables[newTableName]
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return getTableColumnFromPath({
|
|
123
|
-
adapter,
|
|
124
|
-
aliasTable,
|
|
125
|
-
collectionPath,
|
|
126
|
-
columnPrefix: `${columnPrefix}${field.name}_`,
|
|
127
|
-
constraintPath: `${constraintPath}${field.name}.`,
|
|
128
|
-
constraints,
|
|
129
|
-
fields: field.fields,
|
|
130
|
-
joins,
|
|
131
|
-
locale,
|
|
132
|
-
pathSegments: pathSegments.slice(1),
|
|
133
|
-
rootTableName,
|
|
134
|
-
selectFields,
|
|
135
|
-
tableName: newTableName,
|
|
136
|
-
tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,
|
|
137
|
-
value
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
case 'select':
|
|
141
|
-
{
|
|
142
|
-
if (field.hasMany) {
|
|
143
|
-
const newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`);
|
|
144
|
-
if (locale && field.localized && adapter.payload.config.localization) {
|
|
145
|
-
const conditions = [
|
|
146
|
-
eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
|
147
|
-
eq(adapter.tables[newTableName]._locale, locale)
|
|
148
|
-
];
|
|
149
|
-
if (locale !== 'all') {
|
|
150
|
-
conditions.push(eq(adapter.tables[newTableName]._locale, locale));
|
|
151
|
-
}
|
|
152
|
-
addJoinTable({
|
|
153
|
-
condition: and(...conditions),
|
|
154
|
-
joins,
|
|
155
|
-
table: adapter.tables[newTableName]
|
|
156
|
-
});
|
|
157
|
-
} else {
|
|
158
|
-
addJoinTable({
|
|
159
|
-
condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
|
160
|
-
joins,
|
|
161
|
-
table: adapter.tables[newTableName]
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
return {
|
|
165
|
-
columnName: 'value',
|
|
166
|
-
constraints,
|
|
167
|
-
field,
|
|
168
|
-
table: adapter.tables[newTableName]
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
case 'text':
|
|
174
|
-
case 'number':
|
|
175
|
-
{
|
|
176
|
-
if (field.hasMany) {
|
|
177
|
-
let tableType = 'texts';
|
|
178
|
-
let columnName = 'text';
|
|
179
|
-
if (field.type === 'number') {
|
|
180
|
-
tableType = 'numbers';
|
|
181
|
-
columnName = 'number';
|
|
182
|
-
}
|
|
183
|
-
newTableName = `${rootTableName}_${tableType}`;
|
|
184
|
-
const joinConstraints = [
|
|
185
|
-
eq(adapter.tables[rootTableName].id, adapter.tables[newTableName].parent),
|
|
186
|
-
like(adapter.tables[newTableName].path, `${constraintPath}${field.name}`)
|
|
187
|
-
];
|
|
188
|
-
if (locale && field.localized && adapter.payload.config.localization) {
|
|
189
|
-
const conditions = [
|
|
190
|
-
...joinConstraints
|
|
191
|
-
];
|
|
192
|
-
if (locale !== 'all') {
|
|
193
|
-
conditions.push(eq(adapter.tables[newTableName]._locale, locale));
|
|
194
|
-
}
|
|
195
|
-
addJoinTable({
|
|
196
|
-
condition: and(...conditions),
|
|
197
|
-
joins,
|
|
198
|
-
table: adapter.tables[newTableName]
|
|
199
|
-
});
|
|
200
|
-
} else {
|
|
201
|
-
addJoinTable({
|
|
202
|
-
condition: and(...joinConstraints),
|
|
203
|
-
joins,
|
|
204
|
-
table: adapter.tables[newTableName]
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
return {
|
|
208
|
-
columnName,
|
|
209
|
-
constraints,
|
|
210
|
-
field,
|
|
211
|
-
table: adapter.tables[newTableName]
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
46
|
case 'array':
|
|
217
47
|
{
|
|
218
48
|
newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`);
|
|
@@ -350,6 +180,81 @@ import { getTableAlias } from './getTableAlias.js';
|
|
|
350
180
|
}
|
|
351
181
|
break;
|
|
352
182
|
}
|
|
183
|
+
case 'group':
|
|
184
|
+
{
|
|
185
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
|
186
|
+
newTableName = `${tableName}${adapter.localesSuffix}`;
|
|
187
|
+
let condition = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
|
|
188
|
+
if (locale !== 'all') {
|
|
189
|
+
condition = and(condition, eq(adapter.tables[newTableName]._locale, locale));
|
|
190
|
+
}
|
|
191
|
+
addJoinTable({
|
|
192
|
+
condition,
|
|
193
|
+
joins,
|
|
194
|
+
table: adapter.tables[newTableName]
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return getTableColumnFromPath({
|
|
198
|
+
adapter,
|
|
199
|
+
aliasTable,
|
|
200
|
+
collectionPath,
|
|
201
|
+
columnPrefix: `${columnPrefix}${field.name}_`,
|
|
202
|
+
constraintPath: `${constraintPath}${field.name}.`,
|
|
203
|
+
constraints,
|
|
204
|
+
fields: field.fields,
|
|
205
|
+
joins,
|
|
206
|
+
locale,
|
|
207
|
+
pathSegments: pathSegments.slice(1),
|
|
208
|
+
rootTableName,
|
|
209
|
+
selectFields,
|
|
210
|
+
tableName: newTableName,
|
|
211
|
+
tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,
|
|
212
|
+
value
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
case 'number':
|
|
216
|
+
case 'text':
|
|
217
|
+
{
|
|
218
|
+
if (field.hasMany) {
|
|
219
|
+
let tableType = 'texts';
|
|
220
|
+
let columnName = 'text';
|
|
221
|
+
if (field.type === 'number') {
|
|
222
|
+
tableType = 'numbers';
|
|
223
|
+
columnName = 'number';
|
|
224
|
+
}
|
|
225
|
+
newTableName = `${rootTableName}_${tableType}`;
|
|
226
|
+
const joinConstraints = [
|
|
227
|
+
eq(adapter.tables[rootTableName].id, adapter.tables[newTableName].parent),
|
|
228
|
+
like(adapter.tables[newTableName].path, `${constraintPath}${field.name}`)
|
|
229
|
+
];
|
|
230
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
|
231
|
+
const conditions = [
|
|
232
|
+
...joinConstraints
|
|
233
|
+
];
|
|
234
|
+
if (locale !== 'all') {
|
|
235
|
+
conditions.push(eq(adapter.tables[newTableName]._locale, locale));
|
|
236
|
+
}
|
|
237
|
+
addJoinTable({
|
|
238
|
+
condition: and(...conditions),
|
|
239
|
+
joins,
|
|
240
|
+
table: adapter.tables[newTableName]
|
|
241
|
+
});
|
|
242
|
+
} else {
|
|
243
|
+
addJoinTable({
|
|
244
|
+
condition: and(...joinConstraints),
|
|
245
|
+
joins,
|
|
246
|
+
table: adapter.tables[newTableName]
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
columnName,
|
|
251
|
+
constraints,
|
|
252
|
+
field,
|
|
253
|
+
table: adapter.tables[newTableName]
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
353
258
|
case 'relationship':
|
|
354
259
|
case 'upload':
|
|
355
260
|
{
|
|
@@ -538,6 +443,101 @@ import { getTableAlias } from './getTableAlias.js';
|
|
|
538
443
|
}
|
|
539
444
|
break;
|
|
540
445
|
}
|
|
446
|
+
case 'select':
|
|
447
|
+
{
|
|
448
|
+
if (field.hasMany) {
|
|
449
|
+
const newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`);
|
|
450
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
|
451
|
+
const conditions = [
|
|
452
|
+
eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
|
453
|
+
eq(adapter.tables[newTableName]._locale, locale)
|
|
454
|
+
];
|
|
455
|
+
if (locale !== 'all') {
|
|
456
|
+
conditions.push(eq(adapter.tables[newTableName]._locale, locale));
|
|
457
|
+
}
|
|
458
|
+
addJoinTable({
|
|
459
|
+
condition: and(...conditions),
|
|
460
|
+
joins,
|
|
461
|
+
table: adapter.tables[newTableName]
|
|
462
|
+
});
|
|
463
|
+
} else {
|
|
464
|
+
addJoinTable({
|
|
465
|
+
condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
|
466
|
+
joins,
|
|
467
|
+
table: adapter.tables[newTableName]
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
columnName: 'value',
|
|
472
|
+
constraints,
|
|
473
|
+
field,
|
|
474
|
+
table: adapter.tables[newTableName]
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
break;
|
|
478
|
+
}
|
|
479
|
+
case 'tab':
|
|
480
|
+
{
|
|
481
|
+
if (tabHasName(field)) {
|
|
482
|
+
return getTableColumnFromPath({
|
|
483
|
+
adapter,
|
|
484
|
+
aliasTable,
|
|
485
|
+
collectionPath,
|
|
486
|
+
columnPrefix: `${columnPrefix}${field.name}_`,
|
|
487
|
+
constraintPath: `${constraintPath}${field.name}.`,
|
|
488
|
+
constraints,
|
|
489
|
+
fields: field.fields,
|
|
490
|
+
joins,
|
|
491
|
+
locale,
|
|
492
|
+
pathSegments: pathSegments.slice(1),
|
|
493
|
+
rootTableName,
|
|
494
|
+
selectFields,
|
|
495
|
+
tableName: newTableName,
|
|
496
|
+
tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,
|
|
497
|
+
value
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
return getTableColumnFromPath({
|
|
501
|
+
adapter,
|
|
502
|
+
aliasTable,
|
|
503
|
+
collectionPath,
|
|
504
|
+
columnPrefix,
|
|
505
|
+
constraintPath,
|
|
506
|
+
constraints,
|
|
507
|
+
fields: field.fields,
|
|
508
|
+
joins,
|
|
509
|
+
locale,
|
|
510
|
+
pathSegments: pathSegments.slice(1),
|
|
511
|
+
rootTableName,
|
|
512
|
+
selectFields,
|
|
513
|
+
tableName: newTableName,
|
|
514
|
+
tableNameSuffix,
|
|
515
|
+
value
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
case 'tabs':
|
|
519
|
+
{
|
|
520
|
+
return getTableColumnFromPath({
|
|
521
|
+
adapter,
|
|
522
|
+
aliasTable,
|
|
523
|
+
collectionPath,
|
|
524
|
+
columnPrefix,
|
|
525
|
+
constraintPath,
|
|
526
|
+
constraints,
|
|
527
|
+
fields: field.tabs.map((tab)=>({
|
|
528
|
+
...tab,
|
|
529
|
+
type: 'tab'
|
|
530
|
+
})),
|
|
531
|
+
joins,
|
|
532
|
+
locale,
|
|
533
|
+
pathSegments: pathSegments.slice(1),
|
|
534
|
+
rootTableName,
|
|
535
|
+
selectFields,
|
|
536
|
+
tableName: newTableName,
|
|
537
|
+
tableNameSuffix,
|
|
538
|
+
value
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
541
|
default:
|
|
542
542
|
{
|
|
543
543
|
break;
|