@payloadcms/drizzle 3.27.0-canary.ecc3f49 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/create.js +3 -3
  2. package/dist/create.js.map +1 -1
  3. package/dist/createGlobal.js +2 -2
  4. package/dist/createGlobal.js.map +1 -1
  5. package/dist/createGlobalVersion.d.ts +1 -1
  6. package/dist/createGlobalVersion.d.ts.map +1 -1
  7. package/dist/createGlobalVersion.js +3 -3
  8. package/dist/createGlobalVersion.js.map +1 -1
  9. package/dist/createVersion.d.ts +1 -1
  10. package/dist/createVersion.d.ts.map +1 -1
  11. package/dist/createVersion.js +1 -1
  12. package/dist/createVersion.js.map +1 -1
  13. package/dist/deleteOne.js +1 -1
  14. package/dist/deleteOne.js.map +1 -1
  15. package/dist/schema/build.d.ts +3 -2
  16. package/dist/schema/build.d.ts.map +1 -1
  17. package/dist/schema/build.js +44 -1
  18. package/dist/schema/build.js.map +1 -1
  19. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  20. package/dist/schema/buildRawSchema.js +5 -1
  21. package/dist/schema/buildRawSchema.js.map +1 -1
  22. package/dist/schema/traverseFields.d.ts.map +1 -1
  23. package/dist/schema/traverseFields.js.map +1 -1
  24. package/dist/update.d.ts +3 -0
  25. package/dist/update.d.ts.map +1 -0
  26. package/dist/update.js +71 -0
  27. package/dist/update.js.map +1 -0
  28. package/dist/updateGlobal.d.ts +1 -1
  29. package/dist/updateGlobal.d.ts.map +1 -1
  30. package/dist/updateGlobal.js +3 -3
  31. package/dist/updateGlobal.js.map +1 -1
  32. package/dist/updateGlobalVersion.d.ts +1 -1
  33. package/dist/updateGlobalVersion.d.ts.map +1 -1
  34. package/dist/updateGlobalVersion.js +3 -3
  35. package/dist/updateGlobalVersion.js.map +1 -1
  36. package/dist/updateOne.js +3 -3
  37. package/dist/updateOne.js.map +1 -1
  38. package/dist/updateVersion.d.ts +1 -1
  39. package/dist/updateVersion.d.ts.map +1 -1
  40. package/dist/updateVersion.js +3 -3
  41. package/dist/updateVersion.js.map +1 -1
  42. package/dist/upsertRow/types.d.ts +1 -1
  43. package/dist/upsertRow/types.d.ts.map +1 -1
  44. package/dist/upsertRow/types.js.map +1 -1
  45. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport {\n fieldAffectsData,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n optionIsObject,\n} from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n DrizzleAdapter,\n IDType,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RelationMap,\n SetColumnID,\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 { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n columnPrefix?: string\n columns: Record<string, RawColumn>\n disableNotNull: boolean\n disableRelsTableUnique?: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: FlattenedField[]\n forceLocalized?: boolean\n indexes: Record<string, RawIndex>\n localesColumns: Record<string, RawColumn>\n localesIndexes: Record<string, RawIndex>\n newTableName: string\n parentIsLocalized: boolean\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n setColumnID: SetColumnID\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 parentIsLocalized,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\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\n const idColumn = columns.id\n\n if (idColumn && ['numeric', 'text', 'uuid', 'varchar'].includes(idColumn.type)) {\n parentIDColType = idColumn.type as IDType\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 targetTable = columns\n let targetIndexes = indexes\n\n const columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n const fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n const isFieldLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\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 (isFieldLocalized || 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] = {\n name: indexName,\n on: isFieldLocalized ? [fieldName, '_locale'] : fieldName,\n unique,\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, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${arrayTableName}_order_idx`,\n on: ['_order'],\n },\n _parentIDIdx: {\n name: `${arrayTableName}_parent_id_idx`,\n on: '_parentID',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIDFk: {\n name: `${arrayTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${arrayTableName}_locale_idx`,\n on: '_locale',\n }\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 baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.flattenedFields) : field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\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 const arrayRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: arrayTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n\n if (\n hasLocalesTable({\n fields: field.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n ) {\n arrayRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${arrayTableName}${adapter.localesSuffix}`,\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\n arrayRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: arrayWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n arrayRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[arrayTableName] = arrayRelations\n\n break\n }\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n\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.rawTables[blockTableName]) {\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n },\n _path: {\n name: '_path',\n type: 'text',\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${blockTableName}_order_idx`,\n on: '_order',\n },\n _parentIDIdx: {\n name: `${blockTableName}_parent_id_idx`,\n on: ['_parentID'],\n },\n _pathIdx: {\n name: `${blockTableName}_path_idx`,\n on: '_path',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIdFk: {\n name: `${blockTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: rootTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${blockTableName}_locale_idx`,\n on: '_locale',\n }\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 baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.flattenedFields) : block.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\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 const blockRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: blockTableName,\n },\n ],\n references: ['id'],\n relationName: `_blocks_${block.slug}`,\n to: rootTableName,\n },\n }\n\n if (\n hasLocalesTable({\n fields: block.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n ) {\n blockRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${blockTableName}${adapter.localesSuffix}`,\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\n blockRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: blockWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n blockRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[blockTableName] = blockRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootTableName,\n table: adapter.rawTables[blockTableName],\n tableLocales: adapter.rawTables[`${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(\n {\n name: columnName,\n type: 'boolean',\n },\n field,\n )\n\n break\n }\n\n case 'code':\n case 'email':\n case 'textarea': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'timestamp',\n mode: 'string',\n precision: 3,\n withTimezone: true,\n },\n field,\n )\n\n break\n }\n\n case 'group':\n case 'tab': {\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.flattenedFields,\n forceLocalized: isFieldLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || isFieldLocalized,\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 case 'richText': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'jsonb',\n },\n field,\n )\n\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(isFieldLocalized && 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(\n {\n name: columnName,\n type: 'numeric',\n },\n field,\n )\n }\n\n break\n }\n\n case 'point': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'geometry',\n },\n field,\n )\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 const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\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\n const baseColumns: Record<string, RawColumn> = {\n order: {\n name: 'order',\n type: 'integer',\n notNull: true,\n },\n parent: {\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n },\n value: {\n name: 'value',\n type: 'enum',\n enumName: createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n }),\n options,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n orderIdx: {\n name: `${selectTableName}_order_idx`,\n on: 'order',\n },\n parentIdx: {\n name: `${selectTableName}_parent_idx`,\n on: 'parent',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n parentFk: {\n name: `${selectTableName}_parent_fk`,\n columns: ['parent'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = {\n name: 'locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes.localeIdx = {\n name: `${selectTableName}_locale_idx`,\n on: 'locale',\n }\n }\n\n if (field.index) {\n baseIndexes.value = {\n name: `${selectTableName}_value_idx`,\n on: 'value',\n }\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull,\n disableUnique,\n fields: [],\n parentIsLocalized: parentIsLocalized || field.localized,\n rootTableName,\n setColumnID,\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.rawRelations[selectTableName] = {\n parent: {\n type: 'one',\n fields: [\n {\n name: 'parent',\n table: selectTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'enum',\n enumName,\n options,\n },\n field,\n )\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: IDType = 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] = {\n name: `${columnName}_id`,\n type: colType,\n reference: {\n name: 'id',\n onDelete: 'set null',\n table: tableName,\n },\n }\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (isFieldLocalized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull = true\n }\n break\n }\n\n if (\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(isFieldLocalized && 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(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\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 = true\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldIsVirtual","fieldShouldBeLocalized","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentIsLocalized","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","setColumnID","uniqueRelationships","versions","withinLocalizedArrayOrBlock","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","idColumn","id","includes","type","forEach","field","name","targetTable","targetIndexes","columnName","fieldName","replace","isFieldLocalized","payload","config","localization","hasMany","unique","index","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","on","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","prefix","versionsCustomName","baseColumns","_order","notNull","_parentID","baseIndexes","_orderIdx","_parentIDIdx","baseForeignKeys","_parentIDFk","foreignColumns","table","onDelete","isLocalized","_locale","locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","flattenedFields","localized","rootRelationships","rootUniqueRelationships","tableName","set","target","arrayRelations","references","relationName","to","_locales","localesSuffix","key","arrayWithLocalized","rawRelations","blockReferences","blocks","_block","block","blockTableName","rawTables","_path","_pathIdx","_parentIdFk","blockRelations","slug","blockWithLocalized","process","env","NODE_ENV","tableLocales","mode","precision","withTimezone","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","enumName","options","map","option","value","selectTableName","order","parent","orderIdx","parentIdx","parentFk","localeIdx","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","reference","required"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { CompoundIndex, FlattenedField } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport {\n fieldAffectsData,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n optionIsObject,\n} from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n DrizzleAdapter,\n IDType,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RelationMap,\n SetColumnID,\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 { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n columnPrefix?: string\n columns: Record<string, RawColumn>\n disableNotNull: boolean\n disableRelsTableUnique?: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: FlattenedField[]\n forceLocalized?: boolean\n indexes: Record<string, RawIndex>\n localesColumns: Record<string, RawColumn>\n localesIndexes: Record<string, RawIndex>\n newTableName: string\n parentIsLocalized: boolean\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n setColumnID: SetColumnID\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 parentIsLocalized,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\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\n const idColumn = columns.id\n\n if (idColumn && ['numeric', 'text', 'uuid', 'varchar'].includes(idColumn.type)) {\n parentIDColType = idColumn.type as IDType\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 targetTable = columns\n let targetIndexes = indexes\n\n const columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n const fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n const isFieldLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\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 (isFieldLocalized || 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] = {\n name: indexName,\n on: isFieldLocalized ? [fieldName, '_locale'] : fieldName,\n unique,\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, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${arrayTableName}_order_idx`,\n on: ['_order'],\n },\n _parentIDIdx: {\n name: `${arrayTableName}_parent_id_idx`,\n on: '_parentID',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIDFk: {\n name: `${arrayTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${arrayTableName}_locale_idx`,\n on: '_locale',\n }\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 baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.flattenedFields) : field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\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 const arrayRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: arrayTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n\n if (\n hasLocalesTable({\n fields: field.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n ) {\n arrayRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${arrayTableName}${adapter.localesSuffix}`,\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\n arrayRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: arrayWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n arrayRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[arrayTableName] = arrayRelations\n\n break\n }\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n\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.rawTables[blockTableName]) {\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n },\n _path: {\n name: '_path',\n type: 'text',\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${blockTableName}_order_idx`,\n on: '_order',\n },\n _parentIDIdx: {\n name: `${blockTableName}_parent_id_idx`,\n on: ['_parentID'],\n },\n _pathIdx: {\n name: `${blockTableName}_path_idx`,\n on: '_path',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIdFk: {\n name: `${blockTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: rootTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${blockTableName}_locale_idx`,\n on: '_locale',\n }\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 baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.flattenedFields) : block.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\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 const blockRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: blockTableName,\n },\n ],\n references: ['id'],\n relationName: `_blocks_${block.slug}`,\n to: rootTableName,\n },\n }\n\n if (\n hasLocalesTable({\n fields: block.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n ) {\n blockRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${blockTableName}${adapter.localesSuffix}`,\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\n blockRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: blockWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n blockRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[blockTableName] = blockRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n parentIsLocalized: parentIsLocalized || field.localized,\n rootTableName,\n table: adapter.rawTables[blockTableName],\n tableLocales: adapter.rawTables[`${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(\n {\n name: columnName,\n type: 'boolean',\n },\n field,\n )\n\n break\n }\n\n case 'code':\n case 'email':\n case 'textarea': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'timestamp',\n mode: 'string',\n precision: 3,\n withTimezone: true,\n },\n field,\n )\n\n break\n }\n\n case 'group':\n case 'tab': {\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.flattenedFields,\n forceLocalized: isFieldLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || isFieldLocalized,\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 case 'richText': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'jsonb',\n },\n field,\n )\n\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(isFieldLocalized && 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(\n {\n name: columnName,\n type: 'numeric',\n },\n field,\n )\n }\n\n break\n }\n\n case 'point': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'geometry',\n },\n field,\n )\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 const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\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\n const baseColumns: Record<string, RawColumn> = {\n order: {\n name: 'order',\n type: 'integer',\n notNull: true,\n },\n parent: {\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n },\n value: {\n name: 'value',\n type: 'enum',\n enumName: createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n }),\n options,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n orderIdx: {\n name: `${selectTableName}_order_idx`,\n on: 'order',\n },\n parentIdx: {\n name: `${selectTableName}_parent_idx`,\n on: 'parent',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n parentFk: {\n name: `${selectTableName}_parent_fk`,\n columns: ['parent'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = {\n name: 'locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes.localeIdx = {\n name: `${selectTableName}_locale_idx`,\n on: 'locale',\n }\n }\n\n if (field.index) {\n baseIndexes.value = {\n name: `${selectTableName}_value_idx`,\n on: 'value',\n }\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull,\n disableUnique,\n fields: [],\n parentIsLocalized: parentIsLocalized || field.localized,\n rootTableName,\n setColumnID,\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.rawRelations[selectTableName] = {\n parent: {\n type: 'one',\n fields: [\n {\n name: 'parent',\n table: selectTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'enum',\n enumName,\n options,\n },\n field,\n )\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: IDType = 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] = {\n name: `${columnName}_id`,\n type: colType,\n reference: {\n name: 'id',\n onDelete: 'set null',\n table: tableName,\n },\n }\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (isFieldLocalized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull = true\n }\n break\n }\n\n if (\n Boolean(isFieldLocalized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(isFieldLocalized && 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(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\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 = true\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldIsVirtual","fieldShouldBeLocalized","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentIsLocalized","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","setColumnID","uniqueRelationships","versions","withinLocalizedArrayOrBlock","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","idColumn","id","includes","type","forEach","field","name","targetTable","targetIndexes","columnName","fieldName","replace","isFieldLocalized","payload","config","localization","hasMany","unique","index","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","on","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","prefix","versionsCustomName","baseColumns","_order","notNull","_parentID","baseIndexes","_orderIdx","_parentIDIdx","baseForeignKeys","_parentIDFk","foreignColumns","table","onDelete","isLocalized","_locale","locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","flattenedFields","localized","rootRelationships","rootUniqueRelationships","tableName","set","target","arrayRelations","references","relationName","to","_locales","localesSuffix","key","arrayWithLocalized","rawRelations","blockReferences","blocks","_block","block","blockTableName","rawTables","_path","_pathIdx","_parentIdFk","blockRelations","slug","blockWithLocalized","process","env","NODE_ENV","tableLocales","mode","precision","withTimezone","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","enumName","options","map","option","value","selectTableName","order","parent","orderIdx","parentIdx","parentFk","localeIdx","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","reference","required"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { UpdateOne } from 'payload';
2
+ export declare const updateOne: UpdateOne;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAYxC,eAAO,MAAM,SAAS,EAAE,SA8DvB,CAAA"}
package/dist/update.js ADDED
@@ -0,0 +1,71 @@
1
+ import toSnakeCase from 'to-snake-case';
2
+ import { buildFindManyArgs } from './find/buildFindManyArgs.js';
3
+ import buildQuery from './queries/buildQuery.js';
4
+ import { selectDistinct } from './queries/selectDistinct.js';
5
+ import { upsertRow } from './upsertRow/index.js';
6
+ import { getTransaction } from './utilities/getTransaction.js';
7
+ export const updateOne = async function updateOne({ id, collection: collectionSlug, data, joins: joinQuery, locale, req, select, where: whereArg }) {
8
+ const db = await getTransaction(this, req);
9
+ const collection = this.payload.collections[collectionSlug].config;
10
+ const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
11
+ const whereToUse = whereArg || {
12
+ id: {
13
+ equals: id
14
+ }
15
+ };
16
+ let idToUpdate = id;
17
+ const { joins, selectFields, where } = buildQuery({
18
+ adapter: this,
19
+ fields: collection.flattenedFields,
20
+ locale,
21
+ tableName,
22
+ where: whereToUse
23
+ });
24
+ const selectDistinctResult = await selectDistinct({
25
+ adapter: this,
26
+ chainedMethods: [
27
+ {
28
+ args: [
29
+ 1
30
+ ],
31
+ method: 'limit'
32
+ }
33
+ ],
34
+ db,
35
+ joins,
36
+ selectFields,
37
+ tableName,
38
+ where
39
+ });
40
+ if (selectDistinctResult?.[0]?.id) {
41
+ idToUpdate = selectDistinctResult?.[0]?.id;
42
+ // If id wasn't passed but `where` without any joins, retrieve it with findFirst
43
+ } else if (whereArg && !joins.length) {
44
+ const findManyArgs = buildFindManyArgs({
45
+ adapter: this,
46
+ depth: 0,
47
+ fields: collection.flattenedFields,
48
+ joinQuery: false,
49
+ select: {},
50
+ tableName
51
+ });
52
+ findManyArgs.where = where;
53
+ const docToUpdate = await db.query[tableName].findFirst(findManyArgs);
54
+ idToUpdate = docToUpdate?.id;
55
+ }
56
+ const result = await upsertRow({
57
+ id: idToUpdate,
58
+ adapter: this,
59
+ data,
60
+ db,
61
+ fields: collection.flattenedFields,
62
+ joinQuery,
63
+ operation: 'update',
64
+ req,
65
+ select,
66
+ tableName
67
+ });
68
+ return result;
69
+ };
70
+
71
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/update.ts"],"sourcesContent":["import type { UpdateOne } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildFindManyArgs } from './find/buildFindManyArgs.js'\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: DrizzleAdapter,\n { id, collection: collectionSlug, data, joins: joinQuery, locale, req, select, where: whereArg },\n) {\n const db = await getTransaction(this, req)\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const whereToUse = whereArg || { id: { equals: id } }\n let idToUpdate = id\n\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.flattenedFields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n\n // If id wasn't passed but `where` without any joins, retrieve it with findFirst\n } else if (whereArg && !joins.length) {\n const findManyArgs = buildFindManyArgs({\n adapter: this,\n depth: 0,\n fields: collection.flattenedFields,\n joinQuery: false,\n select: {},\n tableName,\n })\n\n findManyArgs.where = where\n\n const docToUpdate = await db.query[tableName].findFirst(findManyArgs)\n idToUpdate = docToUpdate?.id\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.flattenedFields,\n joinQuery,\n operation: 'update',\n req,\n select,\n tableName,\n })\n\n return result\n}\n"],"names":["toSnakeCase","buildFindManyArgs","buildQuery","selectDistinct","upsertRow","getTransaction","updateOne","id","collection","collectionSlug","data","joins","joinQuery","locale","req","select","where","whereArg","db","payload","collections","config","tableName","tableNameMap","get","slug","whereToUse","equals","idToUpdate","selectFields","adapter","fields","flattenedFields","selectDistinctResult","chainedMethods","args","method","length","findManyArgs","depth","docToUpdate","query","findFirst","result","operation"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,OAAOC,SAAS,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,OAAOC,QAAQ,EAAE;IAEhG,MAAMC,KAAK,MAAMb,eAAe,IAAI,EAAES;IACtC,MAAMN,aAAa,IAAI,CAACW,OAAO,CAACC,WAAW,CAACX,eAAe,CAACY,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYQ,WAAWiB,IAAI;IACnE,MAAMC,aAAaT,YAAY;QAAEV,IAAI;YAAEoB,QAAQpB;QAAG;IAAE;IACpD,IAAIqB,aAAarB;IAEjB,MAAM,EAAEI,KAAK,EAAEkB,YAAY,EAAEb,KAAK,EAAE,GAAGd,WAAW;QAChD4B,SAAS,IAAI;QACbC,QAAQvB,WAAWwB,eAAe;QAClCnB;QACAS;QACAN,OAAOU;IACT;IAEA,MAAMO,uBAAuB,MAAM9B,eAAe;QAChD2B,SAAS,IAAI;QACbI,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDlB;QACAP;QACAkB;QACAP;QACAN;IACF;IAEA,IAAIiB,sBAAsB,CAAC,EAAE,EAAE1B,IAAI;QACjCqB,aAAaK,sBAAsB,CAAC,EAAE,EAAE1B;IAExC,gFAAgF;IAClF,OAAO,IAAIU,YAAY,CAACN,MAAM0B,MAAM,EAAE;QACpC,MAAMC,eAAerC,kBAAkB;YACrC6B,SAAS,IAAI;YACbS,OAAO;YACPR,QAAQvB,WAAWwB,eAAe;YAClCpB,WAAW;YACXG,QAAQ,CAAC;YACTO;QACF;QAEAgB,aAAatB,KAAK,GAAGA;QAErB,MAAMwB,cAAc,MAAMtB,GAAGuB,KAAK,CAACnB,UAAU,CAACoB,SAAS,CAACJ;QACxDV,aAAaY,aAAajC;IAC5B;IAEA,MAAMoC,SAAS,MAAMvC,UAAU;QAC7BG,IAAIqB;QACJE,SAAS,IAAI;QACbpB;QACAQ;QACAa,QAAQvB,WAAWwB,eAAe;QAClCpB;QACAgC,WAAW;QACX9B;QACAC;QACAO;IACF;IAEA,OAAOqB;AACT,EAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { UpdateGlobalArgs } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function updateGlobal<T extends Record<string, unknown>>(this: DrizzleAdapter, { slug, data, req, returning, select }: UpdateGlobalArgs): Promise<T>;
3
+ export declare function updateGlobal<T extends Record<string, unknown>>(this: DrizzleAdapter, { slug, data, req, select, returning }: UpdateGlobalArgs): Promise<T>;
4
4
  //# sourceMappingURL=updateGlobal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,IAAI,EAAE,cAAc,EACpB,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,gBAAgB,GACvD,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
1
+ {"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,IAAI,EAAE,cAAc,EACpB,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,gBAAgB,GACvD,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
@@ -1,7 +1,7 @@
1
1
  import toSnakeCase from 'to-snake-case';
2
2
  import { upsertRow } from './upsertRow/index.js';
3
3
  import { getTransaction } from './utilities/getTransaction.js';
4
- export async function updateGlobal({ slug, data, req, returning, select }) {
4
+ export async function updateGlobal({ slug, data, req, select, returning }) {
5
5
  const db = await getTransaction(this, req);
6
6
  const globalConfig = this.payload.globals.config.find((config)=>config.slug === slug);
7
7
  const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug));
@@ -17,10 +17,10 @@ export async function updateGlobal({ slug, data, req, returning, select }) {
17
17
  data,
18
18
  db,
19
19
  fields: globalConfig.flattenedFields,
20
- ignoreResult: returning === false,
21
20
  req,
22
21
  select,
23
- tableName
22
+ tableName,
23
+ ignoreResult: returning === false
24
24
  });
25
25
  if (returning === false) {
26
26
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { UpdateGlobalArgs } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobal<T extends Record<string, unknown>>(\n this: DrizzleAdapter,\n { slug, data, req, returning, select }: UpdateGlobalArgs,\n): Promise<T> {\n const db = await getTransaction(this, req)\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const existingGlobal = await db.query[tableName].findFirst({})\n\n const result = await upsertRow<{ globalType: string } & T>({\n ...(existingGlobal ? { id: existingGlobal.id, operation: 'update' } : { operation: 'create' }),\n adapter: this,\n data,\n db,\n fields: globalConfig.flattenedFields,\n ignoreResult: returning === false,\n req,\n select,\n tableName,\n })\n\n if (returning === false) {\n return null\n }\n\n result.globalType = slug\n\n return result\n}\n"],"names":["toSnakeCase","upsertRow","getTransaction","updateGlobal","slug","data","req","returning","select","db","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","existingGlobal","query","findFirst","result","id","operation","adapter","fields","flattenedFields","ignoreResult","globalType"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,aAEpB,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAoB;IAExD,MAAMC,KAAK,MAAMP,eAAe,IAAI,EAAEI;IACtC,MAAMI,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOT,IAAI,KAAKA;IAClF,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACjB,YAAYU,aAAaN,IAAI;IAErE,MAAMc,iBAAiB,MAAMT,GAAGU,KAAK,CAACJ,UAAU,CAACK,SAAS,CAAC,CAAC;IAE5D,MAAMC,SAAS,MAAMpB,UAAsC;QACzD,GAAIiB,iBAAiB;YAAEI,IAAIJ,eAAeI,EAAE;YAAEC,WAAW;QAAS,IAAI;YAAEA,WAAW;QAAS,CAAC;QAC7FC,SAAS,IAAI;QACbnB;QACAI;QACAgB,QAAQf,aAAagB,eAAe;QACpCC,cAAcpB,cAAc;QAC5BD;QACAE;QACAO;IACF;IAEA,IAAIR,cAAc,OAAO;QACvB,OAAO;IACT;IAEAc,OAAOO,UAAU,GAAGxB;IAEpB,OAAOiB;AACT"}
1
+ {"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { UpdateGlobalArgs } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobal<T extends Record<string, unknown>>(\n this: DrizzleAdapter,\n { slug, data, req, select, returning }: UpdateGlobalArgs,\n): Promise<T> {\n const db = await getTransaction(this, req)\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const existingGlobal = await db.query[tableName].findFirst({})\n\n const result = await upsertRow<{ globalType: string } & T>({\n ...(existingGlobal ? { id: existingGlobal.id, operation: 'update' } : { operation: 'create' }),\n adapter: this,\n data,\n db,\n fields: globalConfig.flattenedFields,\n req,\n select,\n tableName,\n ignoreResult: returning === false,\n })\n\n if (returning === false) {\n return null\n }\n\n result.globalType = slug\n\n return result\n}\n"],"names":["toSnakeCase","upsertRow","getTransaction","updateGlobal","slug","data","req","select","returning","db","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","existingGlobal","query","findFirst","result","id","operation","adapter","fields","flattenedFields","ignoreResult","globalType"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,aAEpB,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAEC,MAAM,EAAEC,SAAS,EAAoB;IAExD,MAAMC,KAAK,MAAMP,eAAe,IAAI,EAAEI;IACtC,MAAMI,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOT,IAAI,KAAKA;IAClF,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACjB,YAAYU,aAAaN,IAAI;IAErE,MAAMc,iBAAiB,MAAMT,GAAGU,KAAK,CAACJ,UAAU,CAACK,SAAS,CAAC,CAAC;IAE5D,MAAMC,SAAS,MAAMpB,UAAsC;QACzD,GAAIiB,iBAAiB;YAAEI,IAAIJ,eAAeI,EAAE;YAAEC,WAAW;QAAS,IAAI;YAAEA,WAAW;QAAS,CAAC;QAC7FC,SAAS,IAAI;QACbnB;QACAI;QACAgB,QAAQf,aAAagB,eAAe;QACpCpB;QACAC;QACAQ;QACAY,cAAcnB,cAAc;IAC9B;IAEA,IAAIA,cAAc,OAAO;QACvB,OAAO;IACT;IAEAa,OAAOO,UAAU,GAAGxB;IAEpB,OAAOiB;AACT"}
@@ -1,4 +1,4 @@
1
1
  import type { TypeWithID, TypeWithVersion, UpdateGlobalVersionArgs } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function updateGlobalVersion<T extends TypeWithID>(this: DrizzleAdapter, { id, global, locale, req, returning, select, versionData, where: whereArg, }: UpdateGlobalVersionArgs<T>): Promise<TypeWithVersion<T>>;
3
+ export declare function updateGlobalVersion<T extends TypeWithID>(this: DrizzleAdapter, { id, global, locale, req, select, versionData, where: whereArg, returning, }: UpdateGlobalVersionArgs<T>): Promise<TypeWithVersion<T>>;
4
4
  //# sourceMappingURL=updateGlobalVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,MAAM,EACN,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,uBAAuB,CAAC,CAAC,CAAC,+BAyC9B"}
1
+ {"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,MAAM,EACN,MAAM,EACN,GAAG,EACH,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,EACf,SAAS,GACV,EAAE,uBAAuB,CAAC,CAAC,CAAC,+BAyC9B"}
@@ -3,7 +3,7 @@ import toSnakeCase from 'to-snake-case';
3
3
  import buildQuery from './queries/buildQuery.js';
4
4
  import { upsertRow } from './upsertRow/index.js';
5
5
  import { getTransaction } from './utilities/getTransaction.js';
6
- export async function updateGlobalVersion({ id, global, locale, req, returning, select, versionData, where: whereArg }) {
6
+ export async function updateGlobalVersion({ id, global, locale, req, select, versionData, where: whereArg, returning }) {
7
7
  const db = await getTransaction(this, req);
8
8
  const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
9
9
  const whereToUse = whereArg || {
@@ -26,12 +26,12 @@ export async function updateGlobalVersion({ id, global, locale, req, returning,
26
26
  data: versionData,
27
27
  db,
28
28
  fields,
29
- ignoreResult: returning === false,
30
29
  operation: 'update',
31
30
  req,
32
31
  select,
33
32
  tableName,
34
- where
33
+ where,
34
+ ignoreResult: returning === false
35
35
  });
36
36
  if (returning === false) {
37
37
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import type {\n SanitizedGlobalConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n global,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const whereToUse = whereArg || { id: { equals: id } }\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateGlobalVersion","id","global","locale","req","returning","select","versionData","where","whereArg","db","globalConfig","payload","globals","config","find","slug","whereToUse","equals","tableName","tableNameMap","get","versionsSuffix","fields","adapter","result","data","ignoreResult","operation"],"mappings":"AAOA,SAASA,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,MAAM,EACNC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACY;IAE7B,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASd;IAEzB,MAAMe,aAAaR,YAAY;QAAER,IAAI;YAAEiB,QAAQjB;QAAG;IAAE;IAEpD,MAAMkB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEzB,YAAYe,aAAaK,IAAI,IAAI,IAAI,CAACM,cAAc,EAAE;IAG5D,MAAMC,SAAS5B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,MAAM,EAAEH,KAAK,EAAE,GAAGX,WAAW;QAC3B2B,SAAS,IAAI;QACbD;QACApB;QACAgB;QACAX,OAAOS;IACT;IAEA,MAAMQ,SAAS,MAAM3B,UAA8B;QACjDG;QACAuB,SAAS,IAAI;QACbE,MAAMnB;QACNG;QACAa;QACAI,cAActB,cAAc;QAC5BuB,WAAW;QACXxB;QACAE;QACAa;QACAX;IACF;IAEA,IAAIH,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOoB;AACT"}
1
+ {"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import type {\n SanitizedGlobalConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n global,\n locale,\n req,\n select,\n versionData,\n where: whereArg,\n returning,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const whereToUse = whereArg || { id: { equals: id } }\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n ignoreResult: returning === false,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateGlobalVersion","id","global","locale","req","select","versionData","where","whereArg","returning","db","globalConfig","payload","globals","config","find","slug","whereToUse","equals","tableName","tableNameMap","get","versionsSuffix","fields","adapter","result","data","operation","ignoreResult"],"mappings":"AAOA,SAASA,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,MAAM,EACNC,MAAM,EACNC,GAAG,EACHC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACfC,SAAS,EACkB;IAE7B,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASd;IAEzB,MAAMe,aAAaT,YAAY;QAAEP,IAAI;YAAEiB,QAAQjB;QAAG;IAAE;IAEpD,MAAMkB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEzB,YAAYe,aAAaK,IAAI,IAAI,IAAI,CAACM,cAAc,EAAE;IAG5D,MAAMC,SAAS5B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,MAAM,EAAEJ,KAAK,EAAE,GAAGV,WAAW;QAC3B2B,SAAS,IAAI;QACbD;QACApB;QACAgB;QACAZ,OAAOU;IACT;IAEA,MAAMQ,SAAS,MAAM3B,UAA8B;QACjDG;QACAuB,SAAS,IAAI;QACbE,MAAMpB;QACNI;QACAa;QACAI,WAAW;QACXvB;QACAC;QACAc;QACAZ;QACAqB,cAAcnB,cAAc;IAC9B;IAEA,IAAIA,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOgB;AACT"}
package/dist/updateOne.js CHANGED
@@ -3,7 +3,7 @@ import buildQuery from './queries/buildQuery.js';
3
3
  import { selectDistinct } from './queries/selectDistinct.js';
4
4
  import { upsertRow } from './upsertRow/index.js';
5
5
  import { getTransaction } from './utilities/getTransaction.js';
6
- export const updateOne = async function updateOne({ id, collection: collectionSlug, data, joins: joinQuery, locale, req, returning, select, where: whereArg }) {
6
+ export const updateOne = async function updateOne({ id, collection: collectionSlug, data, joins: joinQuery, locale, req, select, where: whereArg, returning }) {
7
7
  const db = await getTransaction(this, req);
8
8
  const collection = this.payload.collections[collectionSlug].config;
9
9
  const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
@@ -53,12 +53,12 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
53
53
  data,
54
54
  db,
55
55
  fields: collection.flattenedFields,
56
- ignoreResult: returning === false,
57
56
  joinQuery,
58
57
  operation: 'update',
59
58
  req,
60
59
  select,
61
- tableName
60
+ tableName,
61
+ ignoreResult: returning === false
62
62
  });
63
63
  if (returning === false) {
64
64
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { UpdateOne } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: DrizzleAdapter,\n {\n id,\n collection: collectionSlug,\n data,\n joins: joinQuery,\n locale,\n req,\n returning,\n select,\n where: whereArg,\n },\n) {\n const db = await getTransaction(this, req)\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const whereToUse = whereArg || { id: { equals: id } }\n let idToUpdate = id\n\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.flattenedFields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n // selectDistinct will only return if there are joins\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n // If id wasn't passed but `where` without any joins, retrieve it with findFirst\n } else if (whereArg && !joins.length) {\n const table = this.tables[tableName]\n\n const docsToUpdate = await (db as LibSQLDatabase)\n .select({\n id: table.id,\n })\n .from(table)\n .where(where)\n .limit(1)\n idToUpdate = docsToUpdate?.[0]?.id\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n joinQuery,\n operation: 'update',\n req,\n select,\n tableName,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","upsertRow","getTransaction","updateOne","id","collection","collectionSlug","data","joins","joinQuery","locale","req","returning","select","where","whereArg","db","payload","collections","config","tableName","tableNameMap","get","slug","whereToUse","equals","idToUpdate","selectFields","adapter","fields","flattenedFields","selectDistinctResult","chainedMethods","args","method","length","table","tables","docsToUpdate","from","limit","result","ignoreResult","operation"],"mappings":"AAGA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,OAAOC,SAAS,EAChBC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,OAAOC,QAAQ,EAChB;IAED,MAAMC,KAAK,MAAMd,eAAe,IAAI,EAAES;IACtC,MAAMN,aAAa,IAAI,CAACY,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYO,WAAWkB,IAAI;IACnE,MAAMC,aAAaT,YAAY;QAAEX,IAAI;YAAEqB,QAAQrB;QAAG;IAAE;IACpD,IAAIsB,aAAatB;IAEjB,MAAM,EAAEI,KAAK,EAAEmB,YAAY,EAAEb,KAAK,EAAE,GAAGf,WAAW;QAChD6B,SAAS,IAAI;QACbC,QAAQxB,WAAWyB,eAAe;QAClCpB;QACAU;QACAN,OAAOU;IACT;IAEA,qDAAqD;IACrD,MAAMO,uBAAuB,MAAM/B,eAAe;QAChD4B,SAAS,IAAI;QACbI,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDlB;QACAR;QACAmB;QACAP;QACAN;IACF;IAEA,IAAIiB,sBAAsB,CAAC,EAAE,EAAE3B,IAAI;QACjCsB,aAAaK,sBAAsB,CAAC,EAAE,EAAE3B;IACxC,gFAAgF;IAClF,OAAO,IAAIW,YAAY,CAACP,MAAM2B,MAAM,EAAE;QACpC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACjB,UAAU;QAEpC,MAAMkB,eAAe,MAAM,AAACtB,GACzBH,MAAM,CAAC;YACNT,IAAIgC,MAAMhC,EAAE;QACd,GACCmC,IAAI,CAACH,OACLtB,KAAK,CAACA,OACN0B,KAAK,CAAC;QACTd,aAAaY,cAAc,CAAC,EAAE,EAAElC;IAClC;IAEA,MAAMqC,SAAS,MAAMxC,UAAU;QAC7BG,IAAIsB;QACJE,SAAS,IAAI;QACbrB;QACAS;QACAa,QAAQxB,WAAWyB,eAAe;QAClCY,cAAc9B,cAAc;QAC5BH;QACAkC,WAAW;QACXhC;QACAE;QACAO;IACF;IAEA,IAAIR,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAO6B;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { UpdateOne } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: DrizzleAdapter,\n {\n id,\n collection: collectionSlug,\n data,\n joins: joinQuery,\n locale,\n req,\n select,\n where: whereArg,\n returning,\n },\n) {\n const db = await getTransaction(this, req)\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const whereToUse = whereArg || { id: { equals: id } }\n let idToUpdate = id\n\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.flattenedFields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n // selectDistinct will only return if there are joins\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n // If id wasn't passed but `where` without any joins, retrieve it with findFirst\n } else if (whereArg && !joins.length) {\n const table = this.tables[tableName]\n\n const docsToUpdate = await (db as LibSQLDatabase)\n .select({\n id: table.id,\n })\n .from(table)\n .where(where)\n .limit(1)\n idToUpdate = docsToUpdate?.[0]?.id\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.flattenedFields,\n joinQuery,\n operation: 'update',\n req,\n select,\n tableName,\n ignoreResult: returning === false,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","upsertRow","getTransaction","updateOne","id","collection","collectionSlug","data","joins","joinQuery","locale","req","select","where","whereArg","returning","db","payload","collections","config","tableName","tableNameMap","get","slug","whereToUse","equals","idToUpdate","selectFields","adapter","fields","flattenedFields","selectDistinctResult","chainedMethods","args","method","length","table","tables","docsToUpdate","from","limit","result","operation","ignoreResult"],"mappings":"AAGA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,OAAOC,SAAS,EAChBC,MAAM,EACNC,GAAG,EACHC,MAAM,EACNC,OAAOC,QAAQ,EACfC,SAAS,EACV;IAED,MAAMC,KAAK,MAAMd,eAAe,IAAI,EAAES;IACtC,MAAMN,aAAa,IAAI,CAACY,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYO,WAAWkB,IAAI;IACnE,MAAMC,aAAaV,YAAY;QAAEV,IAAI;YAAEqB,QAAQrB;QAAG;IAAE;IACpD,IAAIsB,aAAatB;IAEjB,MAAM,EAAEI,KAAK,EAAEmB,YAAY,EAAEd,KAAK,EAAE,GAAGd,WAAW;QAChD6B,SAAS,IAAI;QACbC,QAAQxB,WAAWyB,eAAe;QAClCpB;QACAU;QACAP,OAAOW;IACT;IAEA,qDAAqD;IACrD,MAAMO,uBAAuB,MAAM/B,eAAe;QAChD4B,SAAS,IAAI;QACbI,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDlB;QACAR;QACAmB;QACAP;QACAP;IACF;IAEA,IAAIkB,sBAAsB,CAAC,EAAE,EAAE3B,IAAI;QACjCsB,aAAaK,sBAAsB,CAAC,EAAE,EAAE3B;IACxC,gFAAgF;IAClF,OAAO,IAAIU,YAAY,CAACN,MAAM2B,MAAM,EAAE;QACpC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACjB,UAAU;QAEpC,MAAMkB,eAAe,MAAM,AAACtB,GACzBJ,MAAM,CAAC;YACNR,IAAIgC,MAAMhC,EAAE;QACd,GACCmC,IAAI,CAACH,OACLvB,KAAK,CAACA,OACN2B,KAAK,CAAC;QACTd,aAAaY,cAAc,CAAC,EAAE,EAAElC;IAClC;IAEA,MAAMqC,SAAS,MAAMxC,UAAU;QAC7BG,IAAIsB;QACJE,SAAS,IAAI;QACbrB;QACAS;QACAa,QAAQxB,WAAWyB,eAAe;QAClCrB;QACAiC,WAAW;QACX/B;QACAC;QACAQ;QACAuB,cAAc5B,cAAc;IAC9B;IAEA,IAAIA,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAO0B;AACT,EAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { TypeWithID, TypeWithVersion, UpdateVersionArgs } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function updateVersion<T extends TypeWithID>(this: DrizzleAdapter, { id, collection, locale, req, returning, select, versionData, where: whereArg, }: UpdateVersionArgs<T>): Promise<TypeWithVersion<T>>;
3
+ export declare function updateVersion<T extends TypeWithID>(this: DrizzleAdapter, { id, collection, locale, req, select, versionData, where: whereArg, returning, }: UpdateVersionArgs<T>): Promise<TypeWithVersion<T>>;
4
4
  //# sourceMappingURL=updateVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,UAAU,EACV,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAuCxB"}
1
+ {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,UAAU,EACV,MAAM,EACN,GAAG,EACH,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,EACf,SAAS,GACV,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAuCxB"}
@@ -3,7 +3,7 @@ import toSnakeCase from 'to-snake-case';
3
3
  import buildQuery from './queries/buildQuery.js';
4
4
  import { upsertRow } from './upsertRow/index.js';
5
5
  import { getTransaction } from './utilities/getTransaction.js';
6
- export async function updateVersion({ id, collection, locale, req, returning, select, versionData, where: whereArg }) {
6
+ export async function updateVersion({ id, collection, locale, req, select, versionData, where: whereArg, returning }) {
7
7
  const db = await getTransaction(this, req);
8
8
  const collectionConfig = this.payload.collections[collection].config;
9
9
  const whereToUse = whereArg || {
@@ -26,13 +26,13 @@ export async function updateVersion({ id, collection, locale, req, returning, se
26
26
  data: versionData,
27
27
  db,
28
28
  fields,
29
- ignoreResult: returning === false,
30
29
  joinQuery: false,
31
30
  operation: 'update',
32
31
  req,
33
32
  select,
34
33
  tableName,
35
- where
34
+ where,
35
+ ignoreResult: returning === false
36
36
  });
37
37
  if (returning === false) {
38
38
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type {\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateVersionArgs,\n} from 'payload'\n\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n collection,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const whereToUse = whereArg || { id: { equals: id } }\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n ignoreResult: returning === false,\n joinQuery: false,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateVersion","id","collection","locale","req","returning","select","versionData","where","whereArg","db","collectionConfig","payload","collections","config","whereToUse","equals","tableName","tableNameMap","get","slug","versionsSuffix","fields","adapter","result","data","ignoreResult","joinQuery","operation"],"mappings":"AAOA,SAASA,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,cAEpB,EACEC,EAAE,EACFC,UAAU,EACVC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACM;IAEvB,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACX,WAAW,CAACY,MAAM;IAC/F,MAAMC,aAAaN,YAAY;QAAER,IAAI;YAAEe,QAAQf;QAAG;IAAE;IACpD,MAAMgB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYe,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAAS3B,6BAA6B,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAM,EAAEH,KAAK,EAAE,GAAGX,WAAW;QAC3B0B,SAAS,IAAI;QACbD;QACAnB;QACAc;QACAT,OAAOO;IACT;IAEA,MAAMS,SAAS,MAAM1B,UAA8B;QACjDG;QACAsB,SAAS,IAAI;QACbE,MAAMlB;QACNG;QACAY;QACAI,cAAcrB,cAAc;QAC5BsB,WAAW;QACXC,WAAW;QACXxB;QACAE;QACAW;QACAT;IACF;IAEA,IAAIH,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOmB;AACT"}
1
+ {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type {\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateVersionArgs,\n} from 'payload'\n\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n collection,\n locale,\n req,\n select,\n versionData,\n where: whereArg,\n returning,\n }: UpdateVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const whereToUse = whereArg || { id: { equals: id } }\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n joinQuery: false,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n ignoreResult: returning === false,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateVersion","id","collection","locale","req","select","versionData","where","whereArg","returning","db","collectionConfig","payload","collections","config","whereToUse","equals","tableName","tableNameMap","get","slug","versionsSuffix","fields","adapter","result","data","joinQuery","operation","ignoreResult"],"mappings":"AAOA,SAASA,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,cAEpB,EACEC,EAAE,EACFC,UAAU,EACVC,MAAM,EACNC,GAAG,EACHC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACfC,SAAS,EACY;IAEvB,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACX,WAAW,CAACY,MAAM;IAC/F,MAAMC,aAAaP,YAAY;QAAEP,IAAI;YAAEe,QAAQf;QAAG;IAAE;IACpD,MAAMgB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYe,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAAS3B,6BAA6B,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAM,EAAEJ,KAAK,EAAE,GAAGV,WAAW;QAC3B0B,SAAS,IAAI;QACbD;QACAnB;QACAc;QACAV,OAAOQ;IACT;IAEA,MAAMS,SAAS,MAAM1B,UAA8B;QACjDG;QACAsB,SAAS,IAAI;QACbE,MAAMnB;QACNI;QACAY;QACAI,WAAW;QACXC,WAAW;QACXvB;QACAC;QACAY;QACAV;QACAqB,cAAcnB,cAAc;IAC9B;IAEA,IAAIA,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOe;AACT"}
@@ -10,7 +10,7 @@ type BaseArgs = {
10
10
  * When true, skips reading the data back from the database and returns the input data
11
11
  * @default false
12
12
  */
13
- ignoreResult?: 'idOnly' | boolean;
13
+ ignoreResult?: boolean | 'idOnly';
14
14
  joinQuery?: JoinQuery;
15
15
  path?: string;
16
16
  req?: Partial<PayloadRequest>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upsertRow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,QAAQ,CAAA;AAEZ,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACrB,GAAG,QAAQ,CAAA;AAEZ,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upsertRow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,QAAQ,CAAA;AAEZ,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACrB,GAAG,QAAQ,CAAA;AAEZ,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { FlattenedField, JoinQuery, PayloadRequest, SelectType } from 'payload'\n\nimport type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js'\n\ntype BaseArgs = {\n adapter: DrizzleAdapter\n data: Record<string, unknown>\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n fields: FlattenedField[]\n /**\n * When true, skips reading the data back from the database and returns the input data\n * @default false\n */\n ignoreResult?: 'idOnly' | boolean\n joinQuery?: JoinQuery\n path?: string\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\ntype CreateArgs = {\n id?: never\n joinQuery?: never\n operation: 'create'\n select?: SelectType\n upsertTarget?: never\n where?: never\n} & BaseArgs\n\ntype UpdateArgs = {\n id?: number | string\n joinQuery?: JoinQuery\n operation: 'update'\n select?: SelectType\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n} & BaseArgs\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"mappings":"AAuCA,WAA0C"}
1
+ {"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { FlattenedField, JoinQuery, PayloadRequest, SelectType } from 'payload'\n\nimport type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js'\n\ntype BaseArgs = {\n adapter: DrizzleAdapter\n data: Record<string, unknown>\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n fields: FlattenedField[]\n /**\n * When true, skips reading the data back from the database and returns the input data\n * @default false\n */\n ignoreResult?: boolean | 'idOnly'\n joinQuery?: JoinQuery\n path?: string\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\ntype CreateArgs = {\n id?: never\n joinQuery?: never\n operation: 'create'\n select?: SelectType\n upsertTarget?: never\n where?: never\n} & BaseArgs\n\ntype UpdateArgs = {\n id?: number | string\n joinQuery?: JoinQuery\n operation: 'update'\n select?: SelectType\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n} & BaseArgs\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"mappings":"AAuCA,WAA0C"}