@payloadcms/drizzle 4.0.0-internal.e55ccef → 4.0.0-internal.ea6e8f8
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/count.d.ts.map +1 -1
- package/dist/count.js +25 -3
- package/dist/count.js.map +1 -1
- package/dist/countVersions.d.ts.map +1 -1
- package/dist/countVersions.js +28 -4
- package/dist/countVersions.js.map +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +15 -2
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createTableName.d.ts.map +1 -1
- package/dist/createTableName.js +2 -7
- package/dist/createTableName.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +12 -1
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteBranchGlobal.d.ts +10 -0
- package/dist/deleteBranchGlobal.d.ts.map +1 -0
- package/dist/deleteBranchGlobal.js +27 -0
- package/dist/deleteBranchGlobal.js.map +1 -0
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +18 -1
- package/dist/deleteOne.js.map +1 -1
- package/dist/exports/postgres.d.ts +3 -0
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +3 -0
- package/dist/exports/postgres.js.map +1 -1
- package/dist/exports/sqlite.d.ts +1 -0
- package/dist/exports/sqlite.d.ts.map +1 -1
- package/dist/exports/sqlite.js +1 -0
- package/dist/exports/sqlite.js.map +1 -1
- package/dist/find/buildFindManyArgs.d.ts +3 -2
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildFindManyArgs.js +2 -1
- package/dist/find/buildFindManyArgs.js.map +1 -1
- package/dist/find/buildPolymorphicJoinQuery.d.ts +39 -0
- package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
- package/dist/find/buildPolymorphicJoinQuery.js +152 -0
- package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
- package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
- package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
- package/dist/find/buildPolymorphicJoinWhere.js +301 -0
- package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
- package/dist/find/createPolymorphicJoinWherePlan.d.ts +37 -0
- package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
- package/dist/find/createPolymorphicJoinWherePlan.js +191 -0
- package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
- package/dist/find/findMany.d.ts +6 -1
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/findMany.js +16 -3
- package/dist/find/findMany.js.map +1 -1
- package/dist/find/traverseFields.d.ts +3 -2
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +72 -197
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +32 -4
- package/dist/find.js.map +1 -1
- package/dist/findDistinct.d.ts.map +1 -1
- package/dist/findDistinct.js +107 -8
- package/dist/findDistinct.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +22 -5
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.js +8 -3
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +30 -3
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +32 -5
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +41 -15
- package/dist/migrate.js.map +1 -1
- package/dist/migrateDown.d.ts +2 -1
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +17 -4
- package/dist/migrateDown.js.map +1 -1
- package/dist/migrateFresh.d.ts +4 -2
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +26 -9
- package/dist/migrateFresh.js.map +1 -1
- package/dist/migrateRefresh.d.ts +2 -1
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +20 -5
- package/dist/migrateRefresh.js.map +1 -1
- package/dist/migrateReset.d.ts +2 -1
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +18 -4
- package/dist/migrateReset.js.map +1 -1
- package/dist/migrateStatus.d.ts +2 -1
- package/dist/migrateStatus.d.ts.map +1 -1
- package/dist/migrateStatus.js +11 -6
- package/dist/migrateStatus.js.map +1 -1
- package/dist/postgres/createJSONQuery/index.js +3 -3
- package/dist/postgres/createJSONQuery/index.js.map +1 -1
- package/dist/postgres/init.d.ts.map +1 -1
- package/dist/postgres/init.js +6 -0
- package/dist/postgres/init.js.map +1 -1
- package/dist/postgres/insert.d.ts.map +1 -1
- package/dist/postgres/insert.js +4 -2
- package/dist/postgres/insert.js.map +1 -1
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
- package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
- package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
- package/dist/postgres/query/postgresUnaccent.js +40 -0
- package/dist/postgres/query/postgresUnaccent.js.map +1 -0
- package/dist/postgres/types.d.ts +17 -2
- package/dist/postgres/types.d.ts.map +1 -1
- package/dist/postgres/types.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/buildBranchVisibility.d.ts +11 -0
- package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
- package/dist/queries/buildBranchVisibility.js +48 -0
- package/dist/queries/buildBranchVisibility.js.map +1 -0
- package/dist/queries/buildOperatorConstraint.d.ts +22 -0
- package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
- package/dist/queries/buildOperatorConstraint.js +63 -0
- package/dist/queries/buildOperatorConstraint.js.map +1 -0
- package/dist/queries/buildOrderBy.d.ts +3 -2
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildOrderBy.js +2 -1
- 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 +4 -2
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +15 -5
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +225 -54
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/operatorMap.d.ts +7 -3
- package/dist/queries/operatorMap.d.ts.map +1 -1
- package/dist/queries/operatorMap.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 +266 -11
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/resolveRelationshipPath.d.ts +36 -0
- package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
- package/dist/queries/resolveRelationshipPath.js +66 -0
- package/dist/queries/resolveRelationshipPath.js.map +1 -0
- package/dist/queries/validateOperatorHandlers.d.ts +8 -0
- package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
- package/dist/queries/validateOperatorHandlers.js +30 -0
- package/dist/queries/validateOperatorHandlers.js.map +1 -0
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +23 -4
- package/dist/queryDrafts.js.map +1 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +20 -17
- package/dist/schema/build.js.map +1 -1
- package/dist/schema/traverseFields.js +5 -5
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
- package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/index.js +6 -5
- package/dist/sqlite/createJSONQuery/index.js.map +1 -1
- package/dist/sqlite/insert.d.ts.map +1 -1
- package/dist/sqlite/insert.js +9 -4
- package/dist/sqlite/insert.js.map +1 -1
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
- package/dist/sqlite/types.d.ts +4 -0
- package/dist/sqlite/types.d.ts.map +1 -1
- package/dist/sqlite/types.js.map +1 -1
- package/dist/transactions/beginTransaction.d.ts.map +1 -1
- package/dist/transactions/beginTransaction.js +13 -5
- package/dist/transactions/beginTransaction.js.map +1 -1
- package/dist/transactions/commitTransaction.d.ts.map +1 -1
- package/dist/transactions/commitTransaction.js +1 -5
- package/dist/transactions/commitTransaction.js.map +1 -1
- package/dist/transform/write/array.d.ts +3 -2
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +2 -1
- package/dist/transform/write/array.js.map +1 -1
- package/dist/transform/write/blocks.d.ts +3 -2
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +2 -1
- package/dist/transform/write/blocks.js.map +1 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/index.js +2 -0
- package/dist/transform/write/index.js.map +1 -1
- package/dist/transform/write/traverseFields.d.ts +2 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +40 -20
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/transform/write/types.d.ts +7 -0
- package/dist/transform/write/types.d.ts.map +1 -1
- package/dist/transform/write/types.js.map +1 -1
- package/dist/types.d.ts +51 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updateGlobal.d.ts +5 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +96 -4
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +37 -0
- package/dist/updateJobs.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +86 -4
- package/dist/updateOne.js.map +1 -1
- package/dist/upsertBranchGlobalChange.d.ts +3 -0
- package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
- package/dist/upsertBranchGlobalChange.js +35 -0
- package/dist/upsertBranchGlobalChange.js.map +1 -0
- package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
- package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
- package/dist/upsertRow/index.d.ts +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +156 -46
- package/dist/upsertRow/index.js.map +1 -1
- package/dist/upsertRow/types.d.ts +3 -0
- package/dist/upsertRow/types.d.ts.map +1 -1
- package/dist/upsertRow/types.js.map +1 -1
- package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.js +12 -8
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
- package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
- package/dist/utilities/buildForeignKeyName.js +3 -2
- package/dist/utilities/buildForeignKeyName.js.map +1 -1
- package/dist/utilities/buildIndexName.d.ts.map +1 -1
- package/dist/utilities/buildIndexName.js +3 -2
- package/dist/utilities/buildIndexName.js.map +1 -1
- package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
- package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
- package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
- package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
- package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
- package/dist/utilities/createSchemaGenerator.js +3 -0
- package/dist/utilities/createSchemaGenerator.js.map +1 -1
- package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
- package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
- package/dist/utilities/getSizesToVariantsRenames.js +251 -0
- package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
- package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
- package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
- package/dist/utilities/parseJSONPathSegment.js +17 -0
- package/dist/utilities/parseJSONPathSegment.js.map +1 -0
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
- package/dist/utilities/validateIdentifierLength.d.ts +12 -0
- package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
- package/dist/utilities/validateIdentifierLength.js +18 -0
- package/dist/utilities/validateIdentifierLength.js.map +1 -0
- package/package.json +3 -3
- package/dist/upsertRow/handleUpsertError.spec.js +0 -42
- package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
- package/dist/utilities/isValidStringID.spec.js +0 -15
- package/dist/utilities/isValidStringID.spec.js.map +0 -1
|
@@ -1,75 +1,17 @@
|
|
|
1
|
-
import { and,
|
|
2
|
-
import { appendVersionToQueryKey, buildVersionCollectionFields, combineQueries,
|
|
1
|
+
import { and, count, sql } from 'drizzle-orm';
|
|
2
|
+
import { appendVersionToQueryKey, buildVersionCollectionFields, combineQueries, getBranchPredicateSync, getQueryDraftsSort, resolveBranchReadState, resolveBranchVersionQuerySync, rewriteBranchVersionParents } from 'payload';
|
|
3
3
|
import { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared';
|
|
4
4
|
import toSnakeCase from 'to-snake-case';
|
|
5
|
+
import { buildBranchVisibility } from '../queries/buildBranchVisibility.js';
|
|
5
6
|
import { buildQuery } from '../queries/buildQuery.js';
|
|
6
7
|
import { getTableAlias } from '../queries/getTableAlias.js';
|
|
7
|
-
import { operatorMap } from '../queries/operatorMap.js';
|
|
8
8
|
import { getArrayRelationName } from '../utilities/getArrayRelationName.js';
|
|
9
9
|
import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
|
|
10
10
|
import { jsonAggBuildObject } from '../utilities/json.js';
|
|
11
11
|
import { rawConstraint } from '../utilities/rawConstraint.js';
|
|
12
|
-
import { sanitizePathSegment } from '../utilities/sanitizePathSegment.js';
|
|
13
12
|
import { InternalBlockTableNameIndex, resolveBlockTableName } from '../utilities/validateExistingBlockIsIdentical.js';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if ([
|
|
17
|
-
'AND',
|
|
18
|
-
'OR'
|
|
19
|
-
].includes(k.toUpperCase())) {
|
|
20
|
-
if (Array.isArray(where[k])) {
|
|
21
|
-
for (const whereField of where[k]){
|
|
22
|
-
flattenAllWherePaths(whereField, paths);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
} else {
|
|
26
|
-
// TODO: explore how to support arrays/relationship querying.
|
|
27
|
-
paths.push({
|
|
28
|
-
path: k.split('.').join('_'),
|
|
29
|
-
ref: where
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const buildSQLWhere = (where, alias)=>{
|
|
35
|
-
for(const k in where){
|
|
36
|
-
if ([
|
|
37
|
-
'AND',
|
|
38
|
-
'OR'
|
|
39
|
-
].includes(k.toUpperCase())) {
|
|
40
|
-
if (Array.isArray(where[k])) {
|
|
41
|
-
const op = 'AND' === k.toUpperCase() ? and : or;
|
|
42
|
-
const accumulated = [];
|
|
43
|
-
for (const whereField of where[k]){
|
|
44
|
-
accumulated.push(buildSQLWhere(whereField, alias));
|
|
45
|
-
}
|
|
46
|
-
return op(...accumulated);
|
|
47
|
-
}
|
|
48
|
-
} else {
|
|
49
|
-
let payloadOperator = Object.keys(where[k])[0];
|
|
50
|
-
const value = where[k][payloadOperator];
|
|
51
|
-
if (payloadOperator === '$raw') {
|
|
52
|
-
if (typeof value !== 'string') {
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
return sql.raw(value);
|
|
56
|
-
}
|
|
57
|
-
// Handle exists: false -> use isNull instead of isNotNull
|
|
58
|
-
// This logic is duplicated from sanitizeQueryValue.ts because buildSQLWhere
|
|
59
|
-
// is a simplified WHERE builder for polymorphic joins that doesn't have access
|
|
60
|
-
// to field definitions needed by sanitizeQueryValue
|
|
61
|
-
if (payloadOperator === 'exists' && value === false) {
|
|
62
|
-
payloadOperator = 'isNull';
|
|
63
|
-
}
|
|
64
|
-
if (!(payloadOperator in operatorMap)) {
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
const sanitizedColumnName = k.split('.').map((s)=>sanitizePathSegment(s)).join('_');
|
|
68
|
-
return operatorMap[payloadOperator](sql.raw(`"${alias}"."${sanitizedColumnName}"`), value);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, draftsEnabled, fields, forceWithFields, joinQuery = {}, joins, locale, parentIsLocalized = false, path, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields })=>{
|
|
13
|
+
import { buildPolymorphicJoinQuery } from './buildPolymorphicJoinQuery.js';
|
|
14
|
+
export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, draftsEnabled, fields, forceWithFields, joinQuery = {}, joins, locale, parentIsLocalized = false, path, req, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields })=>{
|
|
73
15
|
fields.forEach((field)=>{
|
|
74
16
|
if (fieldIsVirtual(field)) {
|
|
75
17
|
return;
|
|
@@ -147,6 +89,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
147
89
|
locale,
|
|
148
90
|
parentIsLocalized: parentIsLocalized || field.localized,
|
|
149
91
|
path: '',
|
|
92
|
+
req,
|
|
150
93
|
select: typeof arraySelect === 'object' ? arraySelect : undefined,
|
|
151
94
|
selectMode,
|
|
152
95
|
tablePath: '',
|
|
@@ -243,6 +186,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
243
186
|
locale,
|
|
244
187
|
parentIsLocalized: parentIsLocalized || field.localized,
|
|
245
188
|
path: '',
|
|
189
|
+
req,
|
|
246
190
|
select: typeof blockSelect === 'object' ? blockSelect : undefined,
|
|
247
191
|
selectMode: blockSelectMode,
|
|
248
192
|
tablePath: '',
|
|
@@ -279,6 +223,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
279
223
|
locale,
|
|
280
224
|
parentIsLocalized: parentIsLocalized || field.localized,
|
|
281
225
|
path: `${path}${field.name}_`,
|
|
226
|
+
req,
|
|
282
227
|
select: typeof fieldSelect === 'object' ? fieldSelect : undefined,
|
|
283
228
|
selectAllOnCurrentLevel: selectAllOnCurrentLevel || fieldSelect === true || selectMode === 'exclude' && typeof fieldSelect === 'undefined',
|
|
284
229
|
selectMode,
|
|
@@ -309,138 +254,26 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
309
254
|
// get an additional document and slice it later to determine if there is a next page
|
|
310
255
|
limit += 1;
|
|
311
256
|
}
|
|
312
|
-
const columnName = `${path.replaceAll('.', '_')}${field.name}`;
|
|
313
|
-
const db = adapter.drizzle;
|
|
314
257
|
if (Array.isArray(field.collection)) {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
const wherePaths = [];
|
|
332
|
-
if (where) {
|
|
333
|
-
flattenAllWherePaths(where, wherePaths);
|
|
334
|
-
}
|
|
335
|
-
for (const collection of field.collection){
|
|
336
|
-
const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection));
|
|
337
|
-
const table = adapter.tables[joinCollectionTableName];
|
|
338
|
-
const sortColumn = table[sortPath];
|
|
339
|
-
const selectFields = {
|
|
340
|
-
id: adapter.tables[joinCollectionTableName].id,
|
|
341
|
-
parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),
|
|
342
|
-
relationTo: sql`${collection}`.as('relationTo'),
|
|
343
|
-
sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath')
|
|
344
|
-
};
|
|
345
|
-
const collectionQueryWhere = [];
|
|
346
|
-
// Select for WHERE and Fallback NULL
|
|
347
|
-
for (const { path, ref } of wherePaths){
|
|
348
|
-
const collectioConfig = adapter.payload.collections[collection].config;
|
|
349
|
-
const field = getFieldByPath({
|
|
350
|
-
fields: collectioConfig.flattenedFields,
|
|
351
|
-
path
|
|
352
|
-
});
|
|
353
|
-
if (field && field.field.type === 'select' && field.field.hasMany) {
|
|
354
|
-
let tableName = adapter.tableNameMap.get(`${toSnakeCase(collection)}_${toSnakeCase(path)}`);
|
|
355
|
-
let parentTable = getTableName(table);
|
|
356
|
-
if (adapter.schemaName) {
|
|
357
|
-
tableName = `"${adapter.schemaName}"."${tableName}"`;
|
|
358
|
-
parentTable = `"${adapter.schemaName}"."${parentTable}"`;
|
|
359
|
-
}
|
|
360
|
-
if (adapter.name === 'postgres') {
|
|
361
|
-
selectFields[path] = sql.raw(`(select jsonb_agg(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`).as(path);
|
|
362
|
-
} else {
|
|
363
|
-
selectFields[path] = sql.raw(`(select json_group_array(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`).as(path);
|
|
364
|
-
}
|
|
365
|
-
const constraint = ref[path];
|
|
366
|
-
const operator = Object.keys(constraint)[0];
|
|
367
|
-
const value = Object.values(constraint)[0];
|
|
368
|
-
const query = adapter.createJSONQuery({
|
|
369
|
-
column: `"${path}"`,
|
|
370
|
-
operator,
|
|
371
|
-
pathSegments: [
|
|
372
|
-
field.field.name
|
|
373
|
-
],
|
|
374
|
-
table: parentTable,
|
|
375
|
-
value
|
|
376
|
-
});
|
|
377
|
-
ref[path] = {
|
|
378
|
-
$raw: query
|
|
379
|
-
};
|
|
380
|
-
} else if (adapter.tables[joinCollectionTableName][path]) {
|
|
381
|
-
selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path);
|
|
382
|
-
// Allow to filter by collectionSlug
|
|
383
|
-
} else if (path !== 'relationTo') {
|
|
384
|
-
// For timestamp fields like deletedAt, we need to cast to timestamp in Postgres
|
|
385
|
-
// SQLite doesn't require explicit type casting for UNION queries
|
|
386
|
-
if (path === 'deletedAt' && adapter.name === 'postgres') {
|
|
387
|
-
selectFields[path] = sql`null::timestamp with time zone`.as(path);
|
|
388
|
-
} else {
|
|
389
|
-
selectFields[path] = sql`null`.as(path);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
let query = db.select(selectFields).from(adapter.tables[joinCollectionTableName]);
|
|
394
|
-
if (collectionQueryWhere.length) {
|
|
395
|
-
query = query.where(and(...collectionQueryWhere));
|
|
396
|
-
}
|
|
397
|
-
if (currentQuery === null) {
|
|
398
|
-
currentQuery = query;
|
|
399
|
-
} else {
|
|
400
|
-
currentQuery = currentQuery.unionAll(query);
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
const subQueryAlias = `${columnName}_subquery`;
|
|
404
|
-
let sqlWhere = eq(sql.raw(`"${currentTableName}"."id"`), sql.raw(`"${subQueryAlias}"."${onPath}"`));
|
|
405
|
-
if (where && Object.keys(where).length > 0) {
|
|
406
|
-
sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias));
|
|
407
|
-
}
|
|
408
|
-
if (shouldCount) {
|
|
409
|
-
currentArgs.extras[`${columnName}_count`] = sql`${db.select({
|
|
410
|
-
count: count()
|
|
411
|
-
}).from(sql`${currentQuery.as(subQueryAlias)}`).where(sqlWhere)}`.as(`${columnName}_count`);
|
|
412
|
-
}
|
|
413
|
-
currentQuery = currentQuery.orderBy(sortOrder(sql`"sortPath"`));
|
|
414
|
-
const sortedUnionAlias = `${columnName}_sorted`;
|
|
415
|
-
let limitOffsetSQL = sql.empty();
|
|
416
|
-
if (limit) {
|
|
417
|
-
limitOffsetSQL = sql` LIMIT ${limit}`;
|
|
418
|
-
}
|
|
419
|
-
if (page && limit !== 0) {
|
|
420
|
-
const offset = (page - 1) * limit;
|
|
421
|
-
if (offset > 0) {
|
|
422
|
-
limitOffsetSQL = sql`${limitOffsetSQL} OFFSET ${offset}`;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
// Correlate to parent row + apply any join where filters
|
|
426
|
-
let innerWhere = sql.raw(`"${sortedUnionAlias}"."${onPath}" = "${currentTableName}"."id"`);
|
|
427
|
-
if (where && Object.keys(where).length > 0) {
|
|
428
|
-
const additionalWhere = buildSQLWhere(where, sortedUnionAlias);
|
|
429
|
-
innerWhere = sql`${innerWhere} AND ${additionalWhere}`;
|
|
258
|
+
const polymorphicJoinQuery = buildPolymorphicJoinQuery({
|
|
259
|
+
adapter,
|
|
260
|
+
currentTableName,
|
|
261
|
+
field,
|
|
262
|
+
limit,
|
|
263
|
+
locale,
|
|
264
|
+
page,
|
|
265
|
+
path,
|
|
266
|
+
req,
|
|
267
|
+
shouldCount,
|
|
268
|
+
sort,
|
|
269
|
+
where
|
|
270
|
+
});
|
|
271
|
+
currentArgs.extras[polymorphicJoinQuery.columnName] = polymorphicJoinQuery.documents;
|
|
272
|
+
if (polymorphicJoinQuery.count) {
|
|
273
|
+
currentArgs.extras[`${polymorphicJoinQuery.columnName}_count`] = polymorphicJoinQuery.count;
|
|
430
274
|
}
|
|
431
|
-
// IMPORTANT: For polymorphic joins, LIMIT must be applied AFTER correlating to the parent row.
|
|
432
|
-
// Otherwise, the limit applies globally across ALL parents, not per-parent.
|
|
433
|
-
currentArgs.extras[columnName] = sql`(
|
|
434
|
-
SELECT ${jsonAggBuildObject(adapter, {
|
|
435
|
-
id: sql.raw(`"${subQueryAlias}"."id"`),
|
|
436
|
-
relationTo: sql.raw(`"${subQueryAlias}"."relationTo"`)
|
|
437
|
-
})}
|
|
438
|
-
FROM (
|
|
439
|
-
SELECT * FROM ${sql`${currentQuery.as(sortedUnionAlias)}`}
|
|
440
|
-
WHERE ${innerWhere}${limitOffsetSQL}
|
|
441
|
-
) AS ${sql.raw(`"${subQueryAlias}"`)}
|
|
442
|
-
)`.as(columnName);
|
|
443
275
|
} else {
|
|
276
|
+
const db = adapter.drizzle;
|
|
444
277
|
const useDrafts = (versions || draftsEnabled) && hasDraftsEnabled(adapter.payload.collections[field.collection].config);
|
|
445
278
|
const fields = useDrafts ? buildVersionCollectionFields(adapter.payload.config, adapter.payload.collections[field.collection].config, true) : adapter.payload.collections[field.collection].config.flattenedFields;
|
|
446
279
|
const joinCollectionTableName = adapter.tableNameMap.get(useDrafts ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}` : toSnakeCase(field.collection));
|
|
@@ -472,12 +305,35 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
472
305
|
]
|
|
473
306
|
};
|
|
474
307
|
}
|
|
308
|
+
// A join subquery must carry the same branch predicate as the
|
|
309
|
+
// top-level read, or a branch would see main's related documents.
|
|
310
|
+
const branchReadState = resolveBranchReadState({
|
|
311
|
+
collectionSlug: field.collection,
|
|
312
|
+
req
|
|
313
|
+
});
|
|
314
|
+
const joinBranchPredicate = branchReadState.useBranching ? null : getBranchPredicateSync({
|
|
315
|
+
collectionSlug: field.collection,
|
|
316
|
+
req
|
|
317
|
+
});
|
|
475
318
|
if (useDrafts) {
|
|
476
|
-
|
|
319
|
+
const versionWhere = appendVersionToQueryKey(joinQueryWhere);
|
|
320
|
+
const branchVersionWhere = branchReadState.useBranching ? rewriteBranchVersionParents(versionWhere) : resolveBranchVersionQuerySync({
|
|
321
|
+
collectionSlug: field.collection,
|
|
322
|
+
req,
|
|
323
|
+
where: versionWhere
|
|
324
|
+
});
|
|
325
|
+
joinQueryWhere = combineQueries(branchVersionWhere ?? {}, {
|
|
477
326
|
latest: {
|
|
478
327
|
equals: true
|
|
479
328
|
}
|
|
480
329
|
});
|
|
330
|
+
} else if (!branchReadState.useBranching && joinBranchPredicate) {
|
|
331
|
+
joinQueryWhere = {
|
|
332
|
+
and: [
|
|
333
|
+
joinQueryWhere,
|
|
334
|
+
joinBranchPredicate
|
|
335
|
+
]
|
|
336
|
+
};
|
|
481
337
|
}
|
|
482
338
|
const columnName = `${path.replaceAll('.', '_')}${field.name}`;
|
|
483
339
|
const subQueryAlias = `${columnName}_alias`;
|
|
@@ -492,6 +348,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
492
348
|
joins,
|
|
493
349
|
locale,
|
|
494
350
|
parentIsLocalized,
|
|
351
|
+
req,
|
|
495
352
|
selectLocale: true,
|
|
496
353
|
sort: useDrafts ? getQueryDraftsSort({
|
|
497
354
|
collectionConfig: adapter.payload.collections[field.collection].config,
|
|
@@ -500,6 +357,14 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
500
357
|
tableName: joinCollectionTableName,
|
|
501
358
|
where: joinQueryWhere
|
|
502
359
|
});
|
|
360
|
+
const nativeBranchVisibility = branchReadState.useBranching ? buildBranchVisibility({
|
|
361
|
+
adapter,
|
|
362
|
+
branch: branchReadState.branch,
|
|
363
|
+
canonicalIDExpression: useDrafts ? sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})` : undefined,
|
|
364
|
+
collectionSlug: field.collection,
|
|
365
|
+
table: newAliasTable
|
|
366
|
+
}) : undefined;
|
|
367
|
+
const visibleSubQueryWhere = nativeBranchVisibility ? and(subQueryWhere, nativeBranchVisibility) : subQueryWhere;
|
|
503
368
|
for(let key in selectFields){
|
|
504
369
|
const val = selectFields[key];
|
|
505
370
|
if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {
|
|
@@ -509,9 +374,19 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
509
374
|
}
|
|
510
375
|
}
|
|
511
376
|
if (useDrafts) {
|
|
512
|
-
selectFields.parent
|
|
513
|
-
|
|
514
|
-
|
|
377
|
+
delete selectFields[`${joinCollectionTableName}.parent`];
|
|
378
|
+
selectFields.parent = newAliasTable._branchParent ? sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`.as(newAliasTable.parent.name) : newAliasTable.parent;
|
|
379
|
+
}
|
|
380
|
+
// Surface the canonical document ID rather than the shadow row's own
|
|
381
|
+
// primary key, so join results address documents the same way every
|
|
382
|
+
// other read does.
|
|
383
|
+
if ((branchReadState.useBranching || joinBranchPredicate) && newAliasTable._branchDocID) {
|
|
384
|
+
// `selectFields` is typed as a column map, but Drizzle accepts an
|
|
385
|
+
// aliased expression in the same position — as the sibling
|
|
386
|
+
// `sql\`...\`.as()` assignments above already rely on.
|
|
387
|
+
selectFields.id = sql`COALESCE(${newAliasTable._branchDocID}, ${newAliasTable.id})`.as('id');
|
|
388
|
+
}
|
|
389
|
+
let query = db.select(selectFields).from(newAliasTable).where(visibleSubQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column))).$dynamic();
|
|
515
390
|
joins.forEach(({ type, condition, table })=>{
|
|
516
391
|
query = query[type ?? 'leftJoin'](table, condition);
|
|
517
392
|
});
|
|
@@ -526,7 +401,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
526
401
|
}
|
|
527
402
|
const subQuery = query.as(subQueryAlias);
|
|
528
403
|
if (shouldCount) {
|
|
529
|
-
let countSubquery = db.select(selectFields).from(newAliasTable).where(
|
|
404
|
+
let countSubquery = db.select(selectFields).from(newAliasTable).where(visibleSubQueryWhere).$dynamic();
|
|
530
405
|
joins.forEach(({ type, condition, table })=>{
|
|
531
406
|
countSubquery = countSubquery[type ?? 'leftJoin'](table, condition);
|
|
532
407
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect, SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\n\nimport { and, asc, count, desc, eq, getTableName, or, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n type FlattenedField,\n getFieldByPath,\n getQueryDraftsSort,\n type JoinQuery,\n type SelectMode,\n type SelectType,\n type Where,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { sanitizePathSegment } from '../utilities/sanitizePathSegment.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\n\nconst flattenAllWherePaths = (where: Where, paths: { path: string; ref: any }[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push({ path: k.split('.').join('_'), ref: where })\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n let payloadOperator = Object.keys(where[k])[0]\n\n const value = where[k][payloadOperator]\n if (payloadOperator === '$raw') {\n if (typeof value !== 'string') {\n return undefined\n }\n return sql.raw(value)\n }\n\n // Handle exists: false -> use isNull instead of isNotNull\n\n // This logic is duplicated from sanitizeQueryValue.ts because buildSQLWhere\n // is a simplified WHERE builder for polymorphic joins that doesn't have access\n // to field definitions needed by sanitizeQueryValue\n if (payloadOperator === 'exists' && value === false) {\n payloadOperator = 'isNull'\n }\n\n if (!(payloadOperator in operatorMap)) {\n return undefined\n }\n\n const sanitizedColumnName = k\n .split('.')\n .map((s) => sanitizePathSegment(s))\n .join('_')\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${sanitizedColumnName}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n field.blocks.forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\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' && Boolean(blocksSelect[block.slug])) {\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 = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${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 draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: { path: string; ref: any }[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n const collectionQueryWhere: any[] = []\n // Select for WHERE and Fallback NULL\n for (const { path, ref } of wherePaths) {\n const collectioConfig = adapter.payload.collections[collection].config\n const field = getFieldByPath({ fields: collectioConfig.flattenedFields, path })\n\n if (field && field.field.type === 'select' && field.field.hasMany) {\n let tableName = adapter.tableNameMap.get(\n `${toSnakeCase(collection)}_${toSnakeCase(path)}`,\n )\n let parentTable = getTableName(table)\n\n if (adapter.schemaName) {\n tableName = `\"${adapter.schemaName}\".\"${tableName}\"`\n parentTable = `\"${adapter.schemaName}\".\"${parentTable}\"`\n }\n\n if (adapter.name === 'postgres') {\n selectFields[path] = sql\n .raw(\n `(select jsonb_agg(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n } else {\n selectFields[path] = sql\n .raw(\n `(select json_group_array(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n }\n\n const constraint = ref[path]\n const operator = Object.keys(constraint)[0]\n const value: any = Object.values(constraint)[0]\n\n const query = adapter.createJSONQuery({\n column: `\"${path}\"`,\n operator,\n pathSegments: [field.field.name],\n table: parentTable,\n value,\n })\n ref[path] = { $raw: query }\n } else if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n // For timestamp fields like deletedAt, we need to cast to timestamp in Postgres\n // SQLite doesn't require explicit type casting for UNION queries\n if (path === 'deletedAt' && adapter.name === 'postgres') {\n selectFields[path] = sql`null::timestamp with time zone`.as(path)\n } else {\n selectFields[path] = sql`null`.as(path)\n }\n }\n }\n\n let query: any = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (collectionQueryWhere.length) {\n query = query.where(and(...collectionQueryWhere))\n }\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n sql.raw(`\"${currentTableName}\".\"id\"`),\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({ count: count() })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(`${columnName}_count`)\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n const sortedUnionAlias = `${columnName}_sorted`\n\n let limitOffsetSQL = sql.empty()\n if (limit) {\n limitOffsetSQL = sql` LIMIT ${limit}`\n }\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n limitOffsetSQL = sql`${limitOffsetSQL} OFFSET ${offset}`\n }\n }\n\n // Correlate to parent row + apply any join where filters\n let innerWhere = sql.raw(`\"${sortedUnionAlias}\".\"${onPath}\" = \"${currentTableName}\".\"id\"`)\n if (where && Object.keys(where).length > 0) {\n const additionalWhere = buildSQLWhere(where, sortedUnionAlias)\n innerWhere = sql`${innerWhere} AND ${additionalWhere}`\n }\n\n // IMPORTANT: For polymorphic joins, LIMIT must be applied AFTER correlating to the parent row.\n // Otherwise, the limit applies globally across ALL parents, not per-parent.\n currentArgs.extras[columnName] = sql`(\n SELECT ${jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n })}\n FROM (\n SELECT * FROM ${sql`${currentQuery.as(sortedUnionAlias)}`}\n WHERE ${innerWhere}${limitOffsetSQL}\n ) AS ${sql.raw(`\"${subQueryAlias}\"`)}\n )`.as(columnName)\n } else {\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\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 const currentIDRaw = sql.raw(\n `\"${getNameFromDrizzleTable(currentIDColumn.table)}\".\"${currentIDColumn.name}\"`,\n )\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n if (useDrafts) {\n joinQueryWhere = combineQueries(appendVersionToQueryKey(joinQueryWhere), {\n latest: { equals: true },\n })\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\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 if (useDrafts) {\n selectFields.parent = newAliasTable.parent\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(subQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","count","desc","eq","getTableName","or","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getFieldByPath","getQueryDraftsSort","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildQuery","getTableAlias","operatorMap","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","sanitizePathSegment","InternalBlockTableNameIndex","resolveBlockTableName","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","path","split","join","ref","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","undefined","raw","sanitizedColumnName","map","s","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","length","blocksSelect","blocksAsJSON","fieldPath","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","collectionQueryWhere","collectioConfig","parentTable","schemaName","constraint","operator","values","query","createJSONQuery","column","pathSegments","$raw","from","unionAll","subQueryAlias","sqlWhere","extras","sortedUnionAlias","limitOffsetSQL","empty","offset","innerWhere","additionalWhere","useDrafts","versionsSuffix","currentIDColumn","joinQueryWhere","currentIDRaw","targetField","equals","latest","newAliasTable","subQueryWhere","aliasTable","selectLocale","collectionConfig","key","val","pop","order","$dynamic","condition","subQuery","countSubquery","result","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"AAGA,SAASA,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEC,EAAE,EAAEC,YAAY,EAAEC,EAAE,EAAEC,GAAG,QAAQ,cAAa;AAC9E,SACEC,uBAAuB,EACvBC,4BAA4B,EAC5BC,cAAc,EAEdC,cAAc,EACdC,kBAAkB,QAKb,UAAS;AAChB,SAASC,cAAc,EAAEC,sBAAsB,EAAEC,gBAAgB,QAAQ,iBAAgB;AACzF,OAAOC,iBAAiB,gBAAe;AAKvC,SAASC,UAAU,QAAQ,2BAA0B;AACrD,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,WAAW,QAAQ,4BAA2B;AACvD,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,kBAAkB,QAAQ,uBAAsB;AACzD,SAASC,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,mBAAmB,QAAQ,sCAAqC;AACzE,SACEC,2BAA2B,EAC3BC,qBAAqB,QAChB,mDAAkD;AAEzD,MAAMC,uBAAuB,CAACC,OAAcC;IAC1C,IAAK,MAAMC,KAAKF,MAAO;QACrB,IAAI;YAAC;YAAO;SAAK,CAACG,QAAQ,CAACD,EAAEE,WAAW,KAAK;YAC3C,IAAIC,MAAMC,OAAO,CAACN,KAAK,CAACE,EAAE,GAAG;gBAC3B,KAAK,MAAMK,cAAcP,KAAK,CAACE,EAAE,CAAE;oBACjCH,qBAAqBQ,YAAYN;gBACnC;YACF;QACF,OAAO;YACL,6DAA6D;YAC7DA,MAAMO,IAAI,CAAC;gBAAEC,MAAMP,EAAEQ,KAAK,CAAC,KAAKC,IAAI,CAAC;gBAAMC,KAAKZ;YAAM;QACxD;IACF;AACF;AAEA,MAAMa,gBAAgB,CAACb,OAAcc;IACnC,IAAK,MAAMZ,KAAKF,MAAO;QACrB,IAAI;YAAC;YAAO;SAAK,CAACG,QAAQ,CAACD,EAAEE,WAAW,KAAK;YAC3C,IAAIC,MAAMC,OAAO,CAACN,KAAK,CAACE,EAAE,GAAG;gBAC3B,MAAMa,KAAK,UAAUb,EAAEE,WAAW,KAAKhC,MAAMM;gBAC7C,MAAMsC,cAAc,EAAE;gBACtB,KAAK,MAAMT,cAAcP,KAAK,CAACE,EAAE,CAAE;oBACjCc,YAAYR,IAAI,CAACK,cAAcN,YAAYO;gBAC7C;gBACA,OAAOC,MAAMC;YACf;QACF,OAAO;YACL,IAAIC,kBAAkBC,OAAOC,IAAI,CAACnB,KAAK,CAACE,EAAE,CAAC,CAAC,EAAE;YAE9C,MAAMkB,QAAQpB,KAAK,CAACE,EAAE,CAACe,gBAAgB;YACvC,IAAIA,oBAAoB,QAAQ;gBAC9B,IAAI,OAAOG,UAAU,UAAU;oBAC7B,OAAOC;gBACT;gBACA,OAAO1C,IAAI2C,GAAG,CAACF;YACjB;YAEA,0DAA0D;YAE1D,4EAA4E;YAC5E,+EAA+E;YAC/E,oDAAoD;YACpD,IAAIH,oBAAoB,YAAYG,UAAU,OAAO;gBACnDH,kBAAkB;YACpB;YAEA,IAAI,CAAEA,CAAAA,mBAAmB1B,WAAU,GAAI;gBACrC,OAAO8B;YACT;YAEA,MAAME,sBAAsBrB,EACzBQ,KAAK,CAAC,KACNc,GAAG,CAAC,CAACC,IAAM7B,oBAAoB6B,IAC/Bd,IAAI,CAAC;YAER,OAAOpB,WAAW,CAAC0B,gBAAgB,CAACtC,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAER,MAAM,GAAG,EAAES,oBAAoB,CAAC,CAAC,GAAGH;QACtF;IACF;AACF;AAiCA,OAAO,MAAMM,iBAAiB,CAAC,EAC7BC,QAAQ,EACRC,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,gBAAgB,EAChBC,KAAK,EACLC,aAAa,EACbC,MAAM,EACNC,eAAe,EACfC,YAAY,CAAC,CAAC,EACdC,KAAK,EACLC,MAAM,EACNC,oBAAoB,KAAK,EACzB9B,IAAI,EACJ+B,MAAM,EACNC,0BAA0B,KAAK,EAC/BC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,iBAAiB,EACjBC,QAAQ,EACRC,gBAAgB,EACE;IAClBb,OAAOc,OAAO,CAAC,CAACC;QACd,IAAIhE,eAAegE,QAAQ;YACzB;QACF;QAEA,MAAMC,mBAAmBhE,uBAAuB;YAC9C+D;YACAV;QACF;QAEA,6BAA6B;QAC7B,IACEP,QAAQ,KACPiB,CAAAA,MAAME,IAAI,KAAK,YAAYF,MAAME,IAAI,KAAK,cAAa,KACxD,CAACF,MAAMG,OAAO,IACd,OAAOH,MAAMI,UAAU,KAAK,UAC5B;YACA,IAAIH,kBAAkB;gBACpBvB,SAAS2B,IAAI,CAAC,GAAG7C,OAAOwC,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC1C,OAAO;gBACLzB,YAAYwB,IAAI,CAAC,GAAG7C,OAAOwC,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC7C;QACF;QAEA,OAAQN,MAAME,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMK,cAAcf,0BAA0B,OAAOD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAEzE,IAAIf,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,OAAOc,gBAAgB,eACnDd,eAAe,aAAac,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,EAAEvF,GAAG,EAAE,GAAK;gCAACA,IAAIuF;6BAAQ;wBAC/CN,MAAM,CAAC;oBACT;oBAEA,MAAMS,iBAAiBnC,QAAQoC,YAAY,CAACC,GAAG,CAC7C,GAAGlC,iBAAiB,CAAC,EAAEY,YAAYvD,YAAY6D,MAAMM,IAAI,GAAG;oBAG9D,IAAI,OAAOC,gBAAgB,UAAU;wBACnC,IAAI5B,QAAQsC,MAAM,CAACH,eAAe,CAACI,OAAO,EAAE;4BAC1CV,UAAUC,OAAO,CAACS,OAAO,GAAG;wBAC9B;wBAEA,IAAIvC,QAAQsC,MAAM,CAACH,eAAe,CAACK,KAAK,EAAE;4BACxCX,UAAUC,OAAO,CAACU,KAAK,GAAG;wBAC5B;oBACF;oBAEA,MAAMC,4BAA4B,GAAGN,iBAAiBnC,QAAQ0C,aAAa,EAAE;oBAE7E,IAAI1C,QAAQsC,MAAM,CAACG,0BAA0B,EAAE;wBAC7CZ,UAAUH,IAAI,CAAC3B,QAAQ,GAAG;4BACxB+B,SACE,OAAOF,gBAAgB,WACnB;gCACEW,SAAS;4BACX,IACA;gCACER,IAAI;gCACJE,WAAW;4BACb;4BACNP,MAAM,CAAC;wBACT;oBACF;oBAEA,MAAMiB,eAAe/E,qBAAqB;wBACxCyD;wBACAxC,MAAM,GAAGA,OAAOwC,MAAMM,IAAI,EAAE;wBAC5BiB,WAAWT;oBACb;oBAEAjC,YAAYwB,IAAI,CAACiB,aAAa,GAAGd;oBAEjC/B,eAAe;wBACbC,UAAU8B,UAAUH,IAAI,CAAC3B,QAAQ;wBACjCC;wBACAE,aAAa2B;wBACb1B,kBAAkBgC;wBAClB/B;wBACAC;wBACAC,QAAQe,MAAMwB,eAAe;wBAC7BtC;wBACAC;wBACAE;wBACAC,mBAAmBA,qBAAqBU,MAAMyB,SAAS;wBACvDjE,MAAM;wBACN+B,QAAQ,OAAOgB,gBAAgB,WAAWA,cAAcnC;wBACxDqB;wBACAC,WAAW;wBACXC;wBACAC;wBACAE;oBACF;oBAEA,IACE,OAAOS,gBAAgB,YACvBC,UAAUH,IAAI,CAAC3B,QAAQ,IACvBT,OAAOC,IAAI,CAACsC,UAAUH,IAAI,CAAC3B,QAAQ,EAAEgD,MAAM,KAAK,GAChD;wBACA,OAAOlB,UAAUH,IAAI,CAAC3B,QAAQ;oBAChC;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,MAAMiD,eAAenC,0BAA0B,OAAOD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAE1E,IAAIf,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,CAACkC,gBAC7BlC,eAAe,aAAakC,iBAAiB,OAC9C;4BACA;wBACF;oBACF;oBAEA,IAAIhD,QAAQiD,YAAY,EAAE;wBACxB,IAAIrC,UAAUC,yBAAyB;4BACrC,MAAMqC,YAAY,GAAGrE,OAAOwC,MAAMM,IAAI,EAAE;4BAExC,IAAI,AAACL,CAAAA,oBAAoBX,iBAAgB,KAAMZ,UAAU;gCACvDA,SAAS+B,OAAO,CAACoB,UAAU,GAAG;4BAChC,OAAO,IAAIlD,QAAQsC,MAAM,CAACnC,iBAAiB,EAAE,CAAC+C,UAAU,EAAE;gCACxDhD,YAAY4B,OAAO,CAACoB,UAAU,GAAG;4BACnC;wBACF;wBAEA;oBACF;oBAEA7B,MAAM8B,MAAM,CAAC/B,OAAO,CAAC,CAACgC;wBACpB,MAAMC,QAAQ,OAAOD,WAAW,WAAWpD,QAAQsD,OAAO,CAACH,MAAM,CAACC,OAAO,GAAGA;wBAC5E,MAAMG,WAAW,CAAC,QAAQ,EAAEF,MAAMG,IAAI,GAAG,CAACH,KAAK,CAACpF,4BAA4B,GAAG,KAAK,CAAC,CAAC,EAAEoF,KAAK,CAACpF,4BAA4B,EAAE,EAAE;wBAE9H,IAAIwF;wBAEJ,IAAIC,kBAAkB5C;wBAEtB,IAAIA,eAAe,aAAakC,iBAAiB,MAAM;4BACrDS,cAAc;wBAChB;wBAEA,IAAI,OAAOT,iBAAiB,UAAU;4BACpC,IAAI,OAAOA,YAAY,CAACK,MAAMG,IAAI,CAAC,KAAK,UAAU;gCAChDC,cAAcT,YAAY,CAACK,MAAMG,IAAI,CAAC;4BACxC,OAAO,IACL,AAAC1C,eAAe,aAAa,OAAOkC,YAAY,CAACK,MAAMG,IAAI,CAAC,KAAK,eAChE1C,eAAe,aAAakC,YAAY,CAACK,MAAMG,IAAI,CAAC,KAAK,OAC1D;gCACAC,cAAc,CAAC;gCACfC,kBAAkB;4BACpB,OAAO,IAAI5C,eAAe,aAAa6C,QAAQX,YAAY,CAACK,MAAMG,IAAI,CAAC,GAAG;gCACxEC,cAAc;4BAChB;wBACF;wBAEA,IAAI,CAACzC,YAAY,CAACuC,SAAS,EAAE;4BAC3B,MAAMK,YAAoB;gCACxB9B,SACE,OAAO2B,gBAAgB,WACnB;oCACE1B,IAAI;oCACJC,QAAQ;oCACR6B,OAAO;gCACT,IACA;oCACE5B,WAAW;gCACb;gCACNC,SAAS,CAAC,EAAEF,MAAM,EAAE,EAAE,EAAEvF,GAAG,EAAE,GAAK;wCAACA,IAAIuF;qCAAQ;gCAC/CN,MAAM,CAAC;4BACT;4BAEA,MAAMkB,YAAY1E,sBAChBmF,OACArD,QAAQoC,YAAY,CAACC,GAAG,CAAC,GAAGpB,kBAAkB,QAAQ,EAAEzD,YAAY6F,MAAMG,IAAI,GAAG;4BAGnF,IAAI,OAAOC,gBAAgB,UAAU;gCACnC,IAAIzD,QAAQsC,MAAM,CAACM,UAAU,CAACL,OAAO,EAAE;oCACrCqB,UAAU9B,OAAO,CAACS,OAAO,GAAG;gCAC9B;gCAEA,IAAIvC,QAAQsC,MAAM,CAACM,UAAU,CAACJ,KAAK,EAAE;oCACnCoB,UAAU9B,OAAO,CAACU,KAAK,GAAG;gCAC5B;4BACF;4BAEA,IAAIxC,QAAQsC,MAAM,CAAC,GAAGM,YAAY5C,QAAQ0C,aAAa,EAAE,CAAC,EAAE;gCAC1DkB,UAAUlC,IAAI,CAAC3B,QAAQ,GAAG;oCACxB2B,MAAM,CAAC;gCACT;gCAEA,IAAI,OAAO+B,gBAAgB,UAAU;oCACnCG,UAAUlC,IAAI,CAAC3B,QAAQ,CAAC+B,OAAO,GAAG;wCAChCS,SAAS;oCACX;gCACF;4BACF;4BACAvB,aAAaU,IAAI,CAAC6B,SAAS,GAAGK;4BAE9B9D,eAAe;gCACbC,UAAU6D,UAAUlC,IAAI,CAAC3B,QAAQ;gCACjCC;gCACAE,aAAa0D;gCACbzD,kBAAkByC;gCAClBxC;gCACAC;gCACAC,QAAQ+C,MAAMR,eAAe;gCAC7BtC,iBAAiBkD,gBAAgB;gCACjCjD;gCACAE;gCACAC,mBAAmBA,qBAAqBU,MAAMyB,SAAS;gCACvDjE,MAAM;gCACN+B,QAAQ,OAAO6C,gBAAgB,WAAWA,cAAchE;gCACxDqB,YAAY4C;gCACZ3C,WAAW;gCACXC;gCACAC;gCACAE;4BACF;4BAEA,IACE,OAAOsC,gBAAgB,YACvBG,UAAUlC,IAAI,CAAC3B,QAAQ,IACvBT,OAAOC,IAAI,CAACqE,UAAUlC,IAAI,CAAC3B,QAAQ,CAAC+B,OAAO,EAAEiB,MAAM,KAAK,GACxD;gCACA,OAAOa,UAAUlC,IAAI,CAAC3B,QAAQ;4BAChC;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;YACL,KAAK;gBAAO;oBACV,MAAM+D,cAAclD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAExC,IAAImC,gBAAgB,OAAO;wBACzB;oBACF;oBAEAhE,eAAe;wBACbC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,QAAQe,MAAMwB,eAAe;wBAC7BtC;wBACAC;wBACAC;wBACAC;wBACAC,mBAAmBA,qBAAqBU,MAAMyB,SAAS;wBACvDjE,MAAM,GAAGA,OAAOwC,MAAMM,IAAI,CAAC,CAAC,CAAC;wBAC7Bf,QAAQ,OAAOkD,gBAAgB,WAAWA,cAAcrE;wBACxDoB,yBACEA,2BACAiD,gBAAgB,QACfhD,eAAe,aAAa,OAAOgD,gBAAgB;wBACtDhD;wBACAC,WAAW,GAAGA,YAAYvD,YAAY6D,MAAMM,IAAI,EAAE,CAAC,CAAC;wBACpDX;wBACAC;wBACAC;wBACAC;oBACF;oBAEA;gBACF;YACA,KAAK;gBAAQ;oBACX,0CAA0C;oBAC1C,IAAIX,cAAc,OAAO;wBACvB;oBACF;oBAEA,IACE,AAACI,UAAUE,eAAe,aAAa,CAACF,MAAM,CAACS,MAAMM,IAAI,CAAC,IACzDb,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,OACpD;wBACA;oBACF;oBAEA,MAAMoC,iBAAiB,GAAGlF,KAAKmF,UAAU,CAAC,KAAK,OAAO3C,MAAMM,IAAI,EAAE;oBAElE,IAAInB,SAAS,CAACuD,eAAe,KAAK,OAAO;wBACvC;oBACF;oBAEA,MAAM,EACJrH,OAAOuH,cAAc,KAAK,EAC1BC,OAAOC,WAAW9C,MAAM+C,YAAY,IAAI,EAAE,EAC1CC,IAAI,EACJC,OAAOjD,MAAMkD,WAAW,EACxBnG,KAAK,EACN,GAAGoC,SAAS,CAACuD,eAAe,IAAI,CAAC;oBAClC,IAAIG,QAAQC;oBAEZ,IAAID,UAAU,GAAG;wBACf,qFAAqF;wBACrFA,SAAS;oBACX;oBAEA,MAAMM,aAAa,GAAG3F,KAAKmF,UAAU,CAAC,KAAK,OAAO3C,MAAMM,IAAI,EAAE;oBAE9D,MAAM8C,KAAKzE,QAAQ0E,OAAO;oBAE1B,IAAIjG,MAAMC,OAAO,CAAC2C,MAAMsD,UAAU,GAAG;wBACnC,IAAIC,eAAiC;wBACrC,MAAMC,SAASxD,MAAMyD,EAAE,CAAChG,KAAK,CAAC,KAAKC,IAAI,CAAC;wBAExC,IAAIN,MAAMC,OAAO,CAAC4F,OAAO;4BACvB,MAAM,IAAIS,MAAM;wBAClB;wBAEA,IAAIC,gBAAgBV;wBAEpB,IAAI,CAACU,eAAe;4BAClB,IACE3D,MAAMsD,UAAU,CAACM,IAAI,CAAC,CAACN,aACrB3E,QAAQsD,OAAO,CAAC4B,WAAW,CAACP,WAAW,CAACQ,MAAM,CAAC7E,MAAM,CAAC2E,IAAI,CACxD,CAACG,IAAMA,EAAE7D,IAAI,KAAK,UAAU6D,EAAEzD,IAAI,KAAK,eAG3C;gCACAqD,gBAAgB;4BAClB,OAAO;gCACLA,gBAAgB;4BAClB;wBACF;wBAEA,MAAMK,YAAYL,cAAcM,UAAU,CAAC,OAAO3I,OAAOF;wBACzDuI,gBAAgBA,cAAcO,OAAO,CAAC,KAAK;wBAE3C,MAAMC,WAAWR,cAAclG,KAAK,CAAC,KAAKC,IAAI,CAAC;wBAE/C,MAAM0G,aAA2C,EAAE;wBAEnD,IAAIrH,OAAO;4BACTD,qBAAqBC,OAAOqH;wBAC9B;wBAEA,KAAK,MAAMd,cAActD,MAAMsD,UAAU,CAAE;4BACzC,MAAMe,0BAA0B1F,QAAQoC,YAAY,CAACC,GAAG,CAAC7E,YAAYmH;4BAErE,MAAMgB,QAAQ3F,QAAQsC,MAAM,CAACoD,wBAAwB;4BAErD,MAAME,aAAaD,KAAK,CAACH,SAAS;4BAElC,MAAMK,eAAe;gCACnB9D,IAAI/B,QAAQsC,MAAM,CAACoD,wBAAwB,CAAC3D,EAAE;gCAC9C+D,QAAQ/I,GAAG,CAAC,EAAEiD,QAAQsC,MAAM,CAACoD,wBAAwB,CAACb,OAAO,CAAC,CAAC,CAACkB,EAAE,CAAClB;gCACnEpD,YAAY1E,GAAG,CAAC,EAAE4H,WAAW,CAAC,CAACoB,EAAE,CAAC;gCAClCP,UAAUzI,GAAG,CAAC,EAAE6I,aAAaA,aAAa,KAAK,CAAC,CAACG,EAAE,CAAC;4BACtD;4BAEA,MAAMC,uBAA8B,EAAE;4BACtC,qCAAqC;4BACrC,KAAK,MAAM,EAAEnH,IAAI,EAAEG,GAAG,EAAE,IAAIyG,WAAY;gCACtC,MAAMQ,kBAAkBjG,QAAQsD,OAAO,CAAC4B,WAAW,CAACP,WAAW,CAACQ,MAAM;gCACtE,MAAM9D,QAAQlE,eAAe;oCAAEmD,QAAQ2F,gBAAgBpD,eAAe;oCAAEhE;gCAAK;gCAE7E,IAAIwC,SAASA,MAAMA,KAAK,CAACE,IAAI,KAAK,YAAYF,MAAMA,KAAK,CAACG,OAAO,EAAE;oCACjE,IAAIoB,YAAY5C,QAAQoC,YAAY,CAACC,GAAG,CACtC,GAAG7E,YAAYmH,YAAY,CAAC,EAAEnH,YAAYqB,OAAO;oCAEnD,IAAIqH,cAAcrJ,aAAa8I;oCAE/B,IAAI3F,QAAQmG,UAAU,EAAE;wCACtBvD,YAAY,CAAC,CAAC,EAAE5C,QAAQmG,UAAU,CAAC,GAAG,EAAEvD,UAAU,CAAC,CAAC;wCACpDsD,cAAc,CAAC,CAAC,EAAElG,QAAQmG,UAAU,CAAC,GAAG,EAAED,YAAY,CAAC,CAAC;oCAC1D;oCAEA,IAAIlG,QAAQ2B,IAAI,KAAK,YAAY;wCAC/BkE,YAAY,CAAChH,KAAK,GAAG9B,IAClB2C,GAAG,CACF,CAAC,kBAAkB,EAAEkD,UAAU,aAAa,EAAEA,UAAU,OAAO,EAAEA,UAAU,aAAa,EAAEsD,YAAY,IAAI,CAAC,EAE5GH,EAAE,CAAClH;oCACR,OAAO;wCACLgH,YAAY,CAAChH,KAAK,GAAG9B,IAClB2C,GAAG,CACF,CAAC,yBAAyB,EAAEkD,UAAU,aAAa,EAAEA,UAAU,OAAO,EAAEA,UAAU,aAAa,EAAEsD,YAAY,IAAI,CAAC,EAEnHH,EAAE,CAAClH;oCACR;oCAEA,MAAMuH,aAAapH,GAAG,CAACH,KAAK;oCAC5B,MAAMwH,WAAW/G,OAAOC,IAAI,CAAC6G,WAAW,CAAC,EAAE;oCAC3C,MAAM5G,QAAaF,OAAOgH,MAAM,CAACF,WAAW,CAAC,EAAE;oCAE/C,MAAMG,QAAQvG,QAAQwG,eAAe,CAAC;wCACpCC,QAAQ,CAAC,CAAC,EAAE5H,KAAK,CAAC,CAAC;wCACnBwH;wCACAK,cAAc;4CAACrF,MAAMA,KAAK,CAACM,IAAI;yCAAC;wCAChCgE,OAAOO;wCACP1G;oCACF;oCACAR,GAAG,CAACH,KAAK,GAAG;wCAAE8H,MAAMJ;oCAAM;gCAC5B,OAAO,IAAIvG,QAAQsC,MAAM,CAACoD,wBAAwB,CAAC7G,KAAK,EAAE;oCACxDgH,YAAY,CAAChH,KAAK,GAAG9B,GAAG,CAAC,EAAEiD,QAAQsC,MAAM,CAACoD,wBAAwB,CAAC7G,KAAK,CAAC,CAAC,CAACkH,EAAE,CAAClH;gCAC9E,oCAAoC;gCACtC,OAAO,IAAIA,SAAS,cAAc;oCAChC,gFAAgF;oCAChF,iEAAiE;oCACjE,IAAIA,SAAS,eAAemB,QAAQ2B,IAAI,KAAK,YAAY;wCACvDkE,YAAY,CAAChH,KAAK,GAAG9B,GAAG,CAAC,8BAA8B,CAAC,CAACgJ,EAAE,CAAClH;oCAC9D,OAAO;wCACLgH,YAAY,CAAChH,KAAK,GAAG9B,GAAG,CAAC,IAAI,CAAC,CAACgJ,EAAE,CAAClH;oCACpC;gCACF;4BACF;4BAEA,IAAI0H,QAAa9B,GAAG7D,MAAM,CAACiF,cAAce,IAAI,CAAC5G,QAAQsC,MAAM,CAACoD,wBAAwB;4BACrF,IAAIM,qBAAqBjD,MAAM,EAAE;gCAC/BwD,QAAQA,MAAMnI,KAAK,CAAC5B,OAAOwJ;4BAC7B;4BACA,IAAIpB,iBAAiB,MAAM;gCACzBA,eAAe2B;4BACjB,OAAO;gCACL3B,eAAeA,aAAaiC,QAAQ,CAACN;4BACvC;wBACF;wBAEA,MAAMO,gBAAgB,GAAGtC,WAAW,SAAS,CAAC;wBAE9C,IAAIuC,WAAWnK,GACbG,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAES,iBAAiB,MAAM,CAAC,GACpCpD,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,GAAG,EAAEjC,OAAO,CAAC,CAAC;wBAG1C,IAAIzG,SAASkB,OAAOC,IAAI,CAACnB,OAAO2E,MAAM,GAAG,GAAG;4BAC1CgE,WAAWvK,IAAIuK,UAAU9H,cAAcb,OAAO0I;wBAChD;wBAEA,IAAI7C,aAAa;4BACf/D,YAAY8G,MAAM,CAAC,GAAGxC,WAAW,MAAM,CAAC,CAAC,GAAGzH,GAAG,CAAC,EAAE0H,GAC/C7D,MAAM,CAAC;gCAAElE,OAAOA;4BAAQ,GACxBkK,IAAI,CAAC7J,GAAG,CAAC,EAAE6H,aAAamB,EAAE,CAACe,eAAe,CAAC,EAC3C1I,KAAK,CAAC2I,UAAU,CAAC,CAAChB,EAAE,CAAC,GAAGvB,WAAW,MAAM,CAAC;wBAC/C;wBAEAI,eAAeA,aAAa1C,OAAO,CAACmD,UAAUtI,GAAG,CAAC,UAAU,CAAC;wBAE7D,MAAMkK,mBAAmB,GAAGzC,WAAW,OAAO,CAAC;wBAE/C,IAAI0C,iBAAiBnK,IAAIoK,KAAK;wBAC9B,IAAIjD,OAAO;4BACTgD,iBAAiBnK,GAAG,CAAC,OAAO,EAAEmH,MAAM,CAAC;wBACvC;wBACA,IAAIG,QAAQH,UAAU,GAAG;4BACvB,MAAMkD,SAAS,AAAC/C,CAAAA,OAAO,CAAA,IAAKH;4BAC5B,IAAIkD,SAAS,GAAG;gCACdF,iBAAiBnK,GAAG,CAAC,EAAEmK,eAAe,QAAQ,EAAEE,OAAO,CAAC;4BAC1D;wBACF;wBAEA,yDAAyD;wBACzD,IAAIC,aAAatK,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEuH,iBAAiB,GAAG,EAAEpC,OAAO,KAAK,EAAE1E,iBAAiB,MAAM,CAAC;wBACzF,IAAI/B,SAASkB,OAAOC,IAAI,CAACnB,OAAO2E,MAAM,GAAG,GAAG;4BAC1C,MAAMuE,kBAAkBrI,cAAcb,OAAO6I;4BAC7CI,aAAatK,GAAG,CAAC,EAAEsK,WAAW,KAAK,EAAEC,gBAAgB,CAAC;wBACxD;wBAEA,+FAA+F;wBAC/F,4EAA4E;wBAC5EpH,YAAY8G,MAAM,CAACxC,WAAW,GAAGzH,GAAG,CAAC;mBAC5B,EAAEe,mBAAmBkC,SAAS;4BACnC+B,IAAIhF,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,MAAM,CAAC;4BACrCrF,YAAY1E,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,cAAc,CAAC;wBACvD,GAAG;;4BAEa,EAAE/J,GAAG,CAAC,EAAE6H,aAAamB,EAAE,CAACkB,kBAAkB,CAAC,CAAC;oBACpD,EAAEI,WAAW,EAAEH,eAAe;iBACjC,EAAEnK,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,CAAC,CAAC,EAAE;WACtC,CAAC,CAACf,EAAE,CAACvB;oBACR,OAAO;wBACL,MAAM+C,YACJ,AAACrG,CAAAA,YAAYb,aAAY,KACzB9C,iBAAiByC,QAAQsD,OAAO,CAAC4B,WAAW,CAAC7D,MAAMsD,UAAU,CAAC,CAACQ,MAAM;wBAEvE,MAAM7E,SAASiH,YACXtK,6BACE+C,QAAQsD,OAAO,CAAC6B,MAAM,EACtBnF,QAAQsD,OAAO,CAAC4B,WAAW,CAAC7D,MAAMsD,UAAU,CAAC,CAACQ,MAAM,EACpD,QAEFnF,QAAQsD,OAAO,CAAC4B,WAAW,CAAC7D,MAAMsD,UAAU,CAAC,CAACQ,MAAM,CAACtC,eAAe;wBAExE,MAAM6C,0BAA0B1F,QAAQoC,YAAY,CAACC,GAAG,CACtDkF,YACI,CAAC,CAAC,EAAE/J,YAAY6D,MAAMsD,UAAU,IAAI3E,QAAQwH,cAAc,EAAE,GAC5DhK,YAAY6D,MAAMsD,UAAU;wBAGlC,MAAMlE,QAA+B,EAAE;wBAEvC,MAAMgH,kBAAkBvG,WACpBlB,QAAQsC,MAAM,CAACnC,iBAAiB,CAAC2F,MAAM,GACvC9F,QAAQsC,MAAM,CAACnC,iBAAiB,CAAC4B,EAAE;wBAEvC,IAAI2F;wBAEJ,MAAMC,eAAe5K,IAAI2C,GAAG,CAC1B,CAAC,CAAC,EAAE7B,wBAAwB4J,gBAAgB9B,KAAK,EAAE,GAAG,EAAE8B,gBAAgB9F,IAAI,CAAC,CAAC,CAAC;wBAGjF,IAAIlD,MAAMC,OAAO,CAAC2C,MAAMuG,WAAW,CAACnG,UAAU,GAAG;4BAC/CiG,iBAAiB;gCACf,CAACrG,MAAMyD,EAAE,CAAC,EAAE;oCACV+C,QAAQ;wCACNpG,YAAYxB;wCACZT,OAAOzB,cAAc4J;oCACvB;gCACF;4BACF;wBACF,OAAO;4BACLD,iBAAiB;gCACf,CAACrG,MAAMyD,EAAE,CAAC,EAAE;oCACV+C,QAAQ9J,cAAc4J;gCACxB;4BACF;wBACF;wBAEA,IAAIvJ,SAASkB,OAAOC,IAAI,CAACnB,OAAO2E,MAAM,EAAE;4BACtC2E,iBAAiB;gCACflL,KAAK;oCAACkL;oCAAgBtJ;iCAAM;4BAC9B;wBACF;wBAEA,IAAImJ,WAAW;4BACbG,iBAAiBxK,eAAeF,wBAAwB0K,iBAAiB;gCACvEI,QAAQ;oCAAED,QAAQ;gCAAK;4BACzB;wBACF;wBAEA,MAAMrD,aAAa,GAAG3F,KAAKmF,UAAU,CAAC,KAAK,OAAO3C,MAAMM,IAAI,EAAE;wBAE9D,MAAMmF,gBAAgB,GAAGtC,WAAW,MAAM,CAAC;wBAE3C,MAAM,EAAEuD,aAAa,EAAE,GAAGrK,cAAc;4BACtCsC;4BACA4C,WAAW8C;wBACb;wBAEA,MAAM,EACJxD,OAAO,EACP2D,YAAY,EACZzH,OAAO4J,aAAa,EACrB,GAAGvK,WAAW;4BACbuC;4BACAiI,YAAYF;4BACZzH;4BACAG;4BACAC;4BACAC;4BACAuH,cAAc;4BACd5D,MAAMiD,YACFnK,mBAAmB;gCACjB+K,kBAAkBnI,QAAQsD,OAAO,CAAC4B,WAAW,CAAC7D,MAAMsD,UAAU,CAAC,CAACQ,MAAM;gCACtEb;4BACF,KACAA;4BACJ1B,WAAW8C;4BACXtH,OAAOsJ;wBACT;wBAEA,IAAK,IAAIU,OAAOvC,aAAc;4BAC5B,MAAMwC,MAAMxC,YAAY,CAACuC,IAAI;4BAE7B,IAAIC,IAAI1C,KAAK,IAAI9H,wBAAwBwK,IAAI1C,KAAK,MAAMD,yBAAyB;gCAC/E,OAAOG,YAAY,CAACuC,IAAI;gCACxBA,MAAMA,IAAItJ,KAAK,CAAC,KAAKwJ,GAAG;gCACxBzC,YAAY,CAACuC,IAAI,GAAGL,aAAa,CAACK,IAAI;4BACxC;wBACF;wBAEA,IAAIb,WAAW;4BACb1B,aAAaC,MAAM,GAAGiC,cAAcjC,MAAM;wBAC5C;wBAEA,IAAIS,QAAsB9B,GACvB7D,MAAM,CAACiF,cACPe,IAAI,CAACmB,eACL3J,KAAK,CAAC4J,eACN9F,OAAO,CAAC,IAAMA,QAAQtC,GAAG,CAAC,CAAC,EAAE6G,MAAM,EAAE8B,KAAK,EAAE,GAAKA,MAAM9B,UACvD+B,QAAQ;wBAEX/H,MAAMW,OAAO,CAAC,CAAC,EAAEG,IAAI,EAAEkH,SAAS,EAAE9C,KAAK,EAAE;4BACvCY,QAAQA,KAAK,CAAChF,QAAQ,WAAW,CAACoE,OAAO8C;wBAC3C;wBAEA,IAAIpE,QAAQH,UAAU,GAAG;4BACvB,MAAMkD,SAAS,AAAC/C,CAAAA,OAAO,CAAA,IAAKH,QAAQ;4BACpC,IAAIkD,SAAS,GAAG;gCACdb,QAAQA,MAAMa,MAAM,CAACA;4BACvB;wBACF;wBAEA,IAAIlD,UAAU,GAAG;4BACfqC,QAAQA,MAAMrC,KAAK,CAACA;wBACtB;wBAEA,MAAMwE,WAAWnC,MAAMR,EAAE,CAACe;wBAE1B,IAAI7C,aAAa;4BACf,IAAI0E,gBAA8BlE,GAC/B7D,MAAM,CAACiF,cAEPe,IAAI,CAACmB,eACL3J,KAAK,CAAC4J,eACNQ,QAAQ;4BAEX/H,MAAMW,OAAO,CAAC,CAAC,EAAEG,IAAI,EAAEkH,SAAS,EAAE9C,KAAK,EAAE;gCACvCgD,gBAAgBA,aAAa,CAACpH,QAAQ,WAAW,CAACoE,OAAO8C;4BAC3D;4BAEAvI,YAAY8G,MAAM,CAAC,GAAGxC,WAAW,MAAM,CAAC,CAAC,GAAGzH,GAAG,CAAC,EAAE0H,GAC/C7D,MAAM,CAAC;gCACNlE,OAAOA;4BACT,GACCkK,IAAI,CAAC7J,GAAG,CAAC,EAAE4L,cAAc5C,EAAE,CAAC,GAAGe,cAAc,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAACf,EAAE,CACvE,GAAGe,cAAc,MAAM,CAAC;wBAE5B;wBAEA5G,YAAY8G,MAAM,CAACxC,WAAW,GAAGzH,GAAG,CAAC,EAAE0H,GACpC7D,MAAM,CAAC;4BACNgI,QAAQ9K,mBAAmBkC,SAAS;gCAClC+B,IAAIhF,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,EAAE,EAAES,YAAY,cAAc,MAAM;gCAClE,GAAI1B,aAAatD,OAAO,IAAI;oCAC1B7B,QAAQ3D,IAAI2C,GAAG,CAAC,CAAC,CAAC,EAAEoH,cAAc,EAAE,EAAEjB,aAAatD,OAAO,CAACZ,IAAI,EAAE;gCACnE,CAAC;4BACH;wBACF,GACCiF,IAAI,CAAC7J,GAAG,CAAC,EAAE2L,SAAS,CAAC,EAAE,CAAC,CAAC3C,EAAE,CAACe;oBACjC;oBAEA;gBACF;YAEA,KAAK;gBAAS;oBACZ,IAAI9G,QAAQ2B,IAAI,KAAK,UAAU;wBAC7B;oBACF;oBAEA,MAAMkH,OAAOvH,mBAAmBvB,WAAWG;oBAC3C,IAAI,CAAC2I,KAAK/G,OAAO,EAAE;wBACjB+G,KAAK/G,OAAO,GAAG,CAAC;oBAClB;oBAEA,IAAI,CAAC+G,KAAK7B,MAAM,EAAE;wBAChB6B,KAAK7B,MAAM,GAAG,CAAC;oBACjB;oBAEA,MAAMrF,OAAO,GAAG9C,OAAOwC,MAAMM,IAAI,EAAE;oBAEnC,2FAA2F;oBAC3F,gGAAgG;oBAChGkH,KAAK/G,OAAO,CAACH,KAAK,GAAG;oBAErB,IAAImH,eAAe;oBAEnB,IAAIlI,UAAUC,yBAAyB;wBACrC,IACEA,2BACCC,eAAe,aAAa6C,QAAQ/C,MAAM,CAACS,MAAMM,IAAI,CAAC,KACtDb,eAAe,aAAa,OAAOF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,aAC3D;4BACAmH,eAAe;wBACjB;oBACF,OAAO;wBACLA,eAAe;oBACjB;oBACA,MAAMlG,YAAYtF,uBAAuB;wBAAE+D;wBAAOV;oBAAkB,KAChE,GAAGR,mBAAmBH,QAAQ0C,aAAa,EAAE,GAC7CvC;oBAEJ,IAAI2I,cAAc;wBAChBD,KAAK7B,MAAM,CAACrF,KAAK,GAAG5E,IACjB2C,GAAG,CAAC,CAAC,cAAc,EAAEM,QAAQsC,MAAM,CAACM,UAAU,CAACjB,KAAK,CAACA,IAAI,CAAC,SAAS,CAAC,EACpEoE,EAAE,CAACpE;oBACR;oBACA;gBACF;YAEA,KAAK;gBAAU;oBACb,IAAIf,UAAU,CAACC,yBAAyB;wBACtC,IACE,AAACC,eAAe,aAAa,CAACF,MAAM,CAACS,MAAMM,IAAI,CAAC,IAC/Cb,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,OACpD;4BACA;wBACF;oBACF;oBAEA,IAAIN,MAAMG,OAAO,EAAE;wBACjB,MAAMuH,aAAqB;4BACzBjH,SAAS;gCACPC,IAAI;gCACJwG,OAAO;gCACPzC,QAAQ;4BACV;4BACA5D,SAAS,CAAC,EAAEqG,KAAK,EAAE,EAAE,EAAE9L,GAAG,EAAE,GAAK;oCAACA,IAAI8L;iCAAO;wBAC/C;wBAEArI,YAAYwB,IAAI,CAAC,GAAG7C,OAAOwC,MAAMM,IAAI,EAAE,CAAC,GAAGoH;wBAC3C;oBACF;oBAEA,IAAInI,UAAUC,yBAAyB;wBACrC,MAAMqC,YAAY,GAAGrE,OAAOwC,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACL,CAAAA,oBAAoBX,iBAAgB,KAAMZ,UAAU;4BACvDA,SAAS+B,OAAO,CAACoB,UAAU,GAAG;wBAChC,OAAO,IAAIlD,QAAQsC,MAAM,CAACnC,iBAAiB,EAAE,CAAC+C,UAAU,EAAE;4BACxDhD,YAAY4B,OAAO,CAACoB,UAAU,GAAG;wBACnC;oBACF;oBAEA;gBACF;YAEA;gBAAS;oBACP,IAAI3C,iBAAiB;wBACnB,IACE,AAACc,CAAAA,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,QAAO,KACvDF,CAAAA,MAAMG,OAAO,IAAI/C,MAAMC,OAAO,CAAC2C,MAAMI,UAAU,CAAA,GAChD;4BACAN,iBAAiB6H,IAAI,GAAG;wBAC1B;wBAEA,IAAI3H,MAAME,IAAI,KAAK,YAAYF,MAAMG,OAAO,EAAE;4BAC5CL,iBAAiB8H,OAAO,GAAG;wBAC7B;wBAEA,IAAI5H,MAAME,IAAI,KAAK,UAAUF,MAAMG,OAAO,EAAE;4BAC1CL,iBAAiB+H,KAAK,GAAG;wBAC3B;oBACF;oBAEA,IAAI,CAACtI,UAAU,CAACC,yBAAyB;wBACvC;oBACF;oBAEA,IACEA,2BACCC,eAAe,aAAa6C,QAAQ/C,MAAM,CAACS,MAAMM,IAAI,CAAC,KACtDb,eAAe,aAAa,OAAOF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,aAC3D;wBACA,MAAMuB,YAAY,GAAGrE,OAAOwC,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACL,CAAAA,oBAAoBX,iBAAgB,KAAMZ,UAAU;4BACvDA,SAAS+B,OAAO,CAACoB,UAAU,GAAG;wBAChC,OAAO,IAAIlD,QAAQsC,MAAM,CAACnC,iBAAiB,EAAE,CAAC+C,UAAU,EAAE;4BACxDhD,YAAY4B,OAAO,CAACoB,UAAU,GAAG;wBACnC;wBAEA,IACE,CAAC/B,iBAAiB6H,IAAI,IACrB3H,CAAAA,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,QAAO,KACvDF,CAAAA,MAAMG,OAAO,IAAI/C,MAAMC,OAAO,CAAC2C,MAAMI,UAAU,CAAA,GAChD;4BACAN,iBAAiB6H,IAAI,GAAG;wBAC1B;wBAEA,IAAI,CAAC7H,iBAAiB8H,OAAO,IAAI5H,MAAME,IAAI,KAAK,YAAYF,MAAMG,OAAO,EAAE;4BACzEL,iBAAiB8H,OAAO,GAAG;wBAC7B;wBAEA,IAAI,CAAC9H,iBAAiB+H,KAAK,IAAI7H,MAAME,IAAI,KAAK,UAAUF,MAAMG,OAAO,EAAE;4BACrEL,iBAAiB+H,KAAK,GAAG;wBAC3B;oBACF;oBAEA;gBACF;QACF;IACF;IAEA,OAAOlI;AACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect } from 'drizzle-orm/sqlite-core'\nimport type {\n FlattenedField,\n JoinQuery,\n PayloadRequest,\n SelectMode,\n SelectType,\n Where,\n} from 'payload'\n\nimport { and, count, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n getBranchPredicateSync,\n getQueryDraftsSort,\n resolveBranchReadState,\n resolveBranchVersionQuerySync,\n rewriteBranchVersionParents,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildBranchVisibility } from '../queries/buildBranchVisibility.js'\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildPolymorphicJoinQuery } from './buildPolymorphicJoinQuery.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n req?: Partial<PayloadRequest>\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n req,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n field.blocks.forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\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' && Boolean(blocksSelect[block.slug])) {\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 = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${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 draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n req,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n if (Array.isArray(field.collection)) {\n const polymorphicJoinQuery = buildPolymorphicJoinQuery({\n adapter,\n currentTableName,\n field,\n limit,\n locale,\n page,\n path,\n req,\n shouldCount,\n sort,\n where,\n })\n\n currentArgs.extras[polymorphicJoinQuery.columnName] = polymorphicJoinQuery.documents\n\n if (polymorphicJoinQuery.count) {\n currentArgs.extras[`${polymorphicJoinQuery.columnName}_count`] =\n polymorphicJoinQuery.count\n }\n } else {\n const db = adapter.drizzle as LibSQLDatabase\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\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 const currentIDRaw = sql.raw(\n `\"${getNameFromDrizzleTable(currentIDColumn.table)}\".\"${currentIDColumn.name}\"`,\n )\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n // A join subquery must carry the same branch predicate as the\n // top-level read, or a branch would see main's related documents.\n const branchReadState = resolveBranchReadState({\n collectionSlug: field.collection,\n req,\n })\n const joinBranchPredicate = branchReadState.useBranching\n ? null\n : getBranchPredicateSync({\n collectionSlug: field.collection,\n req,\n })\n\n if (useDrafts) {\n const versionWhere = appendVersionToQueryKey(joinQueryWhere)\n const branchVersionWhere = branchReadState.useBranching\n ? rewriteBranchVersionParents(versionWhere)\n : resolveBranchVersionQuerySync({\n collectionSlug: field.collection,\n req,\n where: versionWhere,\n })\n\n joinQueryWhere = combineQueries(branchVersionWhere ?? {}, { latest: { equals: true } })\n } else if (!branchReadState.useBranching && joinBranchPredicate) {\n joinQueryWhere = { and: [joinQueryWhere, joinBranchPredicate] }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n req,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n const nativeBranchVisibility = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter,\n branch: branchReadState.branch,\n canonicalIDExpression: useDrafts\n ? sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`\n : undefined,\n collectionSlug: field.collection,\n table: newAliasTable,\n })\n : undefined\n const visibleSubQueryWhere = nativeBranchVisibility\n ? and(subQueryWhere, nativeBranchVisibility)\n : subQueryWhere\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 if (useDrafts) {\n delete selectFields[`${joinCollectionTableName}.parent`]\n\n selectFields.parent = newAliasTable._branchParent\n ? (sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`.as(\n newAliasTable.parent.name,\n ) as unknown as GenericColumn)\n : newAliasTable.parent\n }\n\n // Surface the canonical document ID rather than the shadow row's own\n // primary key, so join results address documents the same way every\n // other read does.\n if ((branchReadState.useBranching || joinBranchPredicate) && newAliasTable._branchDocID) {\n // `selectFields` is typed as a column map, but Drizzle accepts an\n // aliased expression in the same position — as the sibling\n // `sql\\`...\\`.as()` assignments above already rely on.\n selectFields.id = sql`COALESCE(${newAliasTable._branchDocID}, ${newAliasTable.id})`.as(\n 'id',\n ) as unknown as GenericColumn\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","count","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getBranchPredicateSync","getQueryDraftsSort","resolveBranchReadState","resolveBranchVersionQuerySync","rewriteBranchVersionParents","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildBranchVisibility","buildQuery","getTableAlias","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","InternalBlockTableNameIndex","resolveBlockTableName","buildPolymorphicJoinQuery","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","path","req","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blocksAsJSON","fieldPath","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","where","Array","isArray","collection","polymorphicJoinQuery","extras","columnName","documents","db","drizzle","useDrafts","collections","config","joinCollectionTableName","versionsSuffix","currentIDColumn","parent","joinQueryWhere","currentIDRaw","raw","table","targetField","on","equals","value","branchReadState","joinBranchPredicate","useBranching","versionWhere","branchVersionWhere","latest","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","collectionConfig","nativeBranchVisibility","branch","canonicalIDExpression","_branchParent","visibleSubQueryWhere","key","val","split","pop","as","_branchDocID","query","from","map","column","order","$dynamic","condition","offset","subQuery","countSubquery","result","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
|
package/dist/find.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAe9D,eAAO,MAAM,IAAI,EAAE,IAgElB,CAAA"}
|