@payloadcms/drizzle 3.11.1-canary.3f6217a → 3.11.1-canary.eb516b3
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 +19 -4
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/queries/buildAndOrConditions.d.ts +3 -2
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +2 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildOrderBy.d.ts +3 -1
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildOrderBy.js +3 -2
- package/dist/queries/buildOrderBy.js.map +1 -1
- package/dist/queries/buildQuery.d.ts +3 -2
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +3 -1
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/parseParams.d.ts +3 -2
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +9 -5
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/schema/buildRawSchema.d.ts.map +1 -1
- package/dist/schema/buildRawSchema.js +1 -0
- package/dist/schema/buildRawSchema.js.map +1 -1
- package/dist/utilities/pushDevSchema.d.ts.map +1 -1
- package/dist/utilities/pushDevSchema.js +21 -0
- package/dist/utilities/pushDevSchema.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,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;
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,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;AASpD,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,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,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,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,oQAqBxB,iBAAiB,4BAsgBnB,CAAA"}
|
|
@@ -2,6 +2,8 @@ import { sql } from 'drizzle-orm';
|
|
|
2
2
|
import { fieldIsVirtual } from 'payload/shared';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
4
|
import buildQuery from '../queries/buildQuery.js';
|
|
5
|
+
import { getTableAlias } from '../queries/getTableAlias.js';
|
|
6
|
+
import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
|
|
5
7
|
import { jsonAggBuildObject } from '../utilities/json.js';
|
|
6
8
|
import { rawConstraint } from '../utilities/rawConstraint.js';
|
|
7
9
|
import { chainMethods } from './chainMethods.js';
|
|
@@ -247,8 +249,15 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
247
249
|
]
|
|
248
250
|
};
|
|
249
251
|
}
|
|
252
|
+
const columnName = `${path.replaceAll('.', '_')}${field.name}`;
|
|
253
|
+
const subQueryAlias = `${columnName}_alias`;
|
|
254
|
+
const { newAliasTable } = getTableAlias({
|
|
255
|
+
adapter,
|
|
256
|
+
tableName: joinCollectionTableName
|
|
257
|
+
});
|
|
250
258
|
const { orderBy, selectFields, where: subQueryWhere } = buildQuery({
|
|
251
259
|
adapter,
|
|
260
|
+
aliasTable: newAliasTable,
|
|
252
261
|
fields,
|
|
253
262
|
joins,
|
|
254
263
|
locale,
|
|
@@ -276,11 +285,17 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
276
285
|
});
|
|
277
286
|
}
|
|
278
287
|
const db = adapter.drizzle;
|
|
279
|
-
|
|
280
|
-
|
|
288
|
+
for(let key in selectFields){
|
|
289
|
+
const val = selectFields[key];
|
|
290
|
+
if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {
|
|
291
|
+
delete selectFields[key];
|
|
292
|
+
key = key.split('.').pop();
|
|
293
|
+
selectFields[key] = newAliasTable[key];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
281
296
|
const subQuery = chainMethods({
|
|
282
297
|
methods: chainedMethods,
|
|
283
|
-
query: db.select(selectFields).from(
|
|
298
|
+
query: db.select(selectFields).from(newAliasTable).where(subQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column)))
|
|
284
299
|
}).as(subQueryAlias);
|
|
285
300
|
currentArgs.extras[columnName] = sql`${db.select({
|
|
286
301
|
result: jsonAggBuildObject(adapter, {
|
|
@@ -289,7 +304,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
289
304
|
locale: sql.raw(`"${subQueryAlias}".${selectFields._locale.name}`)
|
|
290
305
|
}
|
|
291
306
|
})
|
|
292
|
-
}).from(sql`${subQuery}`)}`.as(
|
|
307
|
+
}).from(sql`${subQuery}`)}`.as(subQueryAlias);
|
|
293
308
|
break;
|
|
294
309
|
}
|
|
295
310
|
case 'point':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual } 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 { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\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 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 withinLocalizedField?: 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 path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\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 (field.localized) {\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 path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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.blocks.forEach((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 path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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 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 withinLocalizedField: withinLocalizedField || field.localized,\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 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 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 {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n fields,\n joins,\n locale,\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 (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(adapter.tables[joinCollectionTableName])\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(columnName)\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _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 ((field.localized || withinLocalizedField) && _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 ((field.localized || withinLocalizedField) && _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":["sql","fieldIsVirtual","toSnakeCase","buildQuery","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","undefined","Object","keys","length","blocksSelect","blocks","block","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","payload","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","selectFields","subQueryWhere","selectLocale","chainedMethods","condition","table","push","args","method","db","drizzle","columnName","subQueryAlias","subQuery","methods","query","from","map","column","order","as","extras","result","raw","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 { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual } 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 { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\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 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 withinLocalizedField?: 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 path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\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 (field.localized) {\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 path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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.blocks.forEach((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 path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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 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 withinLocalizedField: withinLocalizedField || field.localized,\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 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 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 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 (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 break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _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 ((field.localized || withinLocalizedField) && _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 ((field.localized || withinLocalizedField) && _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":["sql","fieldIsVirtual","toSnakeCase","buildQuery","getTableAlias","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","undefined","Object","keys","length","blocksSelect","blocks","block","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","payload","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","columnName","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","table","push","args","method","db","drizzle","key","val","split","pop","subQuery","methods","query","from","map","column","order","as","extras","result","raw","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"AAGA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,cAAc,QAAQ,iBAAgB;AAC/C,OAAOC,iBAAiB,gBAAe;AAKvC,OAAOC,gBAAgB,2BAA0B;AACjD,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,kBAAkB,QAAQ,uBAAsB;AACzD,SAASC,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,YAAY,QAAQ,oBAAmB;AA6BhD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,QAAQ,EACRC,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,gBAAgB,EAChBC,KAAK,EACLC,MAAM,EACNC,YAAY,CAAC,CAAC,EACdC,KAAK,EACLC,MAAM,EACNC,IAAI,EACJC,MAAM,EACNC,0BAA0B,KAAK,EAC/BC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,iBAAiB,EACjBC,QAAQ,EACRC,uBAAuB,KAAK,EAC5BC,gBAAgB,EACE;IAClBb,OAAOc,OAAO,CAAC,CAACC;QACd,IAAI9B,eAAe8B,QAAQ;YACzB;QACF;QAEA,6BAA6B;QAC7B,IACEhB,QAAQ,KACPgB,CAAAA,MAAMC,IAAI,KAAK,YAAYD,MAAMC,IAAI,KAAK,cAAa,KACxD,CAACD,MAAME,OAAO,IACd,OAAOF,MAAMG,UAAU,KAAK,UAC5B;YACA,IAAIH,MAAMI,SAAS,EAAE;gBACnBzB,SAAS0B,IAAI,CAAC,GAAGhB,OAAOW,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC1C,OAAO;gBACLxB,YAAYuB,IAAI,CAAC,GAAGhB,OAAOW,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC7C;QACF;QAEA,OAAQN,MAAMC,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMM,cAAchB,0BAA0B,OAAOD,QAAQ,CAACU,MAAMM,IAAI,CAAC;oBAEzE,IAAIhB,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,OAAOe,gBAAgB,eACnDf,eAAe,aAAae,gBAAgB,OAC7C;4BACA;wBACF;oBACF;oBAEA,MAAMC,YAAoB;wBACxBC,SACE,OAAOF,gBAAgB,WACnB;4BACEG,IAAI;4BACJC,QAAQ;wBACV,IACA;4BACEC,WAAW;wBACb;wBACNC,SAAS,CAAC,EAAEF,MAAM,EAAE,EAAE,EAAEG,GAAG,EAAE,GAAK;gCAACA,IAAIH;6BAAQ;wBAC/CN,MAAM,CAAC;oBACT;oBAEA,MAAMU,iBAAiBnC,QAAQoC,YAAY,CAACC,GAAG,CAC7C,GAAGlC,iBAAiB,CAAC,EAAEU,YAAYtB,YAAY6B,MAAMM,IAAI,GAAG;oBAG9D,IAAI,OAAOC,gBAAgB,UAAU;wBACnC,IAAI3B,QAAQsC,MAAM,CAACH,eAAe,CAACI,OAAO,EAAE;4BAC1CX,UAAUC,OAAO,CAACU,OAAO,GAAG;wBAC9B;wBAEA,IAAIvC,QAAQsC,MAAM,CAACH,eAAe,CAACK,KAAK,EAAE;4BACxCZ,UAAUC,OAAO,CAACW,KAAK,GAAG;wBAC5B;oBACF;oBAEA,MAAMC,4BAA4B,GAAGN,iBAAiBnC,QAAQ0C,aAAa,EAAE;oBAE7E,IAAI1C,QAAQsC,MAAM,CAACG,0BAA0B,EAAE;wBAC7Cb,UAAUH,IAAI,CAAC1B,QAAQ,GAAG;4BACxB8B,SACE,OAAOF,gBAAgB,WACnB;gCACEY,SAAS;4BACX,IACA;gCACET,IAAI;gCACJE,WAAW;4BACb;4BACNP,MAAM,CAAC;wBACT;oBACF;oBAEAvB,YAAYuB,IAAI,CAAC,GAAGhB,OAAOW,MAAMM,IAAI,EAAE,CAAC,GAAGE;oBAE3C9B,eAAe;wBACbC,UAAU6B,UAAUH,IAAI,CAAC1B,QAAQ;wBACjCC;wBACAE,aAAa0B;wBACbzB,kBAAkBgC;wBAClB/B;wBACAC,QAAQe,MAAMuB,eAAe;wBAC7BrC;wBACAE;wBACAC,MAAM;wBACNC,QAAQ,OAAOiB,gBAAgB,WAAWA,cAAciB;wBACxDhC;wBACAC,WAAW;wBACXC;wBACAC;wBACAE,sBAAsBA,wBAAwBG,MAAMI,SAAS;wBAC7DN;oBACF;oBAEA,IACE,OAAOS,gBAAgB,YACvBC,UAAUH,IAAI,CAAC1B,QAAQ,IACvB8C,OAAOC,IAAI,CAAClB,UAAUH,IAAI,CAAC1B,QAAQ,EAAEgD,MAAM,KAAK,GAChD;wBACA,OAAOnB,UAAUH,IAAI,CAAC1B,QAAQ;oBAChC;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,MAAMiD,eAAerC,0BAA0B,OAAOD,QAAQ,CAACU,MAAMM,IAAI,CAAC;oBAE1E,IAAIhB,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,CAACoC,gBAC7BpC,eAAe,aAAaoC,iBAAiB,OAC9C;4BACA;wBACF;oBACF;oBAEA5B,MAAM6B,MAAM,CAAC9B,OAAO,CAAC,CAAC+B;wBACpB,MAAMC,WAAW,CAAC,QAAQ,EAAED,MAAME,IAAI,EAAE;wBAExC,IAAIC;wBAEJ,IAAIC,kBAAkB1C;wBAEtB,IAAIA,eAAe,aAAaoC,iBAAiB,MAAM;4BACrDK,cAAc;wBAChB;wBAEA,IAAI,OAAOL,iBAAiB,UAAU;4BACpC,IAAI,OAAOA,YAAY,CAACE,MAAME,IAAI,CAAC,KAAK,UAAU;gCAChDC,cAAcL,YAAY,CAACE,MAAME,IAAI,CAAC;4BACxC,OAAO,IACL,AAACxC,eAAe,aAAa,OAAOoC,YAAY,CAACE,MAAME,IAAI,CAAC,KAAK,eAChExC,eAAe,aAAaoC,YAAY,CAACE,MAAME,IAAI,CAAC,KAAK,OAC1D;gCACAC,cAAc,CAAC;gCACfC,kBAAkB;4BACpB,OAAO,IAAI1C,eAAe,aAAaoC,YAAY,CAACE,MAAME,IAAI,CAAC,KAAK,MAAM;gCACxEC,cAAc;4BAChB;wBACF;wBAEA,IAAI,CAACvC,YAAY,CAACqC,SAAS,EAAE;4BAC3B,MAAMI,YAAoB;gCACxB1B,SACE,OAAOwB,gBAAgB,WACnB;oCACEvB,IAAI;oCACJC,QAAQ;oCACRyB,OAAO;gCACT,IACA;oCACExB,WAAW;gCACb;gCACNC,SAAS,CAAC,EAAEF,MAAM,EAAE,EAAE,EAAEG,GAAG,EAAE,GAAK;wCAACA,IAAIH;qCAAQ;gCAC/CN,MAAM,CAAC;4BACT;4BAEA,MAAMgC,YAAYzD,QAAQoC,YAAY,CAACC,GAAG,CACxC,GAAGtB,kBAAkB,QAAQ,EAAExB,YAAY2D,MAAME,IAAI,GAAG;4BAG1D,IAAI,OAAOC,gBAAgB,UAAU;gCACnC,IAAIrD,QAAQsC,MAAM,CAACmB,UAAU,CAAClB,OAAO,EAAE;oCACrCgB,UAAU1B,OAAO,CAACU,OAAO,GAAG;gCAC9B;gCAEA,IAAIvC,QAAQsC,MAAM,CAACmB,UAAU,CAACjB,KAAK,EAAE;oCACnCe,UAAU1B,OAAO,CAACW,KAAK,GAAG;gCAC5B;4BACF;4BAEA,IAAIxC,QAAQsC,MAAM,CAAC,GAAGmB,YAAYzD,QAAQ0C,aAAa,EAAE,CAAC,EAAE;gCAC1Da,UAAU9B,IAAI,CAAC1B,QAAQ,GAAG;oCACxB0B,MAAM,CAAC;gCACT;gCAEA,IAAI,OAAO4B,gBAAgB,UAAU;oCACnCE,UAAU9B,IAAI,CAAC1B,QAAQ,CAAC8B,OAAO,GAAG;wCAChCU,SAAS;oCACX;gCACF;4BACF;4BACAzB,aAAaW,IAAI,CAAC0B,SAAS,GAAGI;4BAE9BzD,eAAe;gCACbC,UAAUwD,UAAU9B,IAAI,CAAC1B,QAAQ;gCACjCC;gCACAE,aAAaqD;gCACbpD,kBAAkBsD;gCAClBrD;gCACAC,QAAQ6C,MAAMP,eAAe;gCAC7BrC;gCACAE;gCACAC,MAAM;gCACNC,QAAQ,OAAO2C,gBAAgB,WAAWA,cAAcT;gCACxDhC,YAAY0C;gCACZzC,WAAW;gCACXC;gCACAC;gCACAE,sBAAsBA,wBAAwBG,MAAMI,SAAS;gCAC7DN;4BACF;4BAEA,IACE,OAAOmC,gBAAgB,YACvBE,UAAU9B,IAAI,CAAC1B,QAAQ,IACvB8C,OAAOC,IAAI,CAACS,UAAU9B,IAAI,CAAC1B,QAAQ,CAAC8B,OAAO,EAAEkB,MAAM,KAAK,GACxD;gCACA,OAAOQ,UAAU9B,IAAI,CAAC1B,QAAQ;4BAChC;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;YACL,KAAK;gBAAO;oBACV,MAAM2D,cAAchD,QAAQ,CAACU,MAAMM,IAAI,CAAC;oBAExC,IAAIgC,gBAAgB,OAAO;wBACzB;oBACF;oBAEA5D,eAAe;wBACbC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,QAAQe,MAAMuB,eAAe;wBAC7BrC;wBACAC;wBACAC;wBACAC,MAAM,GAAGA,OAAOW,MAAMM,IAAI,CAAC,CAAC,CAAC;wBAC7BhB,QAAQ,OAAOgD,gBAAgB,WAAWA,cAAcd;wBACxDjC,yBACEA,2BACA+C,gBAAgB,QACf9C,eAAe,aAAa,OAAO8C,gBAAgB;wBACtD9C;wBACAC,WAAW,GAAGA,YAAYtB,YAAY6B,MAAMM,IAAI,EAAE,CAAC,CAAC;wBACpDZ;wBACAC;wBACAC;wBACAC,sBAAsBA,wBAAwBG,MAAMI,SAAS;wBAC7DN;oBACF;oBAEA;gBACF;YACA,KAAK;gBAAQ;oBACX,0CAA0C;oBAC1C,IAAIZ,cAAc,OAAO;wBACvB;oBACF;oBAEA,IACE,AAACI,UAAUE,eAAe,aAAa,CAACF,MAAM,CAACU,MAAMM,IAAI,CAAC,IACzDd,eAAe,aAAaF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,OACpD;wBACA;oBACF;oBAEA,MAAMiC,iBAAiB,GAAGlD,KAAKmD,UAAU,CAAC,KAAK,OAAOxC,MAAMM,IAAI,EAAE;oBAElE,IAAIpB,SAAS,CAACqD,eAAe,KAAK,OAAO;wBACvC;oBACF;oBAEA,MAAM,EACJE,OAAOC,WAAW1C,MAAM2C,YAAY,IAAI,EAAE,EAC1CC,OAAO5C,MAAM6C,WAAW,EACxBC,KAAK,EACN,GAAG5D,SAAS,CAACqD,eAAe,IAAI,CAAC;oBAClC,IAAIE,QAAQC;oBAEZ,IAAID,UAAU,GAAG;wBACf,qFAAqF;wBACrFA,SAAS;oBACX;oBAEA,MAAMxD,SAASL,QAAQmE,OAAO,CAACC,WAAW,CAAChD,MAAMiD,UAAU,CAAC,CAACC,MAAM,CAAC3B,eAAe;oBAEnF,MAAM4B,0BAA0BvE,QAAQoC,YAAY,CAACC,GAAG,CAAC9C,YAAY6B,MAAMiD,UAAU;oBAErF,MAAM9D,QAA+B,EAAE;oBAEvC,MAAMiE,kBAAkBxD,WACpBhB,QAAQsC,MAAM,CAACnC,iBAAiB,CAACsE,MAAM,GACvCzE,QAAQsC,MAAM,CAACnC,iBAAiB,CAAC2B,EAAE;oBAEvC,IAAI4C;oBAEJ,IAAIC,MAAMC,OAAO,CAACxD,MAAMyD,WAAW,CAACtD,UAAU,GAAG;wBAC/CmD,iBAAiB;4BACf,CAACtD,MAAM0D,EAAE,CAAC,EAAE;gCACVC,QAAQ;oCACNxD,YAAYtB;oCACZ+E,OAAOpF,cAAc4E;gCACvB;4BACF;wBACF;oBACF,OAAO;wBACLE,iBAAiB;4BACf,CAACtD,MAAM0D,EAAE,CAAC,EAAE;gCACVC,QAAQnF,cAAc4E;4BACxB;wBACF;oBACF;oBAEA,IAAIN,SAASrB,OAAOC,IAAI,CAACoB,OAAOnB,MAAM,EAAE;wBACtC2B,iBAAiB;4BACfO,KAAK;gCAACP;gCAAgBR;6BAAM;wBAC9B;oBACF;oBAEA,MAAMgB,aAAa,GAAGzE,KAAKmD,UAAU,CAAC,KAAK,OAAOxC,MAAMM,IAAI,EAAE;oBAE9D,MAAMyD,gBAAgB,GAAGD,WAAW,MAAM,CAAC;oBAE3C,MAAM,EAAEE,aAAa,EAAE,GAAG3F,cAAc;wBACtCO;wBACAyD,WAAWc;oBACb;oBAEA,MAAM,EACJtC,OAAO,EACPoD,YAAY,EACZnB,OAAOoB,aAAa,EACrB,GAAG9F,WAAW;wBACbQ;wBACAuF,YAAYH;wBACZ/E;wBACAE;wBACAC;wBACAgF,cAAc;wBACdxB;wBACAP,WAAWc;wBACXL,OAAOQ;oBACT;oBAEA,MAAMe,iBAAiC,EAAE;oBAEzClF,MAAMY,OAAO,CAAC,CAAC,EAAEE,IAAI,EAAEqE,SAAS,EAAEC,KAAK,EAAE;wBACvCF,eAAeG,IAAI,CAAC;4BAClBC,MAAM;gCAACF;gCAAOD;6BAAU;4BACxBI,QAAQzE,QAAQ;wBAClB;oBACF;oBAEA,IAAIwC,UAAU,GAAG;wBACf4B,eAAeG,IAAI,CAAC;4BAClBC,MAAM;gCAAChC;6BAAM;4BACbiC,QAAQ;wBACV;oBACF;oBAEA,MAAMC,KAAK/F,QAAQgG,OAAO;oBAE1B,IAAK,IAAIC,OAAOZ,aAAc;wBAC5B,MAAMa,MAAMb,YAAY,CAACY,IAAI;wBAE7B,IAAIC,IAAIP,KAAK,IAAIjG,wBAAwBwG,IAAIP,KAAK,MAAMpB,yBAAyB;4BAC/E,OAAOc,YAAY,CAACY,IAAI;4BACxBA,MAAMA,IAAIE,KAAK,CAAC,KAAKC,GAAG;4BACxBf,YAAY,CAACY,IAAI,GAAGb,aAAa,CAACa,IAAI;wBACxC;oBACF;oBAEA,MAAMI,WAAWxG,aAAa;wBAC5ByG,SAASb;wBACTc,OAAOR,GACJrF,MAAM,CAAC2E,cACPmB,IAAI,CAACpB,eACLlB,KAAK,CAACoB,eACNrD,OAAO,CAAC,IAAMA,QAAQwE,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAKA,MAAMD;oBAC5D,GAAGE,EAAE,CAACzB;oBAENjF,YAAY2G,MAAM,CAAC3B,WAAW,GAAG7F,GAAG,CAAC,EAAE0G,GACpCrF,MAAM,CAAC;wBACNoG,QAAQnH,mBAAmBK,SAAS;4BAClC8B,IAAIzC,IAAI0H,GAAG,CAAC,CAAC,CAAC,EAAE5B,cAAc,IAAI,CAAC;4BACnC,GAAIE,aAAa9C,OAAO,IAAI;gCAC1B/B,QAAQnB,IAAI0H,GAAG,CAAC,CAAC,CAAC,EAAE5B,cAAc,EAAE,EAAEE,aAAa9C,OAAO,CAACb,IAAI,EAAE;4BACnE,CAAC;wBACH;oBACF,GACC8E,IAAI,CAACnH,GAAG,CAAC,EAAEgH,SAAS,CAAC,EAAE,CAAC,CAACO,EAAE,CAACzB;oBAE/B;gBACF;YAEA,KAAK;gBAAS;oBACZ,IAAInF,QAAQ0B,IAAI,KAAK,UAAU;wBAC7B;oBACF;oBAEA,MAAMmE,OAAOzE,MAAMI,SAAS,GAAGzB,WAAWG;oBAC1C,IAAI,CAAC2F,KAAKhE,OAAO,EAAE;wBACjBgE,KAAKhE,OAAO,GAAG,CAAC;oBAClB;oBAEA,IAAI,CAACgE,KAAKgB,MAAM,EAAE;wBAChBhB,KAAKgB,MAAM,GAAG,CAAC;oBACjB;oBAEA,MAAMnF,OAAO,GAAGjB,OAAOW,MAAMM,IAAI,EAAE;oBAEnC,2FAA2F;oBAC3F,gGAAgG;oBAChGmE,KAAKhE,OAAO,CAACH,KAAK,GAAG;oBAErB,IAAIsF,eAAe;oBAEnB,IAAItG,UAAUC,yBAAyB;wBACrC,IACEA,2BACCC,eAAe,aAAaF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,QACnDd,eAAe,aAAa,OAAOF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,aAC3D;4BACAsF,eAAe;wBACjB;oBACF,OAAO;wBACLA,eAAe;oBACjB;oBAEA,IAAIA,cAAc;wBAChBnB,KAAKgB,MAAM,CAACnF,KAAK,GAAGrC,IAAI0H,GAAG,CAAC,CAAC,aAAa,EAAExH,YAAYmC,MAAM,QAAQ,CAAC,EAAEkF,EAAE,CAAClF;oBAC9E;oBACA;gBACF;YAEA,KAAK;gBAAU;oBACb,IAAIhB,UAAU,CAACC,yBAAyB;wBACtC,IACE,AAACC,eAAe,aAAa,CAACF,MAAM,CAACU,MAAMM,IAAI,CAAC,IAC/Cd,eAAe,aAAaF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,OACpD;4BACA;wBACF;oBACF;oBAEA,IAAIN,MAAME,OAAO,EAAE;wBACjB,MAAM2F,aAAqB;4BACzBpF,SAAS;gCACPC,IAAI;gCACJ6E,OAAO;gCACPlC,QAAQ;4BACV;4BACAxC,SAAS,CAAC,EAAE0E,KAAK,EAAE,EAAE,EAAEzE,GAAG,EAAE,GAAK;oCAACA,IAAIyE;iCAAO;wBAC/C;wBAEAzG,YAAYuB,IAAI,CAAC,GAAGhB,OAAOW,MAAMM,IAAI,EAAE,CAAC,GAAGuF;wBAC3C;oBACF;oBAEA,IAAIvG,UAAUC,yBAAyB;wBACrC,MAAMuG,YAAY,GAAGzG,OAAOW,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACN,CAAAA,MAAMI,SAAS,IAAIP,oBAAmB,KAAMlB,UAAU;4BACzDA,SAAS8B,OAAO,CAACqF,UAAU,GAAG;wBAChC,OAAO,IAAIlH,QAAQsC,MAAM,CAACnC,iBAAiB,EAAE,CAAC+G,UAAU,EAAE;4BACxDhH,YAAY2B,OAAO,CAACqF,UAAU,GAAG;wBACnC;oBACF;oBAEA;gBACF;YAEA;gBAAS;oBACP,IAAI,CAACxG,UAAU,CAACC,yBAAyB;wBACvC;oBACF;oBAEA,IACEA,2BACCC,eAAe,aAAaF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,QACnDd,eAAe,aAAa,OAAOF,MAAM,CAACU,MAAMM,IAAI,CAAC,KAAK,aAC3D;wBACA,MAAMwF,YAAY,GAAGzG,OAAOW,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACN,CAAAA,MAAMI,SAAS,IAAIP,oBAAmB,KAAMlB,UAAU;4BACzDA,SAAS8B,OAAO,CAACqF,UAAU,GAAG;wBAChC,OAAO,IAAIlH,QAAQsC,MAAM,CAACnC,iBAAiB,EAAE,CAAC+G,UAAU,EAAE;4BACxDhH,YAAY2B,OAAO,CAACqF,UAAU,GAAG;wBACnC;wBAEA,IACE,CAAChG,iBAAiBiG,IAAI,IACrB/F,CAAAA,MAAMC,IAAI,KAAK,kBAAkBD,MAAMC,IAAI,KAAK,QAAO,KACvDD,CAAAA,MAAME,OAAO,IAAIqD,MAAMC,OAAO,CAACxD,MAAMG,UAAU,CAAA,GAChD;4BACAL,iBAAiBiG,IAAI,GAAG;wBAC1B;wBAEA,IAAI,CAACjG,iBAAiBkG,OAAO,IAAIhG,MAAMC,IAAI,KAAK,YAAYD,MAAME,OAAO,EAAE;4BACzEJ,iBAAiBkG,OAAO,GAAG;wBAC7B;wBAEA,IAAI,CAAClG,iBAAiBmG,KAAK,IAAIjG,MAAMC,IAAI,KAAK,UAAUD,MAAME,OAAO,EAAE;4BACrEJ,iBAAiBmG,KAAK,GAAG;wBAC3B;oBACF;oBAEA;gBACF;QACF;IACF;IAEA,OAAOvG;AACT,EAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { SQL } from 'drizzle-orm';
|
|
1
|
+
import type { SQL, Table } from 'drizzle-orm';
|
|
2
2
|
import type { FlattenedField, Where } from 'payload';
|
|
3
3
|
import type { DrizzleAdapter, GenericColumn } from '../types.js';
|
|
4
4
|
import type { BuildQueryJoinAliases } from './buildQuery.js';
|
|
5
|
-
export declare function buildAndOrConditions({ adapter, fields, joins, locale, selectFields, selectLocale, tableName, where, }: {
|
|
5
|
+
export declare function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where, }: {
|
|
6
6
|
adapter: DrizzleAdapter;
|
|
7
|
+
aliasTable?: Table;
|
|
7
8
|
collectionSlug?: string;
|
|
8
9
|
fields: FlattenedField[];
|
|
9
10
|
globalSlug?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,GAAG,EAAE,CAyBR"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseParams } from './parseParams.js';
|
|
2
|
-
export function buildAndOrConditions({ adapter, fields, joins, locale, selectFields, selectLocale, tableName, where }) {
|
|
2
|
+
export function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where }) {
|
|
3
3
|
const completedConditions = [];
|
|
4
4
|
// Loop over all AND / OR operations and add them to the AND / OR query param
|
|
5
5
|
// Operations should come through as an array
|
|
@@ -8,6 +8,7 @@ export function buildAndOrConditions({ adapter, fields, joins, locale, selectFie
|
|
|
8
8
|
if (typeof condition === 'object') {
|
|
9
9
|
const result = parseParams({
|
|
10
10
|
adapter,
|
|
11
|
+
aliasTable,
|
|
11
12
|
fields,
|
|
12
13
|
joins,
|
|
13
14
|
locale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { FlattenedField, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport function buildAndOrConditions({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where[]\n}): SQL[] {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n const result = parseParams({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","fields","joins","locale","selectFields","selectLocale","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,KAAK,
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport function buildAndOrConditions({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n aliasTable?: Table\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where[]\n}): SQL[] {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n const result = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","aliasTable","fields","joins","locale","selectFields","selectLocale","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,KAAK,EAaN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAE7C,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,MAAMC,SAASb,YAAY;gBACzBE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { Table } from 'drizzle-orm';
|
|
1
2
|
import type { FlattenedField, Sort } from 'payload';
|
|
2
3
|
import type { DrizzleAdapter, GenericColumn } from '../types.js';
|
|
3
4
|
import type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js';
|
|
4
5
|
type Args = {
|
|
5
6
|
adapter: DrizzleAdapter;
|
|
7
|
+
aliasTable?: Table;
|
|
6
8
|
fields: FlattenedField[];
|
|
7
9
|
joins: BuildQueryJoinAliases;
|
|
8
10
|
locale?: string;
|
|
@@ -13,6 +15,6 @@ type Args = {
|
|
|
13
15
|
/**
|
|
14
16
|
* Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
|
|
15
17
|
*/
|
|
16
|
-
export declare const buildOrderBy: ({ adapter, fields, joins, locale, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
|
|
18
|
+
export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
|
|
17
19
|
export {};
|
|
18
20
|
//# sourceMappingURL=buildOrderBy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,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,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,mFAStB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAuDnC,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { asc, desc } from 'drizzle-orm';
|
|
2
|
+
import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
|
|
2
3
|
import { getTableColumnFromPath } from './getTableColumnFromPath.js';
|
|
3
4
|
/**
|
|
4
5
|
* Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
|
|
5
|
-
*/ export const buildOrderBy = ({ adapter, fields, joins, locale, selectFields, sort, tableName })=>{
|
|
6
|
+
*/ export const buildOrderBy = ({ adapter, aliasTable, fields, joins, locale, selectFields, sort, tableName })=>{
|
|
6
7
|
const orderBy = [];
|
|
7
8
|
if (!sort) {
|
|
8
9
|
const createdAt = adapter.tables[tableName]?.createdAt;
|
|
@@ -41,7 +42,7 @@ import { getTableColumnFromPath } from './getTableColumnFromPath.js';
|
|
|
41
42
|
});
|
|
42
43
|
if (sortTable?.[sortTableColumnName]) {
|
|
43
44
|
orderBy.push({
|
|
44
|
-
column: sortTable[sortTableColumnName],
|
|
45
|
+
column: aliasTable && tableName === getNameFromDrizzleTable(sortTable) ? aliasTable[sortTableColumnName] : sortTable[sortTableColumnName],
|
|
45
46
|
order: sortDirection === 'asc' ? asc : desc
|
|
46
47
|
});
|
|
47
48
|
selectFields[sortTableColumnName] = sortTable[sortTableColumnName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/buildOrderBy.ts"],"sourcesContent":["import type { FlattenedField, Sort } from 'payload'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js'\n\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n sort?: Sort\n tableName: string\n}\n\n/**\n * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary\n */\nexport const buildOrderBy = ({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n}: Args): BuildQueryResult['orderBy'] => {\n const orderBy: BuildQueryResult['orderBy'] = []\n\n if (!sort) {\n const createdAt = adapter.tables[tableName]?.createdAt\n if (createdAt) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n for (const sortItem of sort) {\n let sortProperty: string\n let sortDirection: 'asc' | 'desc'\n if (sortItem[0] === '-') {\n sortProperty = sortItem.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = sortItem\n sortDirection = 'asc'\n }\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortProperty,\n fields,\n joins,\n locale,\n pathSegments: sortProperty.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortProperty,\n })\n if (sortTable?.[sortTableColumnName]) {\n orderBy.push({\n column: sortTable[sortTableColumnName],\n order: sortDirection === 'asc' ? asc : desc,\n })\n\n selectFields[sortTableColumnName] = sortTable[sortTableColumnName]\n }\n } catch (err) {\n // continue\n }\n }\n\n return orderBy\n}\n"],"names":["asc","desc","getTableColumnFromPath","buildOrderBy","adapter","fields","joins","locale","selectFields","sort","tableName","orderBy","createdAt","tables","sortItem","sortProperty","sortDirection","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","push","column","order","err"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildOrderBy.ts"],"sourcesContent":["import type { Table } from 'drizzle-orm'\nimport type { FlattenedField, Sort } from 'payload'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n sort?: Sort\n tableName: string\n}\n\n/**\n * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary\n */\nexport const buildOrderBy = ({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n}: Args): BuildQueryResult['orderBy'] => {\n const orderBy: BuildQueryResult['orderBy'] = []\n\n if (!sort) {\n const createdAt = adapter.tables[tableName]?.createdAt\n if (createdAt) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n for (const sortItem of sort) {\n let sortProperty: string\n let sortDirection: 'asc' | 'desc'\n if (sortItem[0] === '-') {\n sortProperty = sortItem.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = sortItem\n sortDirection = 'asc'\n }\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortProperty,\n fields,\n joins,\n locale,\n pathSegments: sortProperty.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortProperty,\n })\n if (sortTable?.[sortTableColumnName]) {\n orderBy.push({\n column:\n aliasTable && tableName === getNameFromDrizzleTable(sortTable)\n ? aliasTable[sortTableColumnName]\n : sortTable[sortTableColumnName],\n order: sortDirection === 'asc' ? asc : desc,\n })\n\n selectFields[sortTableColumnName] = sortTable[sortTableColumnName]\n }\n } catch (err) {\n // continue\n }\n }\n\n return orderBy\n}\n"],"names":["asc","desc","getNameFromDrizzleTable","getTableColumnFromPath","buildOrderBy","adapter","aliasTable","fields","joins","locale","selectFields","sort","tableName","orderBy","createdAt","tables","sortItem","sortProperty","sortDirection","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","push","column","order","err"],"mappings":"AAGA,SAASA,GAAG,EAAEC,IAAI,QAAQ,cAAa;AAKvC,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,sBAAsB,QAAQ,8BAA6B;AAapE;;CAEC,GACD,OAAO,MAAMC,eAAe,CAAC,EAC3BC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACJ;IACL,MAAMC,UAAuC,EAAE;IAE/C,IAAI,CAACF,MAAM;QACT,MAAMG,YAAYT,QAAQU,MAAM,CAACH,UAAU,EAAEE;QAC7C,IAAIA,WAAW;YACbH,OAAO;QACT,OAAO;YACLA,OAAO;QACT;IACF;IAEA,IAAI,OAAOA,SAAS,UAAU;QAC5BA,OAAO;YAACA;SAAK;IACf;IAEA,KAAK,MAAMK,YAAYL,KAAM;QAC3B,IAAIM;QACJ,IAAIC;QACJ,IAAIF,QAAQ,CAAC,EAAE,KAAK,KAAK;YACvBC,eAAeD,SAASG,SAAS,CAAC;YAClCD,gBAAgB;QAClB,OAAO;YACLD,eAAeD;YACfE,gBAAgB;QAClB;QACA,IAAI;YACF,MAAM,EAAEE,YAAYC,mBAAmB,EAAEC,OAAOC,SAAS,EAAE,GAAGpB,uBAAuB;gBACnFE;gBACAmB,gBAAgBP;gBAChBV;gBACAC;gBACAC;gBACAgB,cAAcR,aAAaS,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;gBACrDjB;gBACAE;gBACAgB,OAAOX;YACT;YACA,IAAIM,WAAW,CAACF,oBAAoB,EAAE;gBACpCR,QAAQgB,IAAI,CAAC;oBACXC,QACExB,cAAcM,cAAcV,wBAAwBqB,aAChDjB,UAAU,CAACe,oBAAoB,GAC/BE,SAAS,CAACF,oBAAoB;oBACpCU,OAAOb,kBAAkB,QAAQlB,MAAMC;gBACzC;gBAEAS,YAAY,CAACW,oBAAoB,GAAGE,SAAS,CAACF,oBAAoB;YACpE;QACF,EAAE,OAAOW,KAAK;QACZ,WAAW;QACb;IACF;IAEA,OAAOnB;AACT,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { asc, desc, SQL } from 'drizzle-orm';
|
|
1
|
+
import type { asc, desc, SQL, Table } from 'drizzle-orm';
|
|
2
2
|
import type { PgTableWithColumns } from 'drizzle-orm/pg-core';
|
|
3
3
|
import type { FlattenedField, Sort, Where } from 'payload';
|
|
4
4
|
import type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js';
|
|
@@ -9,6 +9,7 @@ export type BuildQueryJoinAliases = {
|
|
|
9
9
|
}[];
|
|
10
10
|
type BuildQueryArgs = {
|
|
11
11
|
adapter: DrizzleAdapter;
|
|
12
|
+
aliasTable?: Table;
|
|
12
13
|
fields: FlattenedField[];
|
|
13
14
|
joins?: BuildQueryJoinAliases;
|
|
14
15
|
locale?: string;
|
|
@@ -26,6 +27,6 @@ export type BuildQueryResult = {
|
|
|
26
27
|
selectFields: Record<string, GenericColumn>;
|
|
27
28
|
where: SQL;
|
|
28
29
|
};
|
|
29
|
-
declare const buildQuery: ({ adapter, fields, joins, locale, selectLocale, sort, tableName, where: incomingWhere, }: BuildQueryArgs) => BuildQueryResult;
|
|
30
|
+
declare const buildQuery: ({ adapter, aliasTable, fields, joins, locale, selectLocale, sort, tableName, where: incomingWhere, }: BuildQueryArgs) => BuildQueryResult;
|
|
30
31
|
export default buildQuery;
|
|
31
32
|
//# sourceMappingURL=buildQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IACd,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AACD,QAAA,MAAM,UAAU,yGAUb,cAAc,KAAG,gBAsCnB,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { buildOrderBy } from './buildOrderBy.js';
|
|
2
2
|
import { parseParams } from './parseParams.js';
|
|
3
|
-
const buildQuery = function buildQuery({ adapter, fields, joins = [], locale, selectLocale, sort, tableName, where: incomingWhere }) {
|
|
3
|
+
const buildQuery = function buildQuery({ adapter, aliasTable, fields, joins = [], locale, selectLocale, sort, tableName, where: incomingWhere }) {
|
|
4
4
|
const selectFields = {
|
|
5
5
|
id: adapter.tables[tableName].id
|
|
6
6
|
};
|
|
7
7
|
const orderBy = buildOrderBy({
|
|
8
8
|
adapter,
|
|
9
|
+
aliasTable,
|
|
9
10
|
fields,
|
|
10
11
|
joins,
|
|
11
12
|
locale,
|
|
@@ -17,6 +18,7 @@ const buildQuery = function buildQuery({ adapter, fields, joins = [], locale, se
|
|
|
17
18
|
if (incomingWhere && Object.keys(incomingWhere).length > 0) {
|
|
18
19
|
where = parseParams({
|
|
19
20
|
adapter,
|
|
21
|
+
aliasTable,
|
|
20
22
|
fields,
|
|
21
23
|
joins,
|
|
22
24
|
locale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/buildQuery.ts"],"sourcesContent":["import type { asc, desc, SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { FlattenedField, Sort, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js'\n\nimport { buildOrderBy } from './buildOrderBy.js'\nimport { parseParams } from './parseParams.js'\n\nexport type BuildQueryJoinAliases = {\n condition: SQL\n table: GenericTable | PgTableWithColumns<any>\n type?: 'innerJoin' | 'leftJoin' | 'rightJoin'\n}[]\n\ntype BuildQueryArgs = {\n adapter: DrizzleAdapter\n fields: FlattenedField[]\n joins?: BuildQueryJoinAliases\n locale?: string\n selectLocale?: boolean\n sort?: Sort\n tableName: string\n where: Where\n}\n\nexport type BuildQueryResult = {\n joins: BuildQueryJoinAliases\n orderBy: {\n column: GenericColumn\n order: typeof asc | typeof desc\n }[]\n selectFields: Record<string, GenericColumn>\n where: SQL\n}\nconst buildQuery = function buildQuery({\n adapter,\n fields,\n joins = [],\n locale,\n selectLocale,\n sort,\n tableName,\n where: incomingWhere,\n}: BuildQueryArgs): BuildQueryResult {\n const selectFields: Record<string, GenericColumn> = {\n id: adapter.tables[tableName].id,\n }\n\n const orderBy = buildOrderBy({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n })\n\n let where: SQL\n\n if (incomingWhere && Object.keys(incomingWhere).length > 0) {\n where = parseParams({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: incomingWhere,\n })\n }\n\n return {\n joins,\n orderBy,\n selectFields,\n where,\n }\n}\n\nexport default buildQuery\n"],"names":["buildOrderBy","parseParams","buildQuery","adapter","fields","joins","locale","selectLocale","sort","tableName","where","incomingWhere","selectFields","id","tables","orderBy","Object","keys","length"],"mappings":"AAMA,SAASA,YAAY,QAAQ,oBAAmB;AAChD,SAASC,WAAW,QAAQ,mBAAkB;
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildQuery.ts"],"sourcesContent":["import type { asc, desc, SQL, Table } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { FlattenedField, Sort, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js'\n\nimport { buildOrderBy } from './buildOrderBy.js'\nimport { parseParams } from './parseParams.js'\n\nexport type BuildQueryJoinAliases = {\n condition: SQL\n table: GenericTable | PgTableWithColumns<any>\n type?: 'innerJoin' | 'leftJoin' | 'rightJoin'\n}[]\n\ntype BuildQueryArgs = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins?: BuildQueryJoinAliases\n locale?: string\n selectLocale?: boolean\n sort?: Sort\n tableName: string\n where: Where\n}\n\nexport type BuildQueryResult = {\n joins: BuildQueryJoinAliases\n orderBy: {\n column: GenericColumn\n order: typeof asc | typeof desc\n }[]\n selectFields: Record<string, GenericColumn>\n where: SQL\n}\nconst buildQuery = function buildQuery({\n adapter,\n aliasTable,\n fields,\n joins = [],\n locale,\n selectLocale,\n sort,\n tableName,\n where: incomingWhere,\n}: BuildQueryArgs): BuildQueryResult {\n const selectFields: Record<string, GenericColumn> = {\n id: adapter.tables[tableName].id,\n }\n\n const orderBy = buildOrderBy({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n })\n\n let where: SQL\n\n if (incomingWhere && Object.keys(incomingWhere).length > 0) {\n where = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: incomingWhere,\n })\n }\n\n return {\n joins,\n orderBy,\n selectFields,\n where,\n }\n}\n\nexport default buildQuery\n"],"names":["buildOrderBy","parseParams","buildQuery","adapter","aliasTable","fields","joins","locale","selectLocale","sort","tableName","where","incomingWhere","selectFields","id","tables","orderBy","Object","keys","length"],"mappings":"AAMA,SAASA,YAAY,QAAQ,oBAAmB;AAChD,SAASC,WAAW,QAAQ,mBAAkB;AA6B9C,MAAMC,aAAa,SAASA,WAAW,EACrCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,QAAQ,EAAE,EACVC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACTC,OAAOC,aAAa,EACL;IACf,MAAMC,eAA8C;QAClDC,IAAIX,QAAQY,MAAM,CAACL,UAAU,CAACI,EAAE;IAClC;IAEA,MAAME,UAAUhB,aAAa;QAC3BG;QACAC;QACAC;QACAC;QACAC;QACAM;QACAJ;QACAC;IACF;IAEA,IAAIC;IAEJ,IAAIC,iBAAiBK,OAAOC,IAAI,CAACN,eAAeO,MAAM,GAAG,GAAG;QAC1DR,QAAQV,YAAY;YAClBE;YACAC;YACAC;YACAC;YACAC;YACAM;YACAL;YACAE;YACAC,OAAOC;QACT;IACF;IAEA,OAAO;QACLN;QACAU;QACAH;QACAF;IACF;AACF;AAEA,eAAeT,WAAU"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { SQL } from 'drizzle-orm';
|
|
1
|
+
import type { SQL, Table } from 'drizzle-orm';
|
|
2
2
|
import type { FlattenedField, Where } from 'payload';
|
|
3
3
|
import type { DrizzleAdapter, GenericColumn } from '../types.js';
|
|
4
4
|
import type { BuildQueryJoinAliases } from './buildQuery.js';
|
|
5
5
|
type Args = {
|
|
6
6
|
adapter: DrizzleAdapter;
|
|
7
|
+
aliasTable?: Table;
|
|
7
8
|
fields: FlattenedField[];
|
|
8
9
|
joins: BuildQueryJoinAliases;
|
|
9
10
|
locale: string;
|
|
@@ -12,6 +13,6 @@ type Args = {
|
|
|
12
13
|
tableName: string;
|
|
13
14
|
where: Where;
|
|
14
15
|
};
|
|
15
|
-
export declare function parseParams({ adapter, fields, joins, locale, selectFields, selectLocale, tableName, where, }: Args): SQL;
|
|
16
|
+
export declare function parseParams({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where, }: Args): SQL;
|
|
16
17
|
export {};
|
|
17
18
|
//# sourceMappingURL=parseParams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;
|
|
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,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,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,GAAG,CAqUZ"}
|
|
@@ -2,10 +2,11 @@ import { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm';
|
|
|
2
2
|
import { PgUUID } from 'drizzle-orm/pg-core';
|
|
3
3
|
import { QueryError } from 'payload';
|
|
4
4
|
import { validOperators } from 'payload/shared';
|
|
5
|
+
import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
|
|
5
6
|
import { buildAndOrConditions } from './buildAndOrConditions.js';
|
|
6
7
|
import { getTableColumnFromPath } from './getTableColumnFromPath.js';
|
|
7
8
|
import { sanitizeQueryValue } from './sanitizeQueryValue.js';
|
|
8
|
-
export function parseParams({ adapter, fields, joins, locale, selectFields, selectLocale, tableName, where }) {
|
|
9
|
+
export function parseParams({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where }) {
|
|
9
10
|
let result;
|
|
10
11
|
const constraints = [];
|
|
11
12
|
if (typeof where === 'object' && Object.keys(where).length > 0) {
|
|
@@ -22,6 +23,7 @@ export function parseParams({ adapter, fields, joins, locale, selectFields, sele
|
|
|
22
23
|
if (Array.isArray(condition)) {
|
|
23
24
|
const builtConditions = buildAndOrConditions({
|
|
24
25
|
adapter,
|
|
26
|
+
aliasTable,
|
|
25
27
|
fields,
|
|
26
28
|
joins,
|
|
27
29
|
locale,
|
|
@@ -44,6 +46,7 @@ export function parseParams({ adapter, fields, joins, locale, selectFields, sele
|
|
|
44
46
|
const val = where[relationOrPath][operator];
|
|
45
47
|
const { columnName, columns, constraints: queryConstraints, field, getNotNullColumnByValue, pathSegments, rawColumn, table } = getTableColumnFromPath({
|
|
46
48
|
adapter,
|
|
49
|
+
aliasTable,
|
|
47
50
|
collectionPath: relationOrPath,
|
|
48
51
|
fields,
|
|
49
52
|
joins,
|
|
@@ -199,8 +202,9 @@ export function parseParams({ adapter, fields, joins, locale, selectFields, sele
|
|
|
199
202
|
constraints.push(wrapOperator(...queryColumns.map(({ rawColumn, value })=>adapter.operators[queryOperator](rawColumn, value))));
|
|
200
203
|
break;
|
|
201
204
|
}
|
|
205
|
+
const resolvedColumn = rawColumn || (aliasTable && tableName === getNameFromDrizzleTable(table) ? aliasTable[columnName] : table[columnName]);
|
|
202
206
|
if (queryOperator === 'not_equals' && queryValue !== null) {
|
|
203
|
-
constraints.push(or(isNull(
|
|
207
|
+
constraints.push(or(isNull(resolvedColumn), /* eslint-disable @typescript-eslint/no-explicit-any */ ne(resolvedColumn, queryValue)));
|
|
204
208
|
break;
|
|
205
209
|
}
|
|
206
210
|
if ((field.type === 'relationship' || field.type === 'upload') && Array.isArray(queryValue) && operator === 'not_in') {
|
|
@@ -211,11 +215,11 @@ export function parseParams({ adapter, fields, joins, locale, selectFields, sele
|
|
|
211
215
|
break;
|
|
212
216
|
}
|
|
213
217
|
if (operator === 'equals' && queryValue === null) {
|
|
214
|
-
constraints.push(isNull(
|
|
218
|
+
constraints.push(isNull(resolvedColumn));
|
|
215
219
|
break;
|
|
216
220
|
}
|
|
217
221
|
if (operator === 'not_equals' && queryValue === null) {
|
|
218
|
-
constraints.push(isNotNull(
|
|
222
|
+
constraints.push(isNotNull(resolvedColumn));
|
|
219
223
|
break;
|
|
220
224
|
}
|
|
221
225
|
if (field.type === 'point' && adapter.name === 'postgres') {
|
|
@@ -245,7 +249,7 @@ export function parseParams({ adapter, fields, joins, locale, selectFields, sele
|
|
|
245
249
|
}
|
|
246
250
|
break;
|
|
247
251
|
}
|
|
248
|
-
constraints.push(adapter.operators[queryOperator](
|
|
252
|
+
constraints.push(adapter.operators[queryOperator](resolvedColumn, queryValue));
|
|
249
253
|
}
|
|
250
254
|
}
|
|
251
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL } 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 { validOperators } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where\n}\n\nexport function parseParams({\n adapter,\n fields,\n joins,\n locale,\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 fields,\n joins,\n locale,\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 (validOperators.includes(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 collectionPath: relationOrPath,\n fields,\n joins,\n locale,\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 if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(rawColumn || table[columnName]),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(rawColumn || table[columnName], 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(rawColumn || table[columnName]))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(rawColumn || table[columnName]))\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\n let constraint = sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n constraint = sql`${constraint} AND ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`\n }\n constraints.push(constraint)\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(\n adapter.operators[queryOperator](rawColumn || table[columnName], queryValue),\n )\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","validOperators","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","fields","joins","locale","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","includes","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","forEach","col","constraintTable","indexOf","push","operators","like","equals","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","JSON","stringify","lng","lat","maxDistance","minDistance","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 { validOperators } 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 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 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 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 (validOperators.includes(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 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\n let constraint = sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n constraint = sql`${constraint} AND ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`\n }\n constraints.push(constraint)\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","validOperators","getNameFromDrizzleTable","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","aliasTable","fields","joins","locale","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","includes","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","forEach","col","constraintTable","indexOf","push","operators","like","equals","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","Number"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildRawSchema.d.ts","sourceRoot":"","sources":["../../src/schema/buildRawSchema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAY,WAAW,EAAE,MAAM,aAAa,CAAA;AAKxE;;GAEG;AACH,eAAO,MAAM,cAAc,8BAGxB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB,
|
|
1
|
+
{"version":3,"file":"buildRawSchema.d.ts","sourceRoot":"","sources":["../../src/schema/buildRawSchema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAY,WAAW,EAAE,MAAM,aAAa,CAAA;AAKxE;;GAEG;AACH,eAAO,MAAM,cAAc,8BAGxB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB,SAwGA,CAAA"}
|
|
@@ -5,6 +5,7 @@ import { buildTable } from './build.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Builds abstract Payload SQL schema
|
|
7
7
|
*/ export const buildRawSchema = ({ adapter, setColumnID })=>{
|
|
8
|
+
adapter.indexes = new Set();
|
|
8
9
|
adapter.payload.config.collections.forEach((collection)=>{
|
|
9
10
|
createTableName({
|
|
10
11
|
adapter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schema/buildRawSchema.ts"],"sourcesContent":["import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter, RawIndex, SetColumnID } from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildTable } from './build.js'\n\n/**\n * Builds abstract Payload SQL schema\n */\nexport const buildRawSchema = ({\n adapter,\n setColumnID,\n}: {\n adapter: DrizzleAdapter\n setColumnID: SetColumnID\n}) => {\n adapter.payload.config.collections.forEach((collection) => {\n createTableName({\n adapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n\n adapter.payload.config.collections.forEach((collection) => {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const config = adapter.payload.config\n\n const baseIndexes: Record<string, RawIndex> = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseIndexes.filename_compound_index = {\n name: indexName,\n on: collection.upload.filenameCompoundIndex.map((f) => f),\n unique: true,\n }\n }\n\n buildTable({\n adapter,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.flattenedFields,\n setColumnID,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(config, collection, true)\n\n buildTable({\n adapter,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n adapter.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter,\n config: global,\n })\n\n buildTable({\n adapter,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.flattenedFields,\n setColumnID,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const config = adapter.payload.config\n const versionFields = buildVersionGlobalFields(config, global, true)\n\n buildTable({\n adapter,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","buildTable","buildRawSchema","adapter","setColumnID","payload","config","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseIndexes","upload","filenameCompoundIndex","indexName","filename_compound_index","name","on","map","f","unique","disableNotNull","drafts","disableUnique","fields","flattenedFields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"AAAA,SAASA,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAChF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,UAAU,QAAQ,aAAY;AAEvC;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,WAAW,EAIZ;IACCD,QAAQE,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;
|
|
1
|
+
{"version":3,"sources":["../../src/schema/buildRawSchema.ts"],"sourcesContent":["import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter, RawIndex, SetColumnID } from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildTable } from './build.js'\n\n/**\n * Builds abstract Payload SQL schema\n */\nexport const buildRawSchema = ({\n adapter,\n setColumnID,\n}: {\n adapter: DrizzleAdapter\n setColumnID: SetColumnID\n}) => {\n adapter.indexes = new Set()\n\n adapter.payload.config.collections.forEach((collection) => {\n createTableName({\n adapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n\n adapter.payload.config.collections.forEach((collection) => {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const config = adapter.payload.config\n\n const baseIndexes: Record<string, RawIndex> = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseIndexes.filename_compound_index = {\n name: indexName,\n on: collection.upload.filenameCompoundIndex.map((f) => f),\n unique: true,\n }\n }\n\n buildTable({\n adapter,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.flattenedFields,\n setColumnID,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(config, collection, true)\n\n buildTable({\n adapter,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n adapter.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter,\n config: global,\n })\n\n buildTable({\n adapter,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.flattenedFields,\n setColumnID,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const config = adapter.payload.config\n const versionFields = buildVersionGlobalFields(config, global, true)\n\n buildTable({\n adapter,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","buildTable","buildRawSchema","adapter","setColumnID","indexes","Set","payload","config","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseIndexes","upload","filenameCompoundIndex","indexName","filename_compound_index","name","on","map","f","unique","disableNotNull","drafts","disableUnique","fields","flattenedFields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"AAAA,SAASA,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAChF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,UAAU,QAAQ,aAAY;AAEvC;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,WAAW,EAIZ;IACCD,QAAQE,OAAO,GAAG,IAAIC;IAEtBH,QAAQI,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1CX,gBAAgB;YACdG;YACAK,QAAQG;QACV;QAEA,IAAIA,WAAWC,QAAQ,EAAE;YACvBZ,gBAAgB;gBACdG;gBACAK,QAAQG;gBACRC,UAAU;gBACVC,oBAAoB;YACtB;QACF;IACF;IAEAV,QAAQI,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1C,MAAMG,YAAYX,QAAQY,YAAY,CAACC,GAAG,CAACjB,YAAYY,WAAWM,IAAI;QACtE,MAAMT,SAASL,QAAQI,OAAO,CAACC,MAAM;QAErC,MAAMU,cAAwC,CAAC;QAE/C,IAAIP,WAAWQ,MAAM,CAACC,qBAAqB,EAAE;YAC3C,MAAMC,YAAY,GAAGP,UAAU,sBAAsB,CAAC;YAEtDI,YAAYI,uBAAuB,GAAG;gBACpCC,MAAMF;gBACNG,IAAIb,WAAWQ,MAAM,CAACC,qBAAqB,CAACK,GAAG,CAAC,CAACC,IAAMA;gBACvDC,QAAQ;YACV;QACF;QAEA1B,WAAW;YACTE;YACAyB,gBAAgB,CAAC,CAACjB,YAAYC,UAAUiB;YACxCC,eAAe;YACfC,QAAQpB,WAAWqB,eAAe;YAClC5B;YACAU;YACAmB,YAAYtB,WAAWsB,UAAU;YACjCrB,UAAU;QACZ;QAEA,IAAID,WAAWC,QAAQ,EAAE;YACvB,MAAMsB,oBAAoB/B,QAAQY,YAAY,CAACC,GAAG,CAChD,CAAC,CAAC,EAAEjB,YAAYY,WAAWM,IAAI,IAAId,QAAQgC,cAAc,EAAE;YAE7D,MAAMC,gBAAgBvC,6BAA6BW,QAAQG,YAAY;YAEvEV,WAAW;gBACTE;gBACAyB,gBAAgB,CAAC,CAACjB,WAAWC,QAAQ,EAAEiB;gBACvCC,eAAe;gBACfC,QAAQK;gBACRhC;gBACAU,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;IAEAT,QAAQI,OAAO,CAACC,MAAM,CAAC6B,OAAO,CAAC3B,OAAO,CAAC,CAAC4B;QACtC,MAAMxB,YAAYd,gBAAgB;YAChCG;YACAK,QAAQ8B;QACV;QAEArC,WAAW;YACTE;YACAyB,gBAAgB,CAAC,CAACU,QAAQ1B,UAAUiB;YACpCC,eAAe;YACfC,QAAQO,OAAON,eAAe;YAC9B5B;YACAU;YACAmB,YAAY;YACZrB,UAAU;QACZ;QAEA,IAAI0B,OAAO1B,QAAQ,EAAE;YACnB,MAAMsB,oBAAoBlC,gBAAgB;gBACxCG;gBACAK,QAAQ8B;gBACR1B,UAAU;gBACVC,oBAAoB;YACtB;YACA,MAAML,SAASL,QAAQI,OAAO,CAACC,MAAM;YACrC,MAAM4B,gBAAgBtC,yBAAyBU,QAAQ8B,QAAQ;YAE/DrC,WAAW;gBACTE;gBACAyB,gBAAgB,CAAC,CAACU,OAAO1B,QAAQ,EAAEiB;gBACnCC,eAAe;gBACfC,QAAQK;gBACRhC;gBACAU,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAA;AAUvE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAmB,cAAc,kBA6F1D,CAAA"}
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
+
import { deepStrictEqual } from 'assert';
|
|
1
2
|
import prompts from 'prompts';
|
|
3
|
+
const previousSchema = {
|
|
4
|
+
localeCodes: null,
|
|
5
|
+
rawTables: null
|
|
6
|
+
};
|
|
2
7
|
/**
|
|
3
8
|
* Pushes the development schema to the database using Drizzle.
|
|
4
9
|
*
|
|
5
10
|
* @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.
|
|
6
11
|
* @returns {Promise<void>} - A promise that resolves once the schema push is complete.
|
|
7
12
|
*/ export const pushDevSchema = async (adapter)=>{
|
|
13
|
+
if (process.env.PAYLOAD_FORCE_DRIZZLE_PUSH !== 'true') {
|
|
14
|
+
const localeCodes = adapter.payload.config.localization && adapter.payload.config.localization.localeCodes;
|
|
15
|
+
try {
|
|
16
|
+
deepStrictEqual(previousSchema, {
|
|
17
|
+
localeCodes,
|
|
18
|
+
rawTables: adapter.rawTables
|
|
19
|
+
});
|
|
20
|
+
if (adapter.logger) {
|
|
21
|
+
adapter.payload.logger.info('No changes detected in schema, skipping schema push.');
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
} catch {
|
|
25
|
+
previousSchema.localeCodes = localeCodes;
|
|
26
|
+
previousSchema.rawTables = adapter.rawTables;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
8
29
|
const { pushSchema } = adapter.requireDrizzleKit();
|
|
9
30
|
const { extensions = {}, tablesFilter } = adapter;
|
|
10
31
|
// This will prompt if clarifications are needed for Drizzle to push new schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import prompts from 'prompts'\n\nimport type { BasePostgresAdapter } from '../postgres/types.js'\nimport type { DrizzleAdapter, PostgresDB } from '../types.js'\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (adapter: DrizzleAdapter) => {\n const { pushSchema } = adapter.requireDrizzleKit()\n\n const { extensions = {}, tablesFilter } = adapter as BasePostgresAdapter\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, warnings } = await pushSchema(\n adapter.schema,\n adapter.drizzle,\n adapter.schemaName ? [adapter.schemaName] : undefined,\n tablesFilter,\n // Drizzle extensionsFilter supports only postgis for now\n // https://github.com/drizzle-team/drizzle-orm/blob/83daf2d5cf023112de878bc2249ee2c41a2a5b1b/drizzle-kit/src/cli/validations/cli.ts#L26\n extensions.postgis ? ['postgis'] : undefined,\n )\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n const migrationsTable = adapter.schemaName\n ? `\"${adapter.schemaName}\".\"payload_migrations\"`\n : '\"payload_migrations\"'\n\n const drizzle = adapter.drizzle as PostgresDB\n\n const result = await adapter.execute({\n drizzle,\n raw: `SELECT * FROM ${migrationsTable} WHERE batch = '-1'`,\n })\n\n const devPush = result.rows\n\n if (!devPush.length) {\n // Use drizzle for insert so $defaultFn's are called\n await drizzle.insert(adapter.tables.payload_migrations).values({\n name: 'dev',\n batch: -1,\n })\n } else {\n await adapter.execute({\n drizzle,\n raw: `UPDATE ${migrationsTable} SET updated_at = CURRENT_TIMESTAMP WHERE batch = '-1'`,\n })\n }\n}\n"],"names":["prompts","pushDevSchema","adapter","pushSchema","requireDrizzleKit","extensions","tablesFilter","apply","hasDataLoss","warnings","schema","drizzle","schemaName","undefined","postgis","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { deepStrictEqual } from 'assert'\nimport prompts from 'prompts'\n\nimport type { BasePostgresAdapter } from '../postgres/types.js'\nimport type { DrizzleAdapter, PostgresDB, RawTable } from '../types.js'\n\nconst previousSchema: {\n localeCodes: null | string[]\n rawTables: null | Record<string, RawTable>\n} = {\n localeCodes: null,\n rawTables: null,\n}\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (adapter: DrizzleAdapter) => {\n if (process.env.PAYLOAD_FORCE_DRIZZLE_PUSH !== 'true') {\n const localeCodes =\n adapter.payload.config.localization && adapter.payload.config.localization.localeCodes\n\n try {\n deepStrictEqual(previousSchema, {\n localeCodes,\n rawTables: adapter.rawTables,\n })\n\n if (adapter.logger) {\n adapter.payload.logger.info('No changes detected in schema, skipping schema push.')\n }\n\n return\n } catch {\n previousSchema.localeCodes = localeCodes\n previousSchema.rawTables = adapter.rawTables\n }\n }\n\n const { pushSchema } = adapter.requireDrizzleKit()\n\n const { extensions = {}, tablesFilter } = adapter as BasePostgresAdapter\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, warnings } = await pushSchema(\n adapter.schema,\n adapter.drizzle,\n adapter.schemaName ? [adapter.schemaName] : undefined,\n tablesFilter,\n // Drizzle extensionsFilter supports only postgis for now\n // https://github.com/drizzle-team/drizzle-orm/blob/83daf2d5cf023112de878bc2249ee2c41a2a5b1b/drizzle-kit/src/cli/validations/cli.ts#L26\n extensions.postgis ? ['postgis'] : undefined,\n )\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n const migrationsTable = adapter.schemaName\n ? `\"${adapter.schemaName}\".\"payload_migrations\"`\n : '\"payload_migrations\"'\n\n const drizzle = adapter.drizzle as PostgresDB\n\n const result = await adapter.execute({\n drizzle,\n raw: `SELECT * FROM ${migrationsTable} WHERE batch = '-1'`,\n })\n\n const devPush = result.rows\n\n if (!devPush.length) {\n // Use drizzle for insert so $defaultFn's are called\n await drizzle.insert(adapter.tables.payload_migrations).values({\n name: 'dev',\n batch: -1,\n })\n } else {\n await adapter.execute({\n drizzle,\n raw: `UPDATE ${migrationsTable} SET updated_at = CURRENT_TIMESTAMP WHERE batch = '-1'`,\n })\n }\n}\n"],"names":["deepStrictEqual","prompts","previousSchema","localeCodes","rawTables","pushDevSchema","adapter","process","env","PAYLOAD_FORCE_DRIZZLE_PUSH","payload","config","localization","logger","info","pushSchema","requireDrizzleKit","extensions","tablesFilter","apply","hasDataLoss","warnings","schema","drizzle","schemaName","undefined","postgis","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","exit","migrationsTable","result","execute","raw","devPush","rows","insert","tables","payload_migrations","values","batch"],"mappings":"AAAA,SAASA,eAAe,QAAQ,SAAQ;AACxC,OAAOC,aAAa,UAAS;AAK7B,MAAMC,iBAGF;IACFC,aAAa;IACbC,WAAW;AACb;AAEA;;;;;CAKC,GACD,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAIC,QAAQC,GAAG,CAACC,0BAA0B,KAAK,QAAQ;QACrD,MAAMN,cACJG,QAAQI,OAAO,CAACC,MAAM,CAACC,YAAY,IAAIN,QAAQI,OAAO,CAACC,MAAM,CAACC,YAAY,CAACT,WAAW;QAExF,IAAI;YACFH,gBAAgBE,gBAAgB;gBAC9BC;gBACAC,WAAWE,QAAQF,SAAS;YAC9B;YAEA,IAAIE,QAAQO,MAAM,EAAE;gBAClBP,QAAQI,OAAO,CAACG,MAAM,CAACC,IAAI,CAAC;YAC9B;YAEA;QACF,EAAE,OAAM;YACNZ,eAAeC,WAAW,GAAGA;YAC7BD,eAAeE,SAAS,GAAGE,QAAQF,SAAS;QAC9C;IACF;IAEA,MAAM,EAAEW,UAAU,EAAE,GAAGT,QAAQU,iBAAiB;IAEhD,MAAM,EAAEC,aAAa,CAAC,CAAC,EAAEC,YAAY,EAAE,GAAGZ;IAE1C,+EAA+E;IAC/E,MAAM,EAAEa,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAG,MAAMN,WAC7CT,QAAQgB,MAAM,EACdhB,QAAQiB,OAAO,EACfjB,QAAQkB,UAAU,GAAG;QAAClB,QAAQkB,UAAU;KAAC,GAAGC,WAC5CP,cACA,yDAAyD;IACzD,uIAAuI;IACvID,WAAWS,OAAO,GAAG;QAAC;KAAU,GAAGD;IAGrC,IAAIJ,SAASM,MAAM,EAAE;QACnB,IAAIC,UAAU,CAAC,0CAA0C,EAAEP,SAASQ,IAAI,CAAC,MAAM,IAAI,CAAC;QAEpF,IAAIT,aAAa;YACfQ,WAAW,CAAC,uEAAuE,CAAC;QACtF;QAEAA,WAAW,CAAC,4CAA4C,CAAC;QAEzD,MAAM,EAAEE,SAASC,cAAc,EAAE,GAAG,MAAM9B,QACxC;YACE+B,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACR5B,QAAQ6B,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACL,gBAAgB;YACnBxB,QAAQ6B,IAAI,CAAC;QACf;IACF;IAEA,MAAMjB;IACN,MAAMkB,kBAAkB/B,QAAQkB,UAAU,GACtC,CAAC,CAAC,EAAElB,QAAQkB,UAAU,CAAC,sBAAsB,CAAC,GAC9C;IAEJ,MAAMD,UAAUjB,QAAQiB,OAAO;IAE/B,MAAMe,SAAS,MAAMhC,QAAQiC,OAAO,CAAC;QACnChB;QACAiB,KAAK,CAAC,cAAc,EAAEH,gBAAgB,mBAAmB,CAAC;IAC5D;IAEA,MAAMI,UAAUH,OAAOI,IAAI;IAE3B,IAAI,CAACD,QAAQd,MAAM,EAAE;QACnB,oDAAoD;QACpD,MAAMJ,QAAQoB,MAAM,CAACrC,QAAQsC,MAAM,CAACC,kBAAkB,EAAEC,MAAM,CAAC;YAC7Dd,MAAM;YACNe,OAAO,CAAC;QACV;IACF,OAAO;QACL,MAAMzC,QAAQiC,OAAO,CAAC;YACpBhB;YACAiB,KAAK,CAAC,OAAO,EAAEH,gBAAgB,sDAAsD,CAAC;QACxF;IACF;AACF,EAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.11.1-canary.
|
|
3
|
+
"version": "3.11.1-canary.eb516b3",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -53,16 +53,16 @@
|
|
|
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.11.1-canary.
|
|
56
|
+
"payload": "3.11.1-canary.eb516b3"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"payload": "3.11.1-canary.
|
|
59
|
+
"payload": "3.11.1-canary.eb516b3"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "pnpm build:swc && pnpm build:types",
|
|
63
63
|
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
|
|
64
64
|
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
65
|
-
"clean": "rimraf {dist,*.tsbuildinfo}",
|
|
65
|
+
"clean": "rimraf -g {dist,*.tsbuildinfo}",
|
|
66
66
|
"lint": "eslint .",
|
|
67
67
|
"lint:fix": "eslint . --fix"
|
|
68
68
|
}
|