@payloadcms/drizzle 3.25.0-canary.fd53f68 → 3.26.0-canary.bbb3083
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +12 -2
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.js +12 -3
- package/dist/postgres/createJSONQuery/index.js.map +1 -1
- package/dist/queries/operatorMap.d.ts +1 -1
- package/dist/queries/operatorMap.d.ts.map +1 -1
- package/dist/queries/operatorMap.js +2 -1
- package/dist/queries/operatorMap.js.map +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +10 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +12 -1
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/dist/{update.d.ts → updateOne.d.ts} +1 -1
- package/dist/updateOne.d.ts.map +1 -0
- package/dist/{update.js → updateOne.js} +7 -13
- package/dist/updateOne.js.map +1 -0
- package/package.json +3 -3
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AA+CpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AA+CpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,4BAwpBnB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { and, asc, desc, eq, or, sql } from 'drizzle-orm';
|
|
1
|
+
import { and, asc, count, desc, eq, or, sql } from 'drizzle-orm';
|
|
2
2
|
import { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
4
|
import buildQuery from '../queries/buildQuery.js';
|
|
@@ -259,7 +259,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
259
259
|
if (joinQuery[joinSchemaPath] === false) {
|
|
260
260
|
break;
|
|
261
261
|
}
|
|
262
|
-
const { limit: limitArg = field.defaultLimit ?? 10, page, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
|
|
262
|
+
const { count: shouldCount = false, limit: limitArg = field.defaultLimit ?? 10, page, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
|
|
263
263
|
let limit = limitArg;
|
|
264
264
|
if (limit !== 0) {
|
|
265
265
|
// get an additional document and slice it later to determine if there is a next page
|
|
@@ -319,6 +319,11 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
319
319
|
if (where && Object.keys(where).length > 0) {
|
|
320
320
|
sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias));
|
|
321
321
|
}
|
|
322
|
+
if (shouldCount) {
|
|
323
|
+
currentArgs.extras[`${columnName}_count`] = sql`${db.select({
|
|
324
|
+
count: count()
|
|
325
|
+
}).from(sql`${currentQuery.as(subQueryAlias)}`).where(sqlWhere)}`.as(`${columnName}_count`);
|
|
326
|
+
}
|
|
322
327
|
currentQuery = currentQuery.orderBy(sortOrder(sql`"sortPath"`));
|
|
323
328
|
if (page && limit !== 0) {
|
|
324
329
|
const offset = (page - 1) * limit;
|
|
@@ -425,6 +430,11 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
425
430
|
methods: chainedMethods,
|
|
426
431
|
query: db.select(selectFields).from(newAliasTable).where(subQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column)))
|
|
427
432
|
}).as(subQueryAlias);
|
|
433
|
+
if (shouldCount) {
|
|
434
|
+
currentArgs.extras[`${columnName}_count`] = sql`${db.select({
|
|
435
|
+
count: count()
|
|
436
|
+
}).from(sql`${db.select(selectFields).from(newAliasTable).where(subQueryWhere).as(`${subQueryAlias}_count_subquery`)}`)}`.as(`${subQueryAlias}_count`);
|
|
437
|
+
}
|
|
428
438
|
currentArgs.extras[columnName] = sql`${db.select({
|
|
429
439
|
result: jsonAggBuildObject(adapter, {
|
|
430
440
|
id: sql.raw(`"${subQueryAlias}".id`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { and, asc, desc, eq, or, sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\nconst flattenAllWherePaths = (where: Where, paths: string[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push(k.split('.').join('_'))\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n const payloadOperator = Object.keys(where[k])[0]\n const value = where[k][payloadOperator]\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${k.split('.').join('_')}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: string[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n // Select for WHERE and Fallback NULL\n for (const path of wherePaths) {\n if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n selectFields[path] = sql`null`.as(path)\n }\n }\n\n const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n adapter.tables[currentTableName].id,\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n currentQuery = currentQuery.offset(offset) as SQLSelect\n }\n }\n\n if (limit) {\n currentQuery = currentQuery.limit(limit) as SQLSelect\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n id: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n }),\n })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(columnName)\n } else {\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n chainedMethods.push({\n args: [offset],\n method: 'offset',\n })\n }\n }\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","desc","eq","or","sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","operatorMap","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","split","join","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","raw","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","query","from","unionAll","subQueryAlias","sqlWhere","offset","extras","currentIDColumn","joinQueryWhere","targetField","equals","newAliasTable","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","args","method","key","val","pop","subQuery","methods","map","column","order","result","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { and, asc, count, desc, eq, or, sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\nconst flattenAllWherePaths = (where: Where, paths: string[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push(k.split('.').join('_'))\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n const payloadOperator = Object.keys(where[k])[0]\n const value = where[k][payloadOperator]\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${k.split('.').join('_')}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: string[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n // Select for WHERE and Fallback NULL\n for (const path of wherePaths) {\n if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n selectFields[path] = sql`null`.as(path)\n }\n }\n\n const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n adapter.tables[currentTableName].id,\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({ count: count() })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(`${columnName}_count`)\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n currentQuery = currentQuery.offset(offset) as SQLSelect\n }\n }\n\n if (limit) {\n currentQuery = currentQuery.limit(limit) as SQLSelect\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n id: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n }),\n })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(columnName)\n } else {\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n chainedMethods.push({\n args: [offset],\n method: 'offset',\n })\n }\n }\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(\n sql`${db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .as(`${subQueryAlias}_count_subquery`)}`,\n )}`.as(`${subQueryAlias}_count`)\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","count","desc","eq","or","sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","operatorMap","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","split","join","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","raw","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","query","from","unionAll","subQueryAlias","sqlWhere","extras","offset","currentIDColumn","joinQueryWhere","targetField","equals","newAliasTable","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","args","method","key","val","pop","subQuery","methods","map","column","order","result","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,9 +31,9 @@ export { buildRawSchema } from './schema/buildRawSchema.js';
|
|
|
31
31
|
export { beginTransaction } from './transactions/beginTransaction.js';
|
|
32
32
|
export { commitTransaction } from './transactions/commitTransaction.js';
|
|
33
33
|
export { rollbackTransaction } from './transactions/rollbackTransaction.js';
|
|
34
|
-
export { updateOne } from './update.js';
|
|
35
34
|
export { updateGlobal } from './updateGlobal.js';
|
|
36
35
|
export { updateGlobalVersion } from './updateGlobalVersion.js';
|
|
36
|
+
export { updateOne } from './updateOne.js';
|
|
37
37
|
export { updateVersion } from './updateVersion.js';
|
|
38
38
|
export { upsertRow } from './upsertRow/index.js';
|
|
39
39
|
export { buildCreateMigration } from './utilities/buildCreateMigration.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -30,9 +30,9 @@ export { buildRawSchema } from './schema/buildRawSchema.js';
|
|
|
30
30
|
export { beginTransaction } from './transactions/beginTransaction.js';
|
|
31
31
|
export { commitTransaction } from './transactions/commitTransaction.js';
|
|
32
32
|
export { rollbackTransaction } from './transactions/rollbackTransaction.js';
|
|
33
|
-
export { updateOne } from './update.js';
|
|
34
33
|
export { updateGlobal } from './updateGlobal.js';
|
|
35
34
|
export { updateGlobalVersion } from './updateGlobalVersion.js';
|
|
35
|
+
export { updateOne } from './updateOne.js';
|
|
36
36
|
export { updateVersion } from './updateVersion.js';
|
|
37
37
|
export { upsertRow } from './upsertRow/index.js';
|
|
38
38
|
export { buildCreateMigration } from './utilities/buildCreateMigration.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { count } from './count.js'\nexport { countGlobalVersions } from './countGlobalVersions.js'\nexport { countVersions } from './countVersions.js'\nexport { create } from './create.js'\nexport { createGlobal } from './createGlobal.js'\nexport { createGlobalVersion } from './createGlobalVersion.js'\nexport { createTableName } from './createTableName.js'\nexport { createVersion } from './createVersion.js'\nexport { deleteMany } from './deleteMany.js'\nexport { deleteOne } from './deleteOne.js'\nexport { deleteVersions } from './deleteVersions.js'\nexport { destroy } from './destroy.js'\nexport { find } from './find.js'\nexport { chainMethods } from './find/chainMethods.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.js'\nexport { findMigrationDir } from './findMigrationDir.js'\nexport { findOne } from './findOne.js'\nexport { findVersions } from './findVersions.js'\nexport { migrate } from './migrate.js'\nexport { migrateDown } from './migrateDown.js'\nexport { migrateFresh } from './migrateFresh.js'\nexport { migrateRefresh } from './migrateRefresh.js'\nexport { migrateReset } from './migrateReset.js'\nexport { migrateStatus } from './migrateStatus.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { buildDrizzleRelations } from './schema/buildDrizzleRelations.js'\nexport { buildRawSchema } from './schema/buildRawSchema.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { count } from './count.js'\nexport { countGlobalVersions } from './countGlobalVersions.js'\nexport { countVersions } from './countVersions.js'\nexport { create } from './create.js'\nexport { createGlobal } from './createGlobal.js'\nexport { createGlobalVersion } from './createGlobalVersion.js'\nexport { createTableName } from './createTableName.js'\nexport { createVersion } from './createVersion.js'\nexport { deleteMany } from './deleteMany.js'\nexport { deleteOne } from './deleteOne.js'\nexport { deleteVersions } from './deleteVersions.js'\nexport { destroy } from './destroy.js'\nexport { find } from './find.js'\nexport { chainMethods } from './find/chainMethods.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.js'\nexport { findMigrationDir } from './findMigrationDir.js'\nexport { findOne } from './findOne.js'\nexport { findVersions } from './findVersions.js'\nexport { migrate } from './migrate.js'\nexport { migrateDown } from './migrateDown.js'\nexport { migrateFresh } from './migrateFresh.js'\nexport { migrateRefresh } from './migrateRefresh.js'\nexport { migrateReset } from './migrateReset.js'\nexport { migrateStatus } from './migrateStatus.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { buildDrizzleRelations } from './schema/buildDrizzleRelations.js'\nexport { buildRawSchema } from './schema/buildRawSchema.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport { updateGlobal } from './updateGlobal.js'\nexport { updateGlobalVersion } from './updateGlobalVersion.js'\nexport { updateOne } from './updateOne.js'\nexport { updateVersion } from './updateVersion.js'\nexport { upsertRow } from './upsertRow/index.js'\nexport { buildCreateMigration } from './utilities/buildCreateMigration.js'\nexport { buildIndexName } from './utilities/buildIndexName.js'\nexport { createSchemaGenerator } from './utilities/createSchemaGenerator.js'\nexport { executeSchemaHooks } from './utilities/executeSchemaHooks.js'\nexport { extendDrizzleTable } from './utilities/extendDrizzleTable.js'\nexport { hasLocalesTable } from './utilities/hasLocalesTable.js'\nexport { pushDevSchema } from './utilities/pushDevSchema.js'\nexport { validateExistingBlockIsIdentical } from './utilities/validateExistingBlockIsIdentical.js'\n"],"names":["count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createTableName","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","chainMethods","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","buildDrizzleRelations","buildRawSchema","beginTransaction","commitTransaction","rollbackTransaction","updateGlobal","updateGlobalVersion","updateOne","updateVersion","upsertRow","buildCreateMigration","buildIndexName","createSchemaGenerator","executeSchemaHooks","extendDrizzleTable","hasLocalesTable","pushDevSchema","validateExistingBlockIsIdentical"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAY;AAClC,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,YAAY,QAAQ,yBAAwB;AACrD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,WAAW,QAAQ,2BAA0B;AAEtD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,cAAc,QAAQ,6BAA4B;AAC3D,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,gCAAgC,QAAQ,kDAAiD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAqBzD,eAAO,MAAM,eAAe,8CAA+C,mBAAmB,WA0B7F,CAAA"}
|
|
@@ -4,12 +4,16 @@ const operatorMap = {
|
|
|
4
4
|
in: 'in',
|
|
5
5
|
like: 'like_regex',
|
|
6
6
|
not_equals: '!=',
|
|
7
|
-
not_in: 'in'
|
|
7
|
+
not_in: 'in',
|
|
8
|
+
not_like: '!like_regex'
|
|
8
9
|
};
|
|
9
10
|
const sanitizeValue = (value, operator)=>{
|
|
10
11
|
if (typeof value === 'string') {
|
|
11
|
-
// ignore casing with like
|
|
12
|
-
return `"${
|
|
12
|
+
// ignore casing with like or not_like
|
|
13
|
+
return `"${[
|
|
14
|
+
'like',
|
|
15
|
+
'not_like'
|
|
16
|
+
].includes(operator) ? '(?i)' : ''}${value}"`;
|
|
13
17
|
}
|
|
14
18
|
return value;
|
|
15
19
|
};
|
|
@@ -33,6 +37,11 @@ export const createJSONQuery = ({ column, operator, pathSegments, value })=>{
|
|
|
33
37
|
});
|
|
34
38
|
} else if (operator === 'exists') {
|
|
35
39
|
sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '$.${jsonPaths}')`;
|
|
40
|
+
} else if ([
|
|
41
|
+
'not_like'
|
|
42
|
+
].includes(operator)) {
|
|
43
|
+
const mappedOperator = operatorMap[operator];
|
|
44
|
+
sql = `NOT jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${mappedOperator.substring(1)} ${sanitizeValue(value, operator)})')`;
|
|
36
45
|
} else {
|
|
37
46
|
sql = `jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`;
|
|
38
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/postgres/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\nconst operatorMap: Record<string, string> = {\n contains: '~',\n equals: '==',\n in: 'in',\n like: 'like_regex',\n not_equals: '!=',\n not_in: 'in',\n}\n\nconst sanitizeValue = (value: unknown, operator?: string) => {\n if (typeof value === 'string') {\n // ignore casing with like\n return `\"${
|
|
1
|
+
{"version":3,"sources":["../../../src/postgres/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\nconst operatorMap: Record<string, string> = {\n contains: '~',\n equals: '==',\n in: 'in',\n like: 'like_regex',\n not_equals: '!=',\n not_in: 'in',\n not_like: '!like_regex',\n}\n\nconst sanitizeValue = (value: unknown, operator?: string) => {\n if (typeof value === 'string') {\n // ignore casing with like or not_like\n return `\"${['like', 'not_like'].includes(operator) ? '(?i)' : ''}${value}\"`\n }\n\n return value as string\n}\n\nexport const createJSONQuery = ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => {\n const columnName = typeof column === 'object' ? column.name : column\n const jsonPaths = pathSegments\n .slice(1)\n .map((key) => {\n return `${key}[*]`\n })\n .join('.')\n\n let sql = ''\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(value)) {\n value.forEach((item, i) => {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, value: item })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n })\n } else if (operator === 'exists') {\n sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '$.${jsonPaths}')`\n } else if (['not_like'].includes(operator)) {\n const mappedOperator = operatorMap[operator]\n\n sql = `NOT jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${mappedOperator.substring(1)} ${sanitizeValue(value, operator)})')`\n } else {\n sql = `jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`\n }\n\n return sql\n}\n"],"names":["operatorMap","contains","equals","in","like","not_equals","not_in","not_like","sanitizeValue","value","operator","includes","createJSONQuery","column","pathSegments","columnName","name","jsonPaths","slice","map","key","join","sql","Array","isArray","forEach","item","i","length","mappedOperator","substring"],"mappings":"AAEA,MAAMA,cAAsC;IAC1CC,UAAU;IACVC,QAAQ;IACRC,IAAI;IACJC,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ;AAEA,MAAMC,gBAAgB,CAACC,OAAgBC;IACrC,IAAI,OAAOD,UAAU,UAAU;QAC7B,sCAAsC;QACtC,OAAO,CAAC,CAAC,EAAE;YAAC;YAAQ;SAAW,CAACE,QAAQ,CAACD,YAAY,SAAS,KAAKD,MAAM,CAAC,CAAC;IAC7E;IAEA,OAAOA;AACT;AAEA,OAAO,MAAMG,kBAAkB,CAAC,EAAEC,MAAM,EAAEH,QAAQ,EAAEI,YAAY,EAAEL,KAAK,EAAuB;IAC5F,MAAMM,aAAa,OAAOF,WAAW,WAAWA,OAAOG,IAAI,GAAGH;IAC9D,MAAMI,YAAYH,aACfI,KAAK,CAAC,GACNC,GAAG,CAAC,CAACC;QACJ,OAAO,GAAGA,IAAI,GAAG,CAAC;IACpB,GACCC,IAAI,CAAC;IAER,IAAIC,MAAM;IAEV,IAAI;QAAC;QAAM;KAAS,CAACX,QAAQ,CAACD,aAAaa,MAAMC,OAAO,CAACf,QAAQ;QAC/DA,MAAMgB,OAAO,CAAC,CAACC,MAAMC;YACnBL,MAAM,GAAGA,MAAMV,gBAAgB;gBAAEC;gBAAQH,UAAUA,aAAa,OAAO,WAAW;gBAAcI;gBAAcL,OAAOiB;YAAK,KAAKC,MAAMlB,MAAMmB,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAElB,aAAa,OAAO,OAAO,MAAM,CAAC,CAAC,EAAE;QACxM;IACF,OAAO,IAAIA,aAAa,UAAU;QAChCY,MAAM,GAAGb,UAAU,QAAQ,SAAS,GAAG,kBAAkB,EAAEM,WAAW,KAAK,EAAEE,UAAU,EAAE,CAAC;IAC5F,OAAO,IAAI;QAAC;KAAW,CAACN,QAAQ,CAACD,WAAW;QAC1C,MAAMmB,iBAAiB7B,WAAW,CAACU,SAAS;QAE5CY,MAAM,CAAC,sBAAsB,EAAEP,WAAW,KAAK,EAAEE,UAAU,MAAM,EAAEY,eAAeC,SAAS,CAAC,GAAG,CAAC,EAAEtB,cAAcC,OAAOC,UAAU,GAAG,CAAC;IACvI,OAAO;QACLY,MAAM,CAAC,kBAAkB,EAAEP,WAAW,KAAK,EAAEE,UAAU,MAAM,EAAEjB,WAAW,CAACU,SAAS,CAAC,CAAC,EAAEF,cAAcC,OAAOC,UAAU,GAAG,CAAC;IAC7H;IAEA,OAAOY;AACT,EAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Column, type SQL, type SQLWrapper } from 'drizzle-orm';
|
|
2
|
-
type OperatorKeys = 'and' | 'contains' | 'equals' | 'exists' | 'greater_than' | 'greater_than_equal' | 'in' | 'isNull' | 'less_than' | 'less_than_equal' | 'like' | 'not_equals' | 'not_in' | 'or';
|
|
2
|
+
type OperatorKeys = 'and' | 'contains' | 'equals' | 'exists' | 'greater_than' | 'greater_than_equal' | 'in' | 'isNull' | 'less_than' | 'less_than_equal' | 'like' | 'not_equals' | 'not_in' | 'not_like' | 'or';
|
|
3
3
|
export type Operators = Record<OperatorKeys, (column: Column, value: SQLWrapper | unknown) => SQL>;
|
|
4
4
|
export declare const operatorMap: Operators;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operatorMap.d.ts","sourceRoot":"","sources":["../../src/queries/operatorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"operatorMap.d.ts","sourceRoot":"","sources":["../../src/queries/operatorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAcX,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,KAAK,YAAY,GACb,KAAK,GACL,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,IAAI,GACJ,QAAQ,GACR,WAAW,GACX,iBAAiB,GACjB,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,IAAI,CAAA;AAER,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,KAAK,GAAG,CAAC,CAAA;AAElG,eAAO,MAAM,WAAW,EAAE,SAkBzB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { and, eq, gt, gte, ilike, inArray, isNotNull, isNull, lt, lte, ne, notInArray, or } from 'drizzle-orm';
|
|
1
|
+
import { and, eq, gt, gte, ilike, inArray, isNotNull, isNull, lt, lte, ne, notIlike, notInArray, or } from 'drizzle-orm';
|
|
2
2
|
export const operatorMap = {
|
|
3
3
|
and,
|
|
4
4
|
contains: ilike,
|
|
@@ -12,6 +12,7 @@ export const operatorMap = {
|
|
|
12
12
|
less_than_equal: lte,
|
|
13
13
|
like: ilike,
|
|
14
14
|
not_equals: ne,
|
|
15
|
+
not_like: notIlike,
|
|
15
16
|
// TODO: support this
|
|
16
17
|
// all: all,
|
|
17
18
|
not_in: notInArray,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/operatorMap.ts"],"sourcesContent":["import {\n and,\n type Column,\n eq,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n lt,\n lte,\n ne,\n notInArray,\n or,\n type SQL,\n type SQLWrapper,\n} from 'drizzle-orm'\n\ntype OperatorKeys =\n | 'and'\n | 'contains'\n | 'equals'\n | 'exists'\n | 'greater_than'\n | 'greater_than_equal'\n | 'in'\n | 'isNull'\n | 'less_than'\n | 'less_than_equal'\n | 'like'\n | 'not_equals'\n | 'not_in'\n | 'or'\n\nexport type Operators = Record<OperatorKeys, (column: Column, value: SQLWrapper | unknown) => SQL>\n\nexport const operatorMap: Operators = {\n and,\n contains: ilike,\n equals: eq,\n exists: isNotNull,\n greater_than: gt,\n greater_than_equal: gte,\n in: inArray,\n isNull, // handles exists: false\n less_than: lt,\n less_than_equal: lte,\n like: ilike,\n not_equals: ne,\n // TODO: support this\n // all: all,\n not_in: notInArray,\n or,\n}\n"],"names":["and","eq","gt","gte","ilike","inArray","isNotNull","isNull","lt","lte","ne","notInArray","or","operatorMap","contains","equals","exists","greater_than","greater_than_equal","in","less_than","less_than_equal","like","not_equals","not_in"],"mappings":"AAAA,SACEA,GAAG,EAEHC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,EAAE,EACFC,GAAG,EACHC,EAAE,EACFC,UAAU,EACVC,EAAE,QAGG,cAAa;
|
|
1
|
+
{"version":3,"sources":["../../src/queries/operatorMap.ts"],"sourcesContent":["import {\n and,\n type Column,\n eq,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n lt,\n lte,\n ne,\n notIlike,\n notInArray,\n or,\n type SQL,\n type SQLWrapper,\n} from 'drizzle-orm'\n\ntype OperatorKeys =\n | 'and'\n | 'contains'\n | 'equals'\n | 'exists'\n | 'greater_than'\n | 'greater_than_equal'\n | 'in'\n | 'isNull'\n | 'less_than'\n | 'less_than_equal'\n | 'like'\n | 'not_equals'\n | 'not_in'\n | 'not_like'\n | 'or'\n\nexport type Operators = Record<OperatorKeys, (column: Column, value: SQLWrapper | unknown) => SQL>\n\nexport const operatorMap: Operators = {\n and,\n contains: ilike,\n equals: eq,\n exists: isNotNull,\n greater_than: gt,\n greater_than_equal: gte,\n in: inArray,\n isNull, // handles exists: false\n less_than: lt,\n less_than_equal: lte,\n like: ilike,\n not_equals: ne,\n not_like: notIlike,\n // TODO: support this\n // all: all,\n not_in: notInArray,\n or,\n}\n"],"names":["and","eq","gt","gte","ilike","inArray","isNotNull","isNull","lt","lte","ne","notIlike","notInArray","or","operatorMap","contains","equals","exists","greater_than","greater_than_equal","in","less_than","less_than_equal","like","not_equals","not_like","not_in"],"mappings":"AAAA,SACEA,GAAG,EAEHC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,EAAE,EACFC,GAAG,EACHC,EAAE,EACFC,QAAQ,EACRC,UAAU,EACVC,EAAE,QAGG,cAAa;AAqBpB,OAAO,MAAMC,cAAyB;IACpCd;IACAe,UAAUX;IACVY,QAAQf;IACRgB,QAAQX;IACRY,cAAchB;IACdiB,oBAAoBhB;IACpBiB,IAAIf;IACJE;IACAc,WAAWb;IACXc,iBAAiBb;IACjBc,MAAMnB;IACNoB,YAAYd;IACZe,UAAUd;IACV,qBAAqB;IACrB,YAAY;IACZe,QAAQd;IACRC;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAY,KAAK,EAAE,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAO5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAY,KAAK,EAAE,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAO5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,GAAG,CAsVZ"}
|
|
@@ -127,6 +127,10 @@ export function parseParams({ adapter, aliasTable, fields, joins, locale, parent
|
|
|
127
127
|
not_in: {
|
|
128
128
|
operator: 'not in',
|
|
129
129
|
wildcard: ''
|
|
130
|
+
},
|
|
131
|
+
not_like: {
|
|
132
|
+
operator: 'not like',
|
|
133
|
+
wildcard: '%'
|
|
130
134
|
}
|
|
131
135
|
};
|
|
132
136
|
let formattedValue = val;
|
|
@@ -143,7 +147,12 @@ export function parseParams({ adapter, aliasTable, fields, joins, locale, parent
|
|
|
143
147
|
if (operator === 'exists') {
|
|
144
148
|
formattedValue = '';
|
|
145
149
|
}
|
|
146
|
-
|
|
150
|
+
let jsonQuerySelector = `${table[columnName].name}${jsonQuery}`;
|
|
151
|
+
if (adapter.name === 'sqlite' && operator === 'not_like') {
|
|
152
|
+
jsonQuerySelector = `COALESCE(${table[columnName].name}${jsonQuery}, '')`;
|
|
153
|
+
}
|
|
154
|
+
const rawSQLQuery = `${jsonQuerySelector} ${operatorKeys[operator].operator} ${formattedValue}`;
|
|
155
|
+
constraints.push(sql.raw(rawSQLQuery));
|
|
147
156
|
break;
|
|
148
157
|
}
|
|
149
158
|
if (getNotNullColumnByValue) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Operator, Where } from 'payload'\n\nimport { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm'\nimport { PgUUID } from 'drizzle-orm/pg-core'\nimport { QueryError } from 'payload'\nimport { validOperatorSet } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where\n}\n\nexport function parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: Args): SQL {\n let result: SQL\n const constraints: SQL[] = []\n\n if (typeof where === 'object' && Object.keys(where).length > 0) {\n // We need to determine if the whereKey is an AND, OR, or a schema path\n for (const relationOrPath of Object.keys(where)) {\n if (relationOrPath) {\n const condition = where[relationOrPath]\n let conditionOperator: typeof and | typeof or\n if (relationOrPath.toLowerCase() === 'and') {\n conditionOperator = and\n } else if (relationOrPath.toLowerCase() === 'or') {\n conditionOperator = or\n }\n if (Array.isArray(condition)) {\n const builtConditions = buildAndOrConditions({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (builtConditions.length > 0) {\n result = conditionOperator(...builtConditions)\n }\n } else {\n // It's a path - and there can be multiple comparisons on a single path.\n // For example - title like 'test' and title not equal to 'tester'\n // So we need to loop on keys again here to handle each operator independently\n const pathOperators = where[relationOrPath]\n if (typeof pathOperators === 'object') {\n for (let operator of Object.keys(pathOperators)) {\n if (validOperatorSet.has(operator as Operator)) {\n const val = where[relationOrPath][operator]\n\n const {\n columnName,\n columns,\n constraints: queryConstraints,\n field,\n getNotNullColumnByValue,\n pathSegments,\n rawColumn,\n table,\n } = getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath: relationOrPath,\n fields,\n joins,\n locale,\n parentIsLocalized,\n pathSegments: relationOrPath.replace(/__/g, '.').split('.'),\n selectFields,\n selectLocale,\n tableName,\n value: val,\n })\n\n queryConstraints.forEach(({ columnName: col, table: constraintTable, value }) => {\n if (typeof value === 'string' && value.indexOf('%') > -1) {\n constraints.push(adapter.operators.like(constraintTable[col], value))\n } else {\n constraints.push(adapter.operators.equals(constraintTable[col], value))\n }\n })\n\n if (\n ['json', 'richText'].includes(field.type) &&\n Array.isArray(pathSegments) &&\n pathSegments.length > 1\n ) {\n if (adapter.name === 'postgres') {\n const constraint = adapter.createJSONQuery({\n column: rawColumn || table[columnName],\n operator,\n pathSegments,\n value: val,\n })\n\n constraints.push(sql.raw(constraint))\n break\n }\n\n const segments = pathSegments.slice(1)\n segments.unshift(table[columnName].name)\n\n if (field.type === 'richText') {\n // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg\n const jsonTable =\n joins.length === 0\n ? tableName\n : joins[joins.length - 1].table[\n Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]\n ]\n const jsonQuery = adapter.createJSONQuery({\n operator,\n pathSegments: segments,\n table: jsonTable,\n treatAsArray: ['children'],\n treatRootAsArray: true,\n value: val,\n })\n\n constraints.push(sql.raw(jsonQuery))\n break\n }\n\n const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments)\n const operatorKeys: Record<string, { operator: string; wildcard: string }> = {\n contains: { operator: 'like', wildcard: '%' },\n equals: { operator: '=', wildcard: '' },\n exists: { operator: val === true ? 'is not null' : 'is null', wildcard: '' },\n in: { operator: 'in', wildcard: '' },\n like: { operator: 'like', wildcard: '%' },\n not_equals: { operator: '<>', wildcard: '' },\n not_in: { operator: 'not in', wildcard: '' },\n }\n\n let formattedValue = val\n if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {\n formattedValue = val\n } else if (['in', 'not_in'].includes(operator) && Array.isArray(val)) {\n formattedValue = `(${val.map((v) => `${v}`).join(',')})`\n } else {\n formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`\n }\n if (operator === 'exists') {\n formattedValue = ''\n }\n\n constraints.push(\n sql.raw(\n `${table[columnName].name}${jsonQuery} ${operatorKeys[operator].operator} ${formattedValue}`,\n ),\n )\n\n break\n }\n\n if (getNotNullColumnByValue) {\n const columnName = getNotNullColumnByValue(val)\n if (columnName) {\n constraints.push(isNotNull(table[columnName]))\n } else {\n throw new QueryError([{ path: relationOrPath }])\n }\n break\n }\n\n if (\n operator === 'like' &&\n (field.type === 'number' || table[columnName].columnType === 'PgUUID')\n ) {\n operator = 'equals'\n }\n\n if (operator === 'like') {\n constraints.push(\n and(\n ...val\n .split(' ')\n .map((word) => adapter.operators.like(table[columnName], `%${word}%`)),\n ),\n )\n break\n }\n\n const sanitizedQueryValue = sanitizeQueryValue({\n adapter,\n columns,\n field,\n isUUID: table?.[columnName] instanceof PgUUID,\n operator,\n relationOrPath,\n val,\n })\n\n if (sanitizedQueryValue === null) {\n break\n }\n\n const {\n columns: queryColumns,\n operator: queryOperator,\n value: queryValue,\n } = sanitizedQueryValue\n\n // Handle polymorphic relationships by value\n if (queryColumns) {\n if (!queryColumns.length) {\n break\n }\n\n let wrapOperator = or\n\n if (queryValue === null && ['equals', 'not_equals'].includes(operator)) {\n if (operator === 'equals') {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn }) =>\n operator === 'equals' ? isNull(rawColumn) : isNotNull(rawColumn),\n ),\n ),\n )\n break\n }\n\n if (['not_equals', 'not_in'].includes(operator)) {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn, value }) =>\n adapter.operators[queryOperator](rawColumn, value),\n ),\n ),\n )\n\n break\n }\n\n const resolvedColumn =\n rawColumn ||\n (aliasTable && tableName === getNameFromDrizzleTable(table)\n ? aliasTable[columnName]\n : table[columnName])\n\n if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(resolvedColumn),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(resolvedColumn, queryValue),\n ),\n )\n break\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n Array.isArray(queryValue) &&\n operator === 'not_in'\n ) {\n constraints.push(\n sql`(${notInArray(table[columnName], queryValue)} OR\n ${table[columnName]}\n IS\n NULL)`,\n )\n\n break\n }\n\n if (operator === 'equals' && queryValue === null) {\n constraints.push(isNull(resolvedColumn))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(resolvedColumn))\n break\n }\n\n if (field.type === 'point' && adapter.name === 'postgres') {\n switch (operator) {\n case 'intersects': {\n constraints.push(\n sql`ST_Intersects(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n case 'near': {\n const [lng, lat, maxDistance, minDistance] = queryValue as number[]\n const geoConstraints: SQL[] = []\n\n if (typeof maxDistance === 'number' && !Number.isNaN(maxDistance)) {\n geoConstraints.push(\n sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`,\n )\n }\n\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n geoConstraints.push(\n sql`ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`,\n )\n }\n if (geoConstraints.length) {\n constraints.push(and(...geoConstraints))\n }\n break\n }\n\n case 'within': {\n constraints.push(\n sql`ST_Within(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n default:\n break\n }\n break\n }\n\n constraints.push(adapter.operators[queryOperator](resolvedColumn, queryValue))\n }\n }\n }\n }\n }\n }\n }\n if (constraints.length > 0) {\n if (result) {\n result = and(result, ...constraints)\n } else {\n result = and(...constraints)\n }\n }\n if (constraints.length === 1 && !result) {\n ;[result] = constraints\n }\n\n return result\n}\n"],"names":["and","isNotNull","isNull","ne","notInArray","or","sql","PgUUID","QueryError","validOperatorSet","getNameFromDrizzleTable","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","aliasTable","fields","joins","locale","parentIsLocalized","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","has","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","forEach","col","constraintTable","indexOf","push","operators","like","equals","includes","type","name","constraint","createJSONQuery","column","raw","segments","slice","unshift","jsonTable","getOwnPropertySymbols","jsonQuery","treatAsArray","treatRootAsArray","convertPathToJSONTraversal","operatorKeys","contains","wildcard","exists","in","not_equals","not_in","formattedValue","isNaN","map","v","join","path","columnType","word","sanitizedQueryValue","isUUID","queryColumns","queryOperator","queryValue","wrapOperator","resolvedColumn","JSON","stringify","lng","lat","maxDistance","minDistance","geoConstraints","Number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Operator, Where } from 'payload'\n\nimport { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm'\nimport { PgUUID } from 'drizzle-orm/pg-core'\nimport { QueryError } from 'payload'\nimport { validOperatorSet } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where\n}\n\nexport function parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: Args): SQL {\n let result: SQL\n const constraints: SQL[] = []\n\n if (typeof where === 'object' && Object.keys(where).length > 0) {\n // We need to determine if the whereKey is an AND, OR, or a schema path\n for (const relationOrPath of Object.keys(where)) {\n if (relationOrPath) {\n const condition = where[relationOrPath]\n let conditionOperator: typeof and | typeof or\n if (relationOrPath.toLowerCase() === 'and') {\n conditionOperator = and\n } else if (relationOrPath.toLowerCase() === 'or') {\n conditionOperator = or\n }\n if (Array.isArray(condition)) {\n const builtConditions = buildAndOrConditions({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (builtConditions.length > 0) {\n result = conditionOperator(...builtConditions)\n }\n } else {\n // It's a path - and there can be multiple comparisons on a single path.\n // For example - title like 'test' and title not equal to 'tester'\n // So we need to loop on keys again here to handle each operator independently\n const pathOperators = where[relationOrPath]\n if (typeof pathOperators === 'object') {\n for (let operator of Object.keys(pathOperators)) {\n if (validOperatorSet.has(operator as Operator)) {\n const val = where[relationOrPath][operator]\n\n const {\n columnName,\n columns,\n constraints: queryConstraints,\n field,\n getNotNullColumnByValue,\n pathSegments,\n rawColumn,\n table,\n } = getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath: relationOrPath,\n fields,\n joins,\n locale,\n parentIsLocalized,\n pathSegments: relationOrPath.replace(/__/g, '.').split('.'),\n selectFields,\n selectLocale,\n tableName,\n value: val,\n })\n\n queryConstraints.forEach(({ columnName: col, table: constraintTable, value }) => {\n if (typeof value === 'string' && value.indexOf('%') > -1) {\n constraints.push(adapter.operators.like(constraintTable[col], value))\n } else {\n constraints.push(adapter.operators.equals(constraintTable[col], value))\n }\n })\n\n if (\n ['json', 'richText'].includes(field.type) &&\n Array.isArray(pathSegments) &&\n pathSegments.length > 1\n ) {\n if (adapter.name === 'postgres') {\n const constraint = adapter.createJSONQuery({\n column: rawColumn || table[columnName],\n operator,\n pathSegments,\n value: val,\n })\n\n constraints.push(sql.raw(constraint))\n break\n }\n\n const segments = pathSegments.slice(1)\n segments.unshift(table[columnName].name)\n\n if (field.type === 'richText') {\n // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg\n const jsonTable =\n joins.length === 0\n ? tableName\n : joins[joins.length - 1].table[\n Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]\n ]\n const jsonQuery = adapter.createJSONQuery({\n operator,\n pathSegments: segments,\n table: jsonTable,\n treatAsArray: ['children'],\n treatRootAsArray: true,\n value: val,\n })\n\n constraints.push(sql.raw(jsonQuery))\n break\n }\n\n const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments)\n const operatorKeys: Record<string, { operator: string; wildcard: string }> = {\n contains: { operator: 'like', wildcard: '%' },\n equals: { operator: '=', wildcard: '' },\n exists: { operator: val === true ? 'is not null' : 'is null', wildcard: '' },\n in: { operator: 'in', wildcard: '' },\n like: { operator: 'like', wildcard: '%' },\n not_equals: { operator: '<>', wildcard: '' },\n not_in: { operator: 'not in', wildcard: '' },\n not_like: { operator: 'not like', wildcard: '%' },\n }\n\n let formattedValue = val\n if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {\n formattedValue = val\n } else if (['in', 'not_in'].includes(operator) && Array.isArray(val)) {\n formattedValue = `(${val.map((v) => `${v}`).join(',')})`\n } else {\n formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`\n }\n if (operator === 'exists') {\n formattedValue = ''\n }\n\n let jsonQuerySelector = `${table[columnName].name}${jsonQuery}`\n\n if (adapter.name === 'sqlite' && operator === 'not_like') {\n jsonQuerySelector = `COALESCE(${table[columnName].name}${jsonQuery}, '')`\n }\n\n const rawSQLQuery = `${jsonQuerySelector} ${operatorKeys[operator].operator} ${formattedValue}`\n\n constraints.push(sql.raw(rawSQLQuery))\n\n break\n }\n\n if (getNotNullColumnByValue) {\n const columnName = getNotNullColumnByValue(val)\n if (columnName) {\n constraints.push(isNotNull(table[columnName]))\n } else {\n throw new QueryError([{ path: relationOrPath }])\n }\n break\n }\n\n if (\n operator === 'like' &&\n (field.type === 'number' || table[columnName].columnType === 'PgUUID')\n ) {\n operator = 'equals'\n }\n\n if (operator === 'like') {\n constraints.push(\n and(\n ...val\n .split(' ')\n .map((word) => adapter.operators.like(table[columnName], `%${word}%`)),\n ),\n )\n break\n }\n\n const sanitizedQueryValue = sanitizeQueryValue({\n adapter,\n columns,\n field,\n isUUID: table?.[columnName] instanceof PgUUID,\n operator,\n relationOrPath,\n val,\n })\n\n if (sanitizedQueryValue === null) {\n break\n }\n\n const {\n columns: queryColumns,\n operator: queryOperator,\n value: queryValue,\n } = sanitizedQueryValue\n\n // Handle polymorphic relationships by value\n if (queryColumns) {\n if (!queryColumns.length) {\n break\n }\n\n let wrapOperator = or\n\n if (queryValue === null && ['equals', 'not_equals'].includes(operator)) {\n if (operator === 'equals') {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn }) =>\n operator === 'equals' ? isNull(rawColumn) : isNotNull(rawColumn),\n ),\n ),\n )\n break\n }\n\n if (['not_equals', 'not_in'].includes(operator)) {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn, value }) =>\n adapter.operators[queryOperator](rawColumn, value),\n ),\n ),\n )\n\n break\n }\n\n const resolvedColumn =\n rawColumn ||\n (aliasTable && tableName === getNameFromDrizzleTable(table)\n ? aliasTable[columnName]\n : table[columnName])\n\n if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(resolvedColumn),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(resolvedColumn, queryValue),\n ),\n )\n break\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n Array.isArray(queryValue) &&\n operator === 'not_in'\n ) {\n constraints.push(\n sql`(${notInArray(table[columnName], queryValue)} OR\n ${table[columnName]}\n IS\n NULL)`,\n )\n\n break\n }\n\n if (operator === 'equals' && queryValue === null) {\n constraints.push(isNull(resolvedColumn))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(resolvedColumn))\n break\n }\n\n if (field.type === 'point' && adapter.name === 'postgres') {\n switch (operator) {\n case 'intersects': {\n constraints.push(\n sql`ST_Intersects(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n case 'near': {\n const [lng, lat, maxDistance, minDistance] = queryValue as number[]\n const geoConstraints: SQL[] = []\n\n if (typeof maxDistance === 'number' && !Number.isNaN(maxDistance)) {\n geoConstraints.push(\n sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`,\n )\n }\n\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n geoConstraints.push(\n sql`ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`,\n )\n }\n if (geoConstraints.length) {\n constraints.push(and(...geoConstraints))\n }\n break\n }\n\n case 'within': {\n constraints.push(\n sql`ST_Within(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n default:\n break\n }\n break\n }\n\n constraints.push(adapter.operators[queryOperator](resolvedColumn, queryValue))\n }\n }\n }\n }\n }\n }\n }\n if (constraints.length > 0) {\n if (result) {\n result = and(result, ...constraints)\n } else {\n result = and(...constraints)\n }\n }\n if (constraints.length === 1 && !result) {\n ;[result] = constraints\n }\n\n return result\n}\n"],"names":["and","isNotNull","isNull","ne","notInArray","or","sql","PgUUID","QueryError","validOperatorSet","getNameFromDrizzleTable","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","aliasTable","fields","joins","locale","parentIsLocalized","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","has","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","forEach","col","constraintTable","indexOf","push","operators","like","equals","includes","type","name","constraint","createJSONQuery","column","raw","segments","slice","unshift","jsonTable","getOwnPropertySymbols","jsonQuery","treatAsArray","treatRootAsArray","convertPathToJSONTraversal","operatorKeys","contains","wildcard","exists","in","not_equals","not_in","not_like","formattedValue","isNaN","map","v","join","jsonQuerySelector","rawSQLQuery","path","columnType","word","sanitizedQueryValue","isUUID","queryColumns","queryOperator","queryValue","wrapOperator","resolvedColumn","JSON","stringify","lng","lat","maxDistance","minDistance","geoConstraints","Number"],"mappings":"AAGA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAEC,EAAE,EAAEC,GAAG,QAAQ,cAAa;AAC7E,SAASC,MAAM,QAAQ,sBAAqB;AAC5C,SAASC,UAAU,QAAQ,UAAS;AACpC,SAASC,gBAAgB,QAAQ,iBAAgB;AAKjD,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,sBAAsB,QAAQ,8BAA6B;AACpE,SAASC,kBAAkB,QAAQ,0BAAyB;AAe5D,OAAO,SAASC,YAAY,EAC1BC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,iBAAiB,EACjBC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC;IACJ,MAAMC,cAAqB,EAAE;IAE7B,IAAI,OAAOF,UAAU,YAAYG,OAAOC,IAAI,CAACJ,OAAOK,MAAM,GAAG,GAAG;QAC9D,uEAAuE;QACvE,KAAK,MAAMC,kBAAkBH,OAAOC,IAAI,CAACJ,OAAQ;YAC/C,IAAIM,gBAAgB;gBAClB,MAAMC,YAAYP,KAAK,CAACM,eAAe;gBACvC,IAAIE;gBACJ,IAAIF,eAAeG,WAAW,OAAO,OAAO;oBAC1CD,oBAAoBhC;gBACtB,OAAO,IAAI8B,eAAeG,WAAW,OAAO,MAAM;oBAChDD,oBAAoB3B;gBACtB;gBACA,IAAI6B,MAAMC,OAAO,CAACJ,YAAY;oBAC5B,MAAMK,kBAAkBzB,qBAAqB;wBAC3CI;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,OAAOO;oBACT;oBACA,IAAIK,gBAAgBP,MAAM,GAAG,GAAG;wBAC9BJ,SAASO,qBAAqBI;oBAChC;gBACF,OAAO;oBACL,wEAAwE;oBACxE,kEAAkE;oBAClE,8EAA8E;oBAC9E,MAAMC,gBAAgBb,KAAK,CAACM,eAAe;oBAC3C,IAAI,OAAOO,kBAAkB,UAAU;wBACrC,KAAK,IAAIC,YAAYX,OAAOC,IAAI,CAACS,eAAgB;4BAC/C,IAAI5B,iBAAiB8B,GAAG,CAACD,WAAuB;gCAC9C,MAAME,MAAMhB,KAAK,CAACM,eAAe,CAACQ,SAAS;gCAE3C,MAAM,EACJG,UAAU,EACVC,OAAO,EACPhB,aAAaiB,gBAAgB,EAC7BC,KAAK,EACLC,uBAAuB,EACvBC,YAAY,EACZC,SAAS,EACTC,KAAK,EACN,GAAGpC,uBAAuB;oCACzBG;oCACAC;oCACAiC,gBAAgBnB;oCAChBb;oCACAC;oCACAC;oCACAC;oCACA0B,cAAchB,eAAeoB,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;oCACvD9B;oCACAC;oCACAC;oCACA6B,OAAOZ;gCACT;gCAEAG,iBAAiBU,OAAO,CAAC,CAAC,EAAEZ,YAAYa,GAAG,EAAEN,OAAOO,eAAe,EAAEH,KAAK,EAAE;oCAC1E,IAAI,OAAOA,UAAU,YAAYA,MAAMI,OAAO,CAAC,OAAO,CAAC,GAAG;wCACxD9B,YAAY+B,IAAI,CAAC1C,QAAQ2C,SAAS,CAACC,IAAI,CAACJ,eAAe,CAACD,IAAI,EAAEF;oCAChE,OAAO;wCACL1B,YAAY+B,IAAI,CAAC1C,QAAQ2C,SAAS,CAACE,MAAM,CAACL,eAAe,CAACD,IAAI,EAAEF;oCAClE;gCACF;gCAEA,IACE;oCAAC;oCAAQ;iCAAW,CAACS,QAAQ,CAACjB,MAAMkB,IAAI,KACxC5B,MAAMC,OAAO,CAACW,iBACdA,aAAajB,MAAM,GAAG,GACtB;oCACA,IAAId,QAAQgD,IAAI,KAAK,YAAY;wCAC/B,MAAMC,aAAajD,QAAQkD,eAAe,CAAC;4CACzCC,QAAQnB,aAAaC,KAAK,CAACP,WAAW;4CACtCH;4CACAQ;4CACAM,OAAOZ;wCACT;wCAEAd,YAAY+B,IAAI,CAACnD,IAAI6D,GAAG,CAACH;wCACzB;oCACF;oCAEA,MAAMI,WAAWtB,aAAauB,KAAK,CAAC;oCACpCD,SAASE,OAAO,CAACtB,KAAK,CAACP,WAAW,CAACsB,IAAI;oCAEvC,IAAInB,MAAMkB,IAAI,KAAK,YAAY;wCAC7B,mGAAmG;wCACnG,MAAMS,YACJrD,MAAMW,MAAM,KAAK,IACbN,YACAL,KAAK,CAACA,MAAMW,MAAM,GAAG,EAAE,CAACmB,KAAK,CAC3BrB,OAAO6C,qBAAqB,CAACtD,KAAK,CAACA,MAAMW,MAAM,GAAG,EAAE,CAACmB,KAAK,CAAC,CAAC,EAAE,CAC/D;wCACP,MAAMyB,YAAY1D,QAAQkD,eAAe,CAAC;4CACxC3B;4CACAQ,cAAcsB;4CACdpB,OAAOuB;4CACPG,cAAc;gDAAC;6CAAW;4CAC1BC,kBAAkB;4CAClBvB,OAAOZ;wCACT;wCAEAd,YAAY+B,IAAI,CAACnD,IAAI6D,GAAG,CAACM;wCACzB;oCACF;oCAEA,MAAMA,YAAY1D,QAAQ6D,0BAA0B,CAAC9B;oCACrD,MAAM+B,eAAuE;wCAC3EC,UAAU;4CAAExC,UAAU;4CAAQyC,UAAU;wCAAI;wCAC5CnB,QAAQ;4CAAEtB,UAAU;4CAAKyC,UAAU;wCAAG;wCACtCC,QAAQ;4CAAE1C,UAAUE,QAAQ,OAAO,gBAAgB;4CAAWuC,UAAU;wCAAG;wCAC3EE,IAAI;4CAAE3C,UAAU;4CAAMyC,UAAU;wCAAG;wCACnCpB,MAAM;4CAAErB,UAAU;4CAAQyC,UAAU;wCAAI;wCACxCG,YAAY;4CAAE5C,UAAU;4CAAMyC,UAAU;wCAAG;wCAC3CI,QAAQ;4CAAE7C,UAAU;4CAAUyC,UAAU;wCAAG;wCAC3CK,UAAU;4CAAE9C,UAAU;4CAAYyC,UAAU;wCAAI;oCAClD;oCAEA,IAAIM,iBAAiB7C;oCACrB,IAAIzB,QAAQgD,IAAI,KAAK,YAAYzB,aAAa,YAAY,CAACgD,MAAM9C,MAAM;wCACrE6C,iBAAiB7C;oCACnB,OAAO,IAAI;wCAAC;wCAAM;qCAAS,CAACqB,QAAQ,CAACvB,aAAaJ,MAAMC,OAAO,CAACK,MAAM;wCACpE6C,iBAAiB,CAAC,CAAC,EAAE7C,IAAI+C,GAAG,CAAC,CAACC,IAAM,GAAGA,GAAG,EAAEC,IAAI,CAAC,KAAK,CAAC,CAAC;oCAC1D,OAAO;wCACLJ,iBAAiB,CAAC,CAAC,EAAER,YAAY,CAACvC,SAAS,CAACyC,QAAQ,GAAGvC,MAAMqC,YAAY,CAACvC,SAAS,CAACyC,QAAQ,CAAC,CAAC,CAAC;oCACjG;oCACA,IAAIzC,aAAa,UAAU;wCACzB+C,iBAAiB;oCACnB;oCAEA,IAAIK,oBAAoB,GAAG1C,KAAK,CAACP,WAAW,CAACsB,IAAI,GAAGU,WAAW;oCAE/D,IAAI1D,QAAQgD,IAAI,KAAK,YAAYzB,aAAa,YAAY;wCACxDoD,oBAAoB,CAAC,SAAS,EAAE1C,KAAK,CAACP,WAAW,CAACsB,IAAI,GAAGU,UAAU,KAAK,CAAC;oCAC3E;oCAEA,MAAMkB,cAAc,GAAGD,kBAAkB,CAAC,EAAEb,YAAY,CAACvC,SAAS,CAACA,QAAQ,CAAC,CAAC,EAAE+C,gBAAgB;oCAE/F3D,YAAY+B,IAAI,CAACnD,IAAI6D,GAAG,CAACwB;oCAEzB;gCACF;gCAEA,IAAI9C,yBAAyB;oCAC3B,MAAMJ,aAAaI,wBAAwBL;oCAC3C,IAAIC,YAAY;wCACdf,YAAY+B,IAAI,CAACxD,UAAU+C,KAAK,CAACP,WAAW;oCAC9C,OAAO;wCACL,MAAM,IAAIjC,WAAW;4CAAC;gDAAEoF,MAAM9D;4CAAe;yCAAE;oCACjD;oCACA;gCACF;gCAEA,IACEQ,aAAa,UACZM,CAAAA,MAAMkB,IAAI,KAAK,YAAYd,KAAK,CAACP,WAAW,CAACoD,UAAU,KAAK,QAAO,GACpE;oCACAvD,WAAW;gCACb;gCAEA,IAAIA,aAAa,QAAQ;oCACvBZ,YAAY+B,IAAI,CACdzD,OACKwC,IACAW,KAAK,CAAC,KACNoC,GAAG,CAAC,CAACO,OAAS/E,QAAQ2C,SAAS,CAACC,IAAI,CAACX,KAAK,CAACP,WAAW,EAAE,CAAC,CAAC,EAAEqD,KAAK,CAAC,CAAC;oCAG1E;gCACF;gCAEA,MAAMC,sBAAsBlF,mBAAmB;oCAC7CE;oCACA2B;oCACAE;oCACAoD,QAAQhD,OAAO,CAACP,WAAW,YAAYlC;oCACvC+B;oCACAR;oCACAU;gCACF;gCAEA,IAAIuD,wBAAwB,MAAM;oCAChC;gCACF;gCAEA,MAAM,EACJrD,SAASuD,YAAY,EACrB3D,UAAU4D,aAAa,EACvB9C,OAAO+C,UAAU,EAClB,GAAGJ;gCAEJ,4CAA4C;gCAC5C,IAAIE,cAAc;oCAChB,IAAI,CAACA,aAAapE,MAAM,EAAE;wCACxB;oCACF;oCAEA,IAAIuE,eAAe/F;oCAEnB,IAAI8F,eAAe,QAAQ;wCAAC;wCAAU;qCAAa,CAACtC,QAAQ,CAACvB,WAAW;wCACtE,IAAIA,aAAa,UAAU;4CACzB8D,eAAepG;wCACjB;wCAEA0B,YAAY+B,IAAI,CACd2C,gBACKH,aAAaV,GAAG,CAAC,CAAC,EAAExC,SAAS,EAAE,GAChCT,aAAa,WAAWpC,OAAO6C,aAAa9C,UAAU8C;wCAI5D;oCACF;oCAEA,IAAI;wCAAC;wCAAc;qCAAS,CAACc,QAAQ,CAACvB,WAAW;wCAC/C8D,eAAepG;oCACjB;oCAEA0B,YAAY+B,IAAI,CACd2C,gBACKH,aAAaV,GAAG,CAAC,CAAC,EAAExC,SAAS,EAAEK,KAAK,EAAE,GACvCrC,QAAQ2C,SAAS,CAACwC,cAAc,CAACnD,WAAWK;oCAKlD;gCACF;gCAEA,MAAMiD,iBACJtD,aACC/B,CAAAA,cAAcO,cAAcb,wBAAwBsC,SACjDhC,UAAU,CAACyB,WAAW,GACtBO,KAAK,CAACP,WAAW,AAAD;gCAEtB,IAAIyD,kBAAkB,gBAAgBC,eAAe,MAAM;oCACzDzE,YAAY+B,IAAI,CACdpD,GACEH,OAAOmG,iBACP,qDAAqD,GACrDlG,GAAQkG,gBAAgBF;oCAG5B;gCACF;gCAEA,IACE,AAACvD,CAAAA,MAAMkB,IAAI,KAAK,kBAAkBlB,MAAMkB,IAAI,KAAK,QAAO,KACxD5B,MAAMC,OAAO,CAACgE,eACd7D,aAAa,UACb;oCACAZ,YAAY+B,IAAI,CACdnD,GAAG,CAAC,CAAC,EAAEF,WAAW4C,KAAK,CAACP,WAAW,EAAE0D,YAAY;oBACjD,EAAEnD,KAAK,CAACP,WAAW,CAAC;;yBAEf,CAAC;oCAGR;gCACF;gCAEA,IAAIH,aAAa,YAAY6D,eAAe,MAAM;oCAChDzE,YAAY+B,IAAI,CAACvD,OAAOmG;oCACxB;gCACF;gCAEA,IAAI/D,aAAa,gBAAgB6D,eAAe,MAAM;oCACpDzE,YAAY+B,IAAI,CAACxD,UAAUoG;oCAC3B;gCACF;gCAEA,IAAIzD,MAAMkB,IAAI,KAAK,WAAW/C,QAAQgD,IAAI,KAAK,YAAY;oCACzD,OAAQzB;wCACN,KAAK;4CAAc;gDACjBZ,YAAY+B,IAAI,CACdnD,GAAG,CAAC,cAAc,EAAE0C,KAAK,CAACP,WAAW,CAAC,qBAAqB,EAAE6D,KAAKC,SAAS,CAACJ,YAAY,EAAE,CAAC;gDAE7F;4CACF;wCAEA,KAAK;4CAAQ;gDACX,MAAM,CAACK,KAAKC,KAAKC,aAAaC,YAAY,GAAGR;gDAC7C,MAAMS,iBAAwB,EAAE;gDAEhC,IAAI,OAAOF,gBAAgB,YAAY,CAACG,OAAOvB,KAAK,CAACoB,cAAc;oDACjEE,eAAenD,IAAI,CACjBnD,GAAG,CAAC,wBAAwB,EAAE0C,KAAK,CAACP,WAAW,CAAC,8CAA8C,EAAE+D,IAAI,EAAE,EAAEC,IAAI,iBAAiB,EAAEC,YAAY,CAAC,CAAC;gDAEjJ;gDAEA,IAAI,OAAOC,gBAAgB,YAAY,CAACE,OAAOvB,KAAK,CAACqB,cAAc;oDACjEC,eAAenD,IAAI,CACjBnD,GAAG,CAAC,yBAAyB,EAAE0C,KAAK,CAACP,WAAW,CAAC,8CAA8C,EAAE+D,IAAI,EAAE,EAAEC,IAAI,oBAAoB,EAAEE,YAAY,CAAC;gDAEpJ;gDACA,IAAIC,eAAe/E,MAAM,EAAE;oDACzBH,YAAY+B,IAAI,CAACzD,OAAO4G;gDAC1B;gDACA;4CACF;wCAEA,KAAK;4CAAU;gDACblF,YAAY+B,IAAI,CACdnD,GAAG,CAAC,UAAU,EAAE0C,KAAK,CAACP,WAAW,CAAC,qBAAqB,EAAE6D,KAAKC,SAAS,CAACJ,YAAY,EAAE,CAAC;gDAEzF;4CACF;wCAEA;4CACE;oCACJ;oCACA;gCACF;gCAEAzE,YAAY+B,IAAI,CAAC1C,QAAQ2C,SAAS,CAACwC,cAAc,CAACG,gBAAgBF;4BACpE;wBACF;oBACF;gBACF;YACF;QACF;IACF;IACA,IAAIzE,YAAYG,MAAM,GAAG,GAAG;QAC1B,IAAIJ,QAAQ;YACVA,SAASzB,IAAIyB,WAAWC;QAC1B,OAAO;YACLD,SAASzB,OAAO0B;QAClB;IACF;IACA,IAAIA,YAAYG,MAAM,KAAK,KAAK,CAACJ,QAAQ;;QACtC,CAACA,OAAO,GAAGC;IACd;IAEA,OAAOD;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAKzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,6KAgB7D,kBAAkB,KAAG,CAimBvB,CAAA"}
|
|
@@ -260,7 +260,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
if (field.type === 'join') {
|
|
263
|
-
const { limit = field.defaultLimit ?? 10 } = joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {};
|
|
263
|
+
const { count, limit = field.defaultLimit ?? 10 } = joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {};
|
|
264
264
|
// raw hasMany results from SQLite
|
|
265
265
|
if (typeof fieldData === 'string') {
|
|
266
266
|
fieldData = JSON.parse(fieldData);
|
|
@@ -303,6 +303,16 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
|
|
|
303
303
|
};
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
|
+
if (count) {
|
|
307
|
+
const countPath = `${fieldName}_count`;
|
|
308
|
+
if (typeof table[countPath] !== 'undefined') {
|
|
309
|
+
let value = Number(table[countPath]);
|
|
310
|
+
if (Number.isNaN(value)) {
|
|
311
|
+
value = 0;
|
|
312
|
+
}
|
|
313
|
+
fieldResult.totalDocs = value;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
306
316
|
result[field.name] = fieldResult;
|
|
307
317
|
return result;
|
|
308
318
|
}
|
|
@@ -447,6 +457,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
|
|
|
447
457
|
deletions,
|
|
448
458
|
fieldPrefix: groupFieldPrefix,
|
|
449
459
|
fields: field.flattenedFields,
|
|
460
|
+
joinQuery,
|
|
450
461
|
numbers,
|
|
451
462
|
parentIsLocalized: parentIsLocalized || field.localized,
|
|
452
463
|
path: `${sanitizedPath}${field.name}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, JoinQuery, SanitizedConfig } from 'payload'\n\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: FlattenedField[]\n /**\n *\n */\n joinQuery?: JoinQuery\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n parentIsLocalized: boolean\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n joinQuery,\n numbers,\n parentIsLocalized,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (fieldIsVirtual(field)) {\n return result\n }\n\n const fieldName = `${fieldPrefix || ''}${field.name}`\n let fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n const blocksByPath = blocks[blockFieldPath]\n\n if (Array.isArray(blocksByPath)) {\n if (isLocalized) {\n result[field.name] = {}\n\n blocksByPath.forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n // Add locale-specific index to have a proper blockFieldPath for current locale\n // because blocks can be in the same array for different locales!\n if (withinArrayOrBlockLocale && config.localization) {\n for (const locale of config.localization.localeCodes) {\n let localeIndex = 0\n\n for (let i = 0; i < blocksByPath.length; i++) {\n const row = blocksByPath[i]\n if (row._locale === locale) {\n row._index = localeIndex\n localeIndex++\n }\n }\n }\n }\n\n result[field.name] = blocksByPath.reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if (typeof row.blockType !== 'string') {\n return acc\n }\n\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n if (typeof row._index === 'number') {\n i = row._index\n delete row._index\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n isLocalized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (isLocalized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'join') {\n const { limit = field.defaultLimit ?? 10 } =\n joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {}\n\n // raw hasMany results from SQLite\n if (typeof fieldData === 'string') {\n fieldData = JSON.parse(fieldData)\n }\n\n let fieldResult:\n | { docs: unknown[]; hasNextPage: boolean }\n | Record<string, { docs: unknown[]; hasNextPage: boolean }>\n if (Array.isArray(fieldData)) {\n if (isLocalized && adapter.payload.config.localization) {\n fieldResult = fieldData.reduce(\n (joinResult, row) => {\n if (typeof row.locale === 'string') {\n joinResult[row.locale].docs.push(row.id)\n }\n\n return joinResult\n },\n\n // initialize with defaults so empty won't be undefined\n adapter.payload.config.localization.localeCodes.reduce((acc, code) => {\n acc[code] = {\n docs: [],\n hasNextPage: false,\n }\n return acc\n }, {}),\n )\n Object.keys(fieldResult).forEach((locale) => {\n fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit\n fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit)\n })\n } else {\n const hasNextPage = limit !== 0 && fieldData.length > limit\n fieldResult = {\n docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(\n ({ id, relationTo }) => {\n if (relationTo) {\n return { relationTo, value: id }\n }\n return { id }\n },\n ),\n hasNextPage,\n }\n }\n }\n\n result[field.name] = fieldResult\n return result\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n let selectData = fieldData\n if (withinArrayOrBlockLocale) {\n selectData = selectData.filter(({ locale }) => locale === withinArrayOrBlockLocale)\n }\n result[field.name] = selectData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (isLocalized && Array.isArray(table._locales)) {\n if (!table._locales.length && adapter.payload.config.localization) {\n adapter.payload.config.localization.localeCodes.forEach((_locale) =>\n (table._locales as unknown[]).push({ _locale }),\n )\n }\n\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...table,\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = isLocalized && locale ? locale : field.name\n\n if (isLocalized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'point': {\n if (typeof fieldData === 'string') {\n val = JSON.parse(fieldData)\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldIsVirtual","fieldShouldBeLocalized","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","parentIsLocalized","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","isLocalized","type","Array","isArray","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","localized","_order","acc","i","blockFieldPath","blocksByPath","forEach","Object","entries","localizedBlocks","map","block","payload","blockType","blockReferences","find","slug","blockResult","localization","localeCodes","localeIndex","length","_index","relationTo","hasMany","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","limit","defaultLimit","replaceAll","JSON","parse","fieldResult","joinResult","docs","code","hasNextPage","keys","slice","value","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","selectData","filter","val","Date","toISOString","groupFieldPrefix","groupData","refKey","Number","parseFloat","collections","customIDType","String"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, JoinQuery, SanitizedConfig } from 'payload'\n\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: FlattenedField[]\n /**\n *\n */\n joinQuery?: JoinQuery\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n parentIsLocalized: boolean\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n joinQuery,\n numbers,\n parentIsLocalized,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (fieldIsVirtual(field)) {\n return result\n }\n\n const fieldName = `${fieldPrefix || ''}${field.name}`\n let fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n const blocksByPath = blocks[blockFieldPath]\n\n if (Array.isArray(blocksByPath)) {\n if (isLocalized) {\n result[field.name] = {}\n\n blocksByPath.forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n // Add locale-specific index to have a proper blockFieldPath for current locale\n // because blocks can be in the same array for different locales!\n if (withinArrayOrBlockLocale && config.localization) {\n for (const locale of config.localization.localeCodes) {\n let localeIndex = 0\n\n for (let i = 0; i < blocksByPath.length; i++) {\n const row = blocksByPath[i]\n if (row._locale === locale) {\n row._index = localeIndex\n localeIndex++\n }\n }\n }\n }\n\n result[field.name] = blocksByPath.reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if (typeof row.blockType !== 'string') {\n return acc\n }\n\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n if (typeof row._index === 'number') {\n i = row._index\n delete row._index\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n isLocalized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (isLocalized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'join') {\n const { count, limit = field.defaultLimit ?? 10 } =\n joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {}\n\n // raw hasMany results from SQLite\n if (typeof fieldData === 'string') {\n fieldData = JSON.parse(fieldData)\n }\n\n let fieldResult:\n | { docs: unknown[]; hasNextPage: boolean; totalDocs?: number }\n | Record<string, { docs: unknown[]; hasNextPage: boolean; totalDocs?: number }>\n if (Array.isArray(fieldData)) {\n if (isLocalized && adapter.payload.config.localization) {\n fieldResult = fieldData.reduce(\n (joinResult, row) => {\n if (typeof row.locale === 'string') {\n joinResult[row.locale].docs.push(row.id)\n }\n\n return joinResult\n },\n\n // initialize with defaults so empty won't be undefined\n adapter.payload.config.localization.localeCodes.reduce((acc, code) => {\n acc[code] = {\n docs: [],\n hasNextPage: false,\n }\n return acc\n }, {}),\n )\n Object.keys(fieldResult).forEach((locale) => {\n fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit\n fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit)\n })\n } else {\n const hasNextPage = limit !== 0 && fieldData.length > limit\n fieldResult = {\n docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(\n ({ id, relationTo }) => {\n if (relationTo) {\n return { relationTo, value: id }\n }\n return { id }\n },\n ),\n hasNextPage,\n }\n }\n }\n\n if (count) {\n const countPath = `${fieldName}_count`\n if (typeof table[countPath] !== 'undefined') {\n let value = Number(table[countPath])\n if (Number.isNaN(value)) {\n value = 0\n }\n fieldResult.totalDocs = value\n }\n }\n\n result[field.name] = fieldResult\n return result\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (isLocalized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n let selectData = fieldData\n if (withinArrayOrBlockLocale) {\n selectData = selectData.filter(({ locale }) => locale === withinArrayOrBlockLocale)\n }\n result[field.name] = selectData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (isLocalized && Array.isArray(table._locales)) {\n if (!table._locales.length && adapter.payload.config.localization) {\n adapter.payload.config.localization.localeCodes.forEach((_locale) =>\n (table._locales as unknown[]).push({ _locale }),\n )\n }\n\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...table,\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = isLocalized && locale ? locale : field.name\n\n if (isLocalized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.flattenedFields,\n joinQuery,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'point': {\n if (typeof fieldData === 'string') {\n val = JSON.parse(fieldData)\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldIsVirtual","fieldShouldBeLocalized","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","parentIsLocalized","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","isLocalized","type","Array","isArray","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","localized","_order","acc","i","blockFieldPath","blocksByPath","forEach","Object","entries","localizedBlocks","map","block","payload","blockType","blockReferences","find","slug","blockResult","localization","localeCodes","localeIndex","length","_index","relationTo","hasMany","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","count","limit","defaultLimit","replaceAll","JSON","parse","fieldResult","joinResult","docs","code","hasNextPage","keys","slice","value","countPath","Number","isNaN","totalDocs","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","selectData","filter","val","Date","toISOString","groupFieldPrefix","groupData","refKey","parseFloat","collections","customIDType","String"],"mappings":"AAEA,SAASA,cAAc,EAAEC,sBAAsB,QAAQ,iBAAgB;AAMvE,SAASC,sBAAsB,QAAQ,qBAAoB;AAC3D,SAASC,oBAAoB,QAAQ,mBAAkB;AACvD,SAASC,qBAAqB,QAAQ,oBAAmB;AA8DzD,iDAAiD;AACjD,kDAAkD;AAClD,OAAO,MAAMC,iBAAiB,CAAoC,EAChEC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,OAAO,EACPC,iBAAiB,EACjBC,IAAI,EACJC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACL;IACnB,MAAMC,gBAAgBL,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAGA;IAE1C,MAAMM,YAAYV,OAAOW,MAAM,CAAC,CAACC,QAAQC;QACvC,IAAIzB,eAAeyB,QAAQ;YACzB,OAAOD;QACT;QAEA,MAAME,YAAY,GAAGf,eAAe,KAAKc,MAAME,IAAI,EAAE;QACrD,IAAIC,YAAYV,KAAK,CAACQ,UAAU;QAChC,MAAMG,qBAAqB,CAAC;QAC5B,MAAMC,oBAGA,EAAE;QAER,IAAInB,aAAa;YACfD,UAAUqB,IAAI,CAAC,IAAM,OAAOb,KAAK,CAACQ,UAAU;QAC9C;QAEA,MAAMM,cAAc/B,uBAAuB;YAAEwB;YAAOV;QAAkB;QAEtE,IAAIU,MAAMQ,IAAI,KAAK,SAAS;YAC1B,IAAIC,MAAMC,OAAO,CAACP,YAAY;gBAC5B,IAAII,aAAa;oBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAACa,aAAaC;wBAClD,IAAI,OAAOA,IAAIC,OAAO,KAAK,UAAU;4BACnC,IAAI,CAACF,WAAW,CAACC,IAAIC,OAAO,CAAC,EAAE;gCAC7BF,WAAW,CAACC,IAAIC,OAAO,CAAC,GAAG,EAAE;4BAC/B;4BACA,MAAMC,SAASF,IAAIC,OAAO;4BAC1B,MAAME,OAAO,CAAC;4BACd,OAAOH,IAAIC,OAAO;4BAClB,IAAID,IAAII,KAAK,EAAE;gCACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;gCAClB,OAAOJ,IAAII,KAAK;4BAClB;4BAEA,MAAME,YAAYtC,eAAkB;gCAClCC;gCACAC;gCACAC;gCACAC,SAAS+B;gCACT9B;gCACAC,aAAa;gCACbC,QAAQa,MAAMmB,eAAe;gCAC7B9B;gCACAC,mBAAmBA,qBAAqBU,MAAMoB,SAAS;gCACvD7B,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,CAAC,CAAC,EAAEU,IAAIS,MAAM,GAAG,GAAG;gCACvD7B;gCACAC,OAAOmB;gCACPlB;gCACAC,0BAA0BmB;4BAC5B;4BAEA,IAAI,YAAYI,WAAW;gCACzB,OAAOA,UAAUG,MAAM;4BACzB;4BAEAV,WAAW,CAACG,OAAO,CAACR,IAAI,CAACY;wBAC3B;wBAEA,OAAOP;oBACT,GAAG,CAAC;gBACN,OAAO;oBACLZ,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAACwB,KAAKV,KAAKW;wBAC/C,IAAIX,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBAEA,IAAI,YAAYJ,KAAK;4BACnB,OAAOA,IAAIS,MAAM;wBACnB;wBAEA,IACE,CAAC1B,4BACAA,4BAA4BA,6BAA6BiB,IAAIC,OAAO,EACrE;4BACA,IAAID,IAAIC,OAAO,EAAE;gCACf,OAAOD,IAAIC,OAAO;4BACpB;4BAEAS,IAAIhB,IAAI,CACN1B,eAAkB;gCAChBC;gCACAC;gCACAC;gCACAC,SAAS4B;gCACT3B;gCACAC,aAAa;gCACbC,QAAQa,MAAMmB,eAAe;gCAC7B9B;gCACAC,mBAAmBA,qBAAqBU,MAAMoB,SAAS;gCACvD7B,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,CAAC,CAAC,EAAEqB,GAAG;gCAC1C/B;gCACAC,OAAOmB;gCACPlB;gCACAC;4BACF;wBAEJ;wBAEA,OAAO2B;oBACT,GAAG,EAAE;gBACP;YACF;YAEA,OAAOvB;QACT;QAEA,IAAIC,MAAMQ,IAAI,KAAK,UAAU;YAC3B,MAAMgB,iBAAiB,GAAG5B,gBAAgBI,MAAME,IAAI,EAAE;YACtD,MAAMuB,eAAe3C,MAAM,CAAC0C,eAAe;YAE3C,IAAIf,MAAMC,OAAO,CAACe,eAAe;gBAC/B,IAAIlB,aAAa;oBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;oBAEtBuB,aAAaC,OAAO,CAAC,CAACd;wBACpB,IAAIA,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBACA,IAAI,OAAOJ,IAAIC,OAAO,KAAK,UAAU;4BACnC,IAAI,CAACd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,EAAE;gCACpCd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,GAAG,EAAE;4BACtC;4BACAd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,CAACP,IAAI,CAACM;4BACrC,OAAOA,IAAIC,OAAO;wBACpB;oBACF;oBAEAc,OAAOC,OAAO,CAAC7B,MAAM,CAACC,MAAME,IAAI,CAAC,EAAEwB,OAAO,CAAC,CAAC,CAACZ,QAAQe,gBAAgB;wBACnE9B,MAAM,CAACC,MAAME,IAAI,CAAC,CAACY,OAAO,GAAGe,gBAAgBC,GAAG,CAAC,CAAClB;4BAChD,MAAMmB,QACJlD,QAAQmD,OAAO,CAAClD,MAAM,CAAC8B,IAAIqB,SAAS,CAAC,IACpC,AAACjC,CAAAA,MAAMkC,eAAe,IAAIlC,MAAMlB,MAAM,AAAD,EAAGqD,IAAI,CAC3C,CAACJ,QAAU,OAAOA,UAAU,YAAYA,MAAMK,IAAI,KAAKxB,IAAIqB,SAAS;4BAGxE,IAAIF,OAAO;gCACT,MAAMM,cAAczD,eAAkB;oCACpCC;oCACAC;oCACAC;oCACAC,SAAS4B;oCACT3B;oCACAC,aAAa;oCACbC,QAAQ4C,MAAMZ,eAAe;oCAC7B9B;oCACAC,mBAAmBA,qBAAqBU,MAAMoB,SAAS;oCACvD7B,MAAM,GAAGiC,eAAe,CAAC,EAAEZ,IAAIS,MAAM,GAAG,GAAG;oCAC3C7B;oCACAC,OAAOmB;oCACPlB;oCACAC,0BAA0BmB;gCAC5B;gCAEA,OAAOuB,YAAYhB,MAAM;gCACzB,OAAOgB;4BACT;4BAEA,OAAO,CAAC;wBACV;oBACF;gBACF,OAAO;oBACL,+EAA+E;oBAC/E,iEAAiE;oBACjE,IAAI1C,4BAA4BZ,OAAOuD,YAAY,EAAE;wBACnD,KAAK,MAAMxB,UAAU/B,OAAOuD,YAAY,CAACC,WAAW,CAAE;4BACpD,IAAIC,cAAc;4BAElB,IAAK,IAAIjB,IAAI,GAAGA,IAAIE,aAAagB,MAAM,EAAElB,IAAK;gCAC5C,MAAMX,MAAMa,YAAY,CAACF,EAAE;gCAC3B,IAAIX,IAAIC,OAAO,KAAKC,QAAQ;oCAC1BF,IAAI8B,MAAM,GAAGF;oCACbA;gCACF;4BACF;wBACF;oBACF;oBAEAzC,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGuB,aAAa3B,MAAM,CAAC,CAACwB,KAAKV,KAAKW;wBAClD,OAAOX,IAAIS,MAAM;wBACjB,IAAIT,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBAEA,IAAI,OAAOJ,IAAIqB,SAAS,KAAK,UAAU;4BACrC,OAAOX;wBACT;wBAEA,MAAMS,QACJlD,QAAQmD,OAAO,CAAClD,MAAM,CAAC8B,IAAIqB,SAAS,CAAC,IACpC,AAACjC,CAAAA,MAAMkC,eAAe,IAAIlC,MAAMlB,MAAM,AAAD,EAAGqD,IAAI,CAC3C,CAACJ,QAAU,OAAOA,UAAU,YAAYA,MAAMK,IAAI,KAAKxB,IAAIqB,SAAS;wBAGxE,IAAIF,OAAO;4BACT,IACE,CAACpC,4BACAA,4BAA4BA,6BAA6BiB,IAAIC,OAAO,EACrE;gCACA,IAAID,IAAIC,OAAO,EAAE;oCACf,OAAOD,IAAIC,OAAO;gCACpB;gCACA,IAAI,OAAOD,IAAI8B,MAAM,KAAK,UAAU;oCAClCnB,IAAIX,IAAI8B,MAAM;oCACd,OAAO9B,IAAI8B,MAAM;gCACnB;gCAEApB,IAAIhB,IAAI,CACN1B,eAAkB;oCAChBC;oCACAC;oCACAC;oCACAC,SAAS4B;oCACT3B;oCACAC,aAAa;oCACbC,QAAQ4C,MAAMZ,eAAe;oCAC7B9B;oCACAC,mBAAmBA,qBAAqBU,MAAMoB,SAAS;oCACvD7B,MAAM,GAAGiC,eAAe,CAAC,EAAED,GAAG;oCAC9B/B;oCACAC,OAAOmB;oCACPlB;oCACAC;gCACF;gCAGF,OAAO2B;4BACT;wBACF,OAAO;4BACLA,IAAIhB,IAAI,CAAC,CAAC;wBACZ;wBAEA,OAAOgB;oBACT,GAAG,EAAE;gBACP;YACF;YAEA,OAAOvB;QACT;QAEA,IAAIC,MAAMQ,IAAI,KAAK,kBAAkBR,MAAMQ,IAAI,KAAK,UAAU;YAC5D,IAAI,OAAOR,MAAM2C,UAAU,KAAK,YAAY,CAAE,CAAA,aAAa3C,SAASA,MAAM4C,OAAO,AAAD,GAAI;gBAClF,IACErC,eACAxB,OAAOuD,YAAY,IACnBvD,OAAOuD,YAAY,CAACO,OAAO,IAC3BpC,MAAMC,OAAO,CAACjB,OAAOqD,WACrB;oBACArD,MAAMqD,QAAQ,CAACpB,OAAO,CAAC,CAACqB;wBACtBhD,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG;4BAAE,CAAC6C,UAAUlC,OAAO,CAAC,EAAEkC,SAAS,CAAC9C,UAAU;wBAAC;oBACnE;gBACF,OAAO;oBACLI,kBAAkBC,IAAI,CAAC;wBAAE0C,KAAKjD;wBAAQN;oBAAM;gBAC9C;YACF,OAAO;gBACL,MAAMwD,oBAAoBzD,aAAa,CAAC,GAAGI,gBAAgBI,MAAME,IAAI,EAAE,CAAC;gBAExE,IAAI,CAAC+C,mBAAmB;oBACtB,IAAI,aAAajD,SAASA,MAAM4C,OAAO,EAAE;wBACvC,IAAIrC,eAAexB,OAAOuD,YAAY,IAAIvD,OAAOuD,YAAY,CAACO,OAAO,EAAE;4BACrE9C,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG;gCACnB,CAACnB,OAAOuD,YAAY,CAACY,aAAa,CAAC,EAAE,EAAE;4BACzC;wBACF,OAAO;4BACLnD,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,EAAE;wBACzB;oBACF;oBAEA,OAAOH;gBACT;gBAEA,IAAIQ,aAAa;oBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;oBACtB,MAAMiD,oBAA+D,CAAC;oBAEtEF,kBAAkBvB,OAAO,CAAC,CAACd;wBACzB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC,IAAI,CAACqC,iBAAiB,CAACvC,IAAIE,MAAM,CAAC,EAAE;gCAClCqC,iBAAiB,CAACvC,IAAIE,MAAM,CAAC,GAAG,EAAE;4BACpC;4BACAqC,iBAAiB,CAACvC,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;wBACrC;oBACF;oBAEAe,OAAOC,OAAO,CAACuB,mBAAmBzB,OAAO,CAAC,CAAC,CAACZ,QAAQsC,UAAU;wBAC5DzE,sBAAsB;4BACpBqB;4BACAc;4BACAkC,KAAKjD;4BACLqD;wBACF;oBACF;gBACF,OAAO;oBACLzE,sBAAsB;wBACpBqB;wBACAgD,KAAKjD;wBACLqD,WAAWH;wBACXtD;oBACF;gBACF;gBACA,OAAOI;YACT;QACF;QAEA,IAAIC,MAAMQ,IAAI,KAAK,QAAQ;YACzB,MAAM,EAAE6C,KAAK,EAAEC,QAAQtD,MAAMuD,YAAY,IAAI,EAAE,EAAE,GAC/CnE,WAAW,CAAC,GAAGF,YAAYsE,UAAU,CAAC,KAAK,OAAOxD,MAAME,IAAI,EAAE,CAAC,IAAI,CAAC;YAEtE,kCAAkC;YAClC,IAAI,OAAOC,cAAc,UAAU;gBACjCA,YAAYsD,KAAKC,KAAK,CAACvD;YACzB;YAEA,IAAIwD;YAGJ,IAAIlD,MAAMC,OAAO,CAACP,YAAY;gBAC5B,IAAII,eAAe1B,QAAQmD,OAAO,CAACjD,MAAM,CAACuD,YAAY,EAAE;oBACtDqB,cAAcxD,UAAUL,MAAM,CAC5B,CAAC8D,YAAYhD;wBACX,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC8C,UAAU,CAAChD,IAAIE,MAAM,CAAC,CAAC+C,IAAI,CAACvD,IAAI,CAACM,IAAIK,EAAE;wBACzC;wBAEA,OAAO2C;oBACT,GAEA,uDAAuD;oBACvD/E,QAAQmD,OAAO,CAACjD,MAAM,CAACuD,YAAY,CAACC,WAAW,CAACzC,MAAM,CAAC,CAACwB,KAAKwC;wBAC3DxC,GAAG,CAACwC,KAAK,GAAG;4BACVD,MAAM,EAAE;4BACRE,aAAa;wBACf;wBACA,OAAOzC;oBACT,GAAG,CAAC;oBAENK,OAAOqC,IAAI,CAACL,aAAajC,OAAO,CAAC,CAACZ;wBAChC6C,WAAW,CAAC7C,OAAO,CAACiD,WAAW,GAAGJ,WAAW,CAAC7C,OAAO,CAAC+C,IAAI,CAACpB,MAAM,GAAGa;wBACpEK,WAAW,CAAC7C,OAAO,CAAC+C,IAAI,GAAGF,WAAW,CAAC7C,OAAO,CAAC+C,IAAI,CAACI,KAAK,CAAC,GAAGX;oBAC/D;gBACF,OAAO;oBACL,MAAMS,cAAcT,UAAU,KAAKnD,UAAUsC,MAAM,GAAGa;oBACtDK,cAAc;wBACZE,MAAM,AAACE,CAAAA,cAAc5D,UAAU8D,KAAK,CAAC,GAAGX,SAASnD,SAAQ,EAAG2B,GAAG,CAC7D,CAAC,EAAEb,EAAE,EAAE0B,UAAU,EAAE;4BACjB,IAAIA,YAAY;gCACd,OAAO;oCAAEA;oCAAYuB,OAAOjD;gCAAG;4BACjC;4BACA,OAAO;gCAAEA;4BAAG;wBACd;wBAEF8C;oBACF;gBACF;YACF;YAEA,IAAIV,OAAO;gBACT,MAAMc,YAAY,GAAGlE,UAAU,MAAM,CAAC;gBACtC,IAAI,OAAOR,KAAK,CAAC0E,UAAU,KAAK,aAAa;oBAC3C,IAAID,QAAQE,OAAO3E,KAAK,CAAC0E,UAAU;oBACnC,IAAIC,OAAOC,KAAK,CAACH,QAAQ;wBACvBA,QAAQ;oBACV;oBACAP,YAAYW,SAAS,GAAGJ;gBAC1B;YACF;YAEAnE,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGyD;YACrB,OAAO5D;QACT;QAEA,IAAIC,MAAMQ,IAAI,KAAK,UAAUR,OAAO4C,SAAS;YAC3C,MAAM2B,gBAAgB7E,KAAK,CAAC,GAAGE,gBAAgBI,MAAME,IAAI,EAAE,CAAC;YAC5D,IAAI,CAACqE,eAAe;gBAClB,OAAOxE;YACT;YAEA,IAAIQ,aAAa;gBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;gBACtB,MAAMsE,gBAA2D,CAAC;gBAElED,cAAc7C,OAAO,CAAC,CAACd;oBACrB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;wBAClC,IAAI,CAAC0D,aAAa,CAAC5D,IAAIE,MAAM,CAAC,EAAE;4BAC9B0D,aAAa,CAAC5D,IAAIE,MAAM,CAAC,GAAG,EAAE;wBAChC;wBACA0D,aAAa,CAAC5D,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;oBACjC;gBACF;gBAEAe,OAAOC,OAAO,CAAC4C,eAAe9C,OAAO,CAAC,CAAC,CAACZ,QAAQpB,MAAM;oBACpDhB,qBAAqB;wBACnBsB;wBACAc;wBACAkC,KAAKjD;wBACL0E,UAAU/E;oBACZ;gBACF;YACF,OAAO;gBACLhB,qBAAqB;oBACnBsB;oBACAgD,KAAKjD;oBACL0E,UAAUF;oBACV5E;gBACF;YACF;YAEA,OAAOI;QACT;QAEA,IAAIC,MAAMQ,IAAI,KAAK,YAAYR,MAAM4C,OAAO,EAAE;YAC5C,MAAM8B,kBAAkBrF,OAAO,CAAC,GAAGO,gBAAgBI,MAAME,IAAI,EAAE,CAAC;YAChE,IAAI,CAACwE,iBAAiB;gBACpB,OAAO3E;YACT;YAEA,IAAIQ,aAAa;gBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;gBACtB,MAAMyE,kBAA6D,CAAC;gBAEpED,gBAAgBhD,OAAO,CAAC,CAACd;oBACvB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;wBAClC,IAAI,CAAC6D,eAAe,CAAC/D,IAAIE,MAAM,CAAC,EAAE;4BAChC6D,eAAe,CAAC/D,IAAIE,MAAM,CAAC,GAAG,EAAE;wBAClC;wBACA6D,eAAe,CAAC/D,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;oBACnC;gBACF;gBAEAe,OAAOC,OAAO,CAAC+C,iBAAiBjD,OAAO,CAAC,CAAC,CAACZ,QAAQzB,QAAQ;oBACxDZ,uBAAuB;wBACrBuB;wBACAc;wBACA8D,YAAYvF;wBACZ2D,KAAKjD;oBACP;gBACF;YACF,OAAO;gBACLtB,uBAAuB;oBACrBuB;oBACA4E,YAAYF;oBACZ1B,KAAKjD;oBACLJ;gBACF;YACF;YAEA,OAAOI;QACT;QAEA,IAAIC,MAAMQ,IAAI,KAAK,YAAYR,MAAM4C,OAAO,EAAE;YAC5C,IAAInC,MAAMC,OAAO,CAACP,YAAY;gBAC5B,IAAII,aAAa;oBACfR,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAAC+E,cAAcjE;wBACnD,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC,IAAI,CAAC+D,YAAY,CAACjE,IAAIE,MAAM,CAAC,EAAE;gCAC7B+D,YAAY,CAACjE,IAAIE,MAAM,CAAC,GAAG,EAAE;4BAC/B;4BACA+D,YAAY,CAACjE,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM,IAAIsD,KAAK;wBACzC;wBAEA,OAAOW;oBACT,GAAG,CAAC;gBACN,OAAO;oBACL,IAAIC,aAAa3E;oBACjB,IAAIR,0BAA0B;wBAC5BmF,aAAaA,WAAWC,MAAM,CAAC,CAAC,EAAEjE,MAAM,EAAE,GAAKA,WAAWnB;oBAC5D;oBACAI,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG4E,WAAWhD,GAAG,CAAC,CAAC,EAAEoC,KAAK,EAAE,GAAKA;gBACrD;YACF;YACA,OAAOnE;QACT;QAEA,IAAIQ,eAAeE,MAAMC,OAAO,CAACjB,MAAMqD,QAAQ,GAAG;YAChD,IAAI,CAACrD,MAAMqD,QAAQ,CAACL,MAAM,IAAI5D,QAAQmD,OAAO,CAACjD,MAAM,CAACuD,YAAY,EAAE;gBACjEzD,QAAQmD,OAAO,CAACjD,MAAM,CAACuD,YAAY,CAACC,WAAW,CAACb,OAAO,CAAC,CAACb,UACvD,AAACpB,MAAMqD,QAAQ,CAAexC,IAAI,CAAC;wBAAEO;oBAAQ;YAEjD;YAEApB,MAAMqD,QAAQ,CAACpB,OAAO,CAAC,CAACqB;gBACtB1C,kBAAkBC,IAAI,CAAC;oBACrB0C,KAAK5C;oBACLX,OAAO;wBACL,GAAGA,KAAK;wBACR,GAAGsD,SAAS;oBACd;gBACF;YACF;QACF,OAAO;YACL1C,kBAAkBC,IAAI,CAAC;gBAAE0C,KAAKjD;gBAAQN;YAAM;QAC9C;QAEAY,kBAAkBqB,OAAO,CAAC,CAAC,EAAEsB,GAAG,EAAEvD,KAAK,EAAE;YACvC,MAAMU,YAAYV,KAAK,CAAC,GAAGP,eAAe,KAAKc,MAAME,IAAI,EAAE,CAAC;YAC5D,MAAMY,SAASrB,OAAOoB;YACtB,IAAImE,MAAM7E;YAEV,OAAQH,MAAMQ,IAAI;gBAChB,KAAK;oBAAQ;wBACX,IAAI,OAAOL,cAAc,UAAU;4BACjC6E,MAAM,IAAIC,KAAK9E,WAAW+E,WAAW;wBACvC;wBAEA;oBACF;gBAEA,KAAK;gBACL,KAAK;oBAAO;wBACV,MAAMC,mBAAmB,GAAGjG,eAAe,KAAKc,MAAME,IAAI,CAAC,CAAC,CAAC;wBAC7D,MAAMkF,YAAY,CAAC;wBACnB,MAAMtE,SAASrB,MAAMoB,OAAO;wBAC5B,MAAMwE,SAAS9E,eAAeO,SAASA,SAASd,MAAME,IAAI;wBAE1D,IAAIK,eAAeO,QAAQ;4BACzB,OAAOrB,MAAMoB,OAAO;wBACtB;wBACAmC,GAAG,CAACqC,OAAO,GAAGzG,eAAwC;4BACpDC;4BACAC;4BACAC;4BACAC,SAASoG;4BACTnG;4BACAC,aAAaiG;4BACbhG,QAAQa,MAAMmB,eAAe;4BAC7B/B;4BACAC;4BACAC,mBAAmBA,qBAAqBU,MAAMoB,SAAS;4BACvD7B,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,EAAE;4BACrCV;4BACAC;4BACAC;4BACAC,0BAA0BmB,UAAUnB;wBACtC;wBAEA,IAAI,YAAYqD,KAAK;4BACnB,OAAOA,IAAI3B,MAAM;wBACnB;wBAEA;oBACF;gBAEA,KAAK;oBAAU;wBACb,IAAI,OAAOlB,cAAc,UAAU;4BACjC6E,MAAMZ,OAAOkB,UAAU,CAACnF;wBAC1B;wBAEA;oBACF;gBAEA,KAAK;oBAAS;wBACZ,IAAI,OAAOA,cAAc,UAAU;4BACjC6E,MAAMvB,KAAKC,KAAK,CAACvD;wBACnB;wBAEA;oBACF;gBAEA,KAAK;gBACL,KAAK;oBAAU;wBACb,IACE6E,OACA,OAAOhF,MAAM2C,UAAU,KAAK,YAC5B9D,QAAQmD,OAAO,CAACuD,WAAW,CAACvF,MAAM2C,UAAU,CAAC,CAAC6C,YAAY,KAAK,UAC/D;4BACAR,MAAMZ,OAAOY;wBACf;wBAEA;oBACF;gBACA,KAAK;oBAAQ;wBACX,IAAI,OAAO7E,cAAc,UAAU;4BACjC6E,MAAMS,OAAOtF;wBACf;wBAEA;oBACF;gBAEA;oBAAS;wBACP;oBACF;YACF;YACA,IAAI,OAAOW,WAAW,UAAU;gBAC9BkC,GAAG,CAAClC,OAAO,GAAGkE;YAChB,OAAO;gBACLjF,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG8E;YACvB;QACF;QAEA,IAAIrD,OAAOqC,IAAI,CAAC5D,oBAAoBqC,MAAM,GAAG,GAAG;YAC9C1C,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGE;QACvB;QAEA,OAAOL;QAEP,OAAOA;IACT,GAAGf;IAEH,IAAIyB,MAAMC,OAAO,CAACjB,MAAMqD,QAAQ,GAAG;QACjC7D,UAAUqB,IAAI,CAAC,IAAM,OAAOb,MAAMqD,QAAQ;IAC5C;IAEA,OAAOjD;AACT,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAWxC,eAAO,MAAM,SAAS,EAAE,SA2DvB,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import toSnakeCase from 'to-snake-case';
|
|
2
|
-
import { buildFindManyArgs } from './find/buildFindManyArgs.js';
|
|
3
2
|
import buildQuery from './queries/buildQuery.js';
|
|
4
3
|
import { selectDistinct } from './queries/selectDistinct.js';
|
|
5
4
|
import { upsertRow } from './upsertRow/index.js';
|
|
@@ -21,6 +20,7 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
|
|
|
21
20
|
tableName,
|
|
22
21
|
where: whereToUse
|
|
23
22
|
});
|
|
23
|
+
// selectDistinct will only return if there are joins
|
|
24
24
|
const selectDistinctResult = await selectDistinct({
|
|
25
25
|
adapter: this,
|
|
26
26
|
chainedMethods: [
|
|
@@ -41,17 +41,11 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
|
|
|
41
41
|
idToUpdate = selectDistinctResult?.[0]?.id;
|
|
42
42
|
// If id wasn't passed but `where` without any joins, retrieve it with findFirst
|
|
43
43
|
} else if (whereArg && !joins.length) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
select: {},
|
|
50
|
-
tableName
|
|
51
|
-
});
|
|
52
|
-
findManyArgs.where = where;
|
|
53
|
-
const docToUpdate = await db.query[tableName].findFirst(findManyArgs);
|
|
54
|
-
idToUpdate = docToUpdate?.id;
|
|
44
|
+
const table = this.tables[tableName];
|
|
45
|
+
const docsToUpdate = await db.select({
|
|
46
|
+
id: table.id
|
|
47
|
+
}).from(table).where(where).limit(1);
|
|
48
|
+
idToUpdate = docsToUpdate?.[0]?.id;
|
|
55
49
|
}
|
|
56
50
|
const result = await upsertRow({
|
|
57
51
|
id: idToUpdate,
|
|
@@ -68,4 +62,4 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
|
|
|
68
62
|
return result;
|
|
69
63
|
};
|
|
70
64
|
|
|
71
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=updateOne.js.map
|
|
@@ -0,0 +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 { 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 // 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 })\n\n return result\n}\n"],"names":["toSnakeCase","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","table","tables","docsToUpdate","from","limit","result","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,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,CAACvB,YAAYO,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,qDAAqD;IACrD,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;IACxC,gFAAgF;IAClF,OAAO,IAAIU,YAAY,CAACN,MAAM0B,MAAM,EAAE;QACpC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACjB,UAAU;QAEpC,MAAMkB,eAAe,MAAM,AAACtB,GACzBH,MAAM,CAAC;YACNR,IAAI+B,MAAM/B,EAAE;QACd,GACCkC,IAAI,CAACH,OACLtB,KAAK,CAACA,OACN0B,KAAK,CAAC;QACTd,aAAaY,cAAc,CAAC,EAAE,EAAEjC;IAClC;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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.26.0-canary.bbb3083",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"@types/pg": "8.10.2",
|
|
54
54
|
"@types/to-snake-case": "1.0.0",
|
|
55
55
|
"@payloadcms/eslint-config": "3.9.0",
|
|
56
|
-
"payload": "3.
|
|
56
|
+
"payload": "3.26.0-canary.bbb3083"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"payload": "3.
|
|
59
|
+
"payload": "3.26.0-canary.bbb3083"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "pnpm build:swc && pnpm build:types",
|
package/dist/update.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|