@payloadcms/drizzle 4.0.0-internal.e7d4ebc → 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
package/dist/find.js
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
|
+
import { applyBranchIDProjection, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
|
|
1
2
|
import toSnakeCase from 'to-snake-case';
|
|
2
3
|
import { findMany } from './find/findMany.js';
|
|
3
|
-
export const find = async function find({ collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
|
|
4
|
+
export const find = async function find({ branch, collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
|
|
4
5
|
const collectionConfig = this.payload.collections[collection].config;
|
|
5
6
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort;
|
|
6
7
|
const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
|
|
7
|
-
|
|
8
|
+
const branchReadState = resolveBranchReadState({
|
|
9
|
+
branch,
|
|
10
|
+
collectionSlug: collectionConfig.slug,
|
|
11
|
+
req
|
|
12
|
+
});
|
|
13
|
+
const branchedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
|
|
14
|
+
branch,
|
|
15
|
+
collectionSlug: collectionConfig.slug,
|
|
16
|
+
req,
|
|
17
|
+
where
|
|
18
|
+
});
|
|
19
|
+
const result = await findMany({
|
|
8
20
|
adapter: this,
|
|
21
|
+
branchVisibility: branchReadState.useBranching ? {
|
|
22
|
+
branch: branchReadState.branch,
|
|
23
|
+
collectionSlug: collectionConfig.slug
|
|
24
|
+
} : undefined,
|
|
9
25
|
collectionSlug: collectionConfig.slug,
|
|
10
26
|
draftsEnabled,
|
|
11
27
|
fields: collectionConfig.flattenedFields,
|
|
@@ -15,11 +31,23 @@ export const find = async function find({ collection, draftsEnabled, joins, limi
|
|
|
15
31
|
page,
|
|
16
32
|
pagination,
|
|
17
33
|
req,
|
|
18
|
-
select
|
|
34
|
+
select: withBranchIDSelect({
|
|
35
|
+
branch,
|
|
36
|
+
collectionSlug: collectionConfig.slug,
|
|
37
|
+
req,
|
|
38
|
+
select
|
|
39
|
+
}),
|
|
19
40
|
sort,
|
|
20
41
|
tableName,
|
|
21
|
-
where
|
|
42
|
+
where: branchedWhere
|
|
43
|
+
});
|
|
44
|
+
applyBranchIDProjection({
|
|
45
|
+
branch,
|
|
46
|
+
collectionSlug: collectionConfig.slug,
|
|
47
|
+
docs: result.docs,
|
|
48
|
+
req
|
|
22
49
|
});
|
|
50
|
+
return result;
|
|
23
51
|
};
|
|
24
52
|
|
|
25
53
|
//# sourceMappingURL=find.js.map
|
package/dist/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n
|
|
1
|
+
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport {\n applyBranchIDProjection,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n branch,\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchReadState = resolveBranchReadState({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collectionConfig.slug }\n : undefined,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select: withBranchIDSelect({ branch, collectionSlug: collectionConfig.slug, req, select }),\n sort,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collectionConfig.slug,\n docs: result.docs as Record<string, unknown>[],\n req,\n })\n\n return result\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","toSnakeCase","findMany","find","branch","collection","draftsEnabled","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","branchReadState","collectionSlug","branchedWhere","useBranching","result","adapter","branchVisibility","fields","flattenedFields","docs"],"mappings":"AAEA,SACEA,uBAAuB,EACvBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,OAAa,eAAeA,KAEvC,EACEC,MAAM,EACNC,UAAU,EACVC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,OAAO,CAAC,EACRC,UAAU,EACVC,GAAG,EACHC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYgB,iBAAiBS,IAAI;IAEzE,MAAMC,kBAAkB7B,uBAAuB;QAC7CM;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;IACF;IACA,MAAMiB,gBAAgBF,gBAAgBG,YAAY,GAC9C/B,iBAAiBiB,SACjB,MAAMnB,mBAAmB;QACvBO;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;QACAI;IACF;IAEJ,MAAMe,SAAS,MAAM7B,SAAS;QAC5B8B,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAE1B,QAAQuB,gBAAgBvB,MAAM;YAAEwB,gBAAgBX,iBAAiBS,IAAI;QAAC,IACxEL;QACJO,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACA4B,QAAQjB,iBAAiBkB,eAAe;QACxC5B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,QAAQb,mBAAmB;YAAEI;YAAQwB,gBAAgBX,iBAAiBS,IAAI;YAAEd;YAAKC;QAAO;QACxFC;QACAS;QACAP,OAAOa;IACT;IAEAjC,wBAAwB;QACtBQ;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCU,MAAML,OAAOK,IAAI;QACjBxB;IACF;IAEA,OAAOmB;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,YAAY,EAQlB,MAAM,SAAS,CAAA;AA+ChB,eAAO,MAAM,YAAY,EAAE,YAgP1B,CAAA"}
|
package/dist/findDistinct.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import { max, sql } from 'drizzle-orm';
|
|
2
|
-
import { getFieldByPath } from 'payload';
|
|
1
|
+
import { and, asc, desc, max, sql } from 'drizzle-orm';
|
|
2
|
+
import { getFieldByPath, getLocalizedPaths, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs } from 'payload';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
|
+
import { buildBranchVisibility } from './queries/buildBranchVisibility.js';
|
|
4
5
|
import { buildQuery } from './queries/buildQuery.js';
|
|
5
6
|
import { selectDistinct } from './queries/selectDistinct.js';
|
|
6
7
|
import { getTransaction } from './utilities/getTransaction.js';
|
|
7
8
|
import { DistinctSymbol } from './utilities/rawConstraint.js';
|
|
9
|
+
const prefixWherePaths = ({ prefix, where })=>{
|
|
10
|
+
const prefixedWhere = {};
|
|
11
|
+
for (const [key, value] of Object.entries(where)){
|
|
12
|
+
if ([
|
|
13
|
+
'and',
|
|
14
|
+
'or'
|
|
15
|
+
].includes(key.toLowerCase()) && Array.isArray(value)) {
|
|
16
|
+
prefixedWhere[key] = value.map((nestedWhere)=>prefixWherePaths({
|
|
17
|
+
prefix,
|
|
18
|
+
where: nestedWhere
|
|
19
|
+
}));
|
|
20
|
+
} else {
|
|
21
|
+
prefixedWhere[`${prefix}.${key}`] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return prefixedWhere;
|
|
25
|
+
};
|
|
8
26
|
const getOrderColumn = (orderBy, selectFields, joins)=>{
|
|
9
27
|
if (orderBy.length === 0) {
|
|
10
28
|
return null;
|
|
@@ -22,7 +40,60 @@ export const findDistinct = async function(args) {
|
|
|
22
40
|
const page = args.page || 1;
|
|
23
41
|
const offset = args.limit ? (page - 1) * args.limit : undefined;
|
|
24
42
|
const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
|
|
25
|
-
|
|
43
|
+
// Same predicate a list read gets: distinct values describe the visible documents.
|
|
44
|
+
const branchReadState = resolveBranchReadState({
|
|
45
|
+
branch: args.branch,
|
|
46
|
+
collectionSlug: args.collection,
|
|
47
|
+
req: args.req
|
|
48
|
+
});
|
|
49
|
+
const branchScopedWhere = branchReadState.useBranching ? rewriteBranchIDs(args.where) : await resolveBranchQuery({
|
|
50
|
+
branch: args.branch,
|
|
51
|
+
collectionSlug: args.collection,
|
|
52
|
+
req: args.req,
|
|
53
|
+
where: args.where
|
|
54
|
+
});
|
|
55
|
+
const relatedBranchConstraints = [];
|
|
56
|
+
const nativeRelatedBranchReads = [];
|
|
57
|
+
const fieldPaths = getLocalizedPaths({
|
|
58
|
+
collectionSlug: args.collection,
|
|
59
|
+
fields: collectionConfig.flattenedFields,
|
|
60
|
+
incomingPath: args.field,
|
|
61
|
+
locale: args.locale,
|
|
62
|
+
overrideAccess: true,
|
|
63
|
+
payload: this.payload
|
|
64
|
+
});
|
|
65
|
+
for(let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++){
|
|
66
|
+
const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug;
|
|
67
|
+
if (!relatedCollectionSlug) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const relationshipPath = fieldPaths.slice(0, pathIndex).map(({ path })=>path).join('.');
|
|
71
|
+
const relatedBranchReadState = resolveBranchReadState({
|
|
72
|
+
branch: args.branch,
|
|
73
|
+
collectionSlug: relatedCollectionSlug,
|
|
74
|
+
req: args.req
|
|
75
|
+
});
|
|
76
|
+
const relatedWhere = relatedBranchReadState.useBranching ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath]) : await resolveBranchQuery({
|
|
77
|
+
branch: args.branch,
|
|
78
|
+
collectionSlug: relatedCollectionSlug,
|
|
79
|
+
req: args.req,
|
|
80
|
+
where: args.relatedAccess?.[relationshipPath]
|
|
81
|
+
});
|
|
82
|
+
if (relatedBranchReadState.useBranching) {
|
|
83
|
+
nativeRelatedBranchReads.push({
|
|
84
|
+
branch: relatedBranchReadState.branch,
|
|
85
|
+
collectionSlug: relatedCollectionSlug,
|
|
86
|
+
relationshipPath
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (relatedWhere && Object.keys(relatedWhere).length) {
|
|
90
|
+
relatedBranchConstraints.push(prefixWherePaths({
|
|
91
|
+
prefix: relationshipPath,
|
|
92
|
+
where: relatedWhere
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const { joins, orderBy, selectFields, where: queryWhere } = buildQuery({
|
|
26
97
|
adapter: this,
|
|
27
98
|
fields: collectionConfig.flattenedFields,
|
|
28
99
|
locale: args.locale,
|
|
@@ -30,18 +101,44 @@ export const findDistinct = async function(args) {
|
|
|
30
101
|
tableName,
|
|
31
102
|
where: {
|
|
32
103
|
and: [
|
|
33
|
-
args.where ?? {},
|
|
34
104
|
{
|
|
35
105
|
[args.field]: {
|
|
36
106
|
equals: DistinctSymbol
|
|
37
107
|
}
|
|
38
|
-
}
|
|
108
|
+
},
|
|
109
|
+
branchScopedWhere ?? {},
|
|
110
|
+
...relatedBranchConstraints
|
|
39
111
|
]
|
|
40
112
|
}
|
|
41
113
|
});
|
|
42
114
|
orderBy.pop();
|
|
115
|
+
const table = this.tables[tableName];
|
|
116
|
+
const canonicalIDExpression = branchReadState.useBranching && args.field === 'id' ? sql`COALESCE(${table._branchDocID}, ${table.id})` : undefined;
|
|
117
|
+
if (canonicalIDExpression) {
|
|
118
|
+
selectFields['_selected'] = canonicalIDExpression.as('_selected');
|
|
119
|
+
}
|
|
120
|
+
const branchVisibilityWhere = branchReadState.useBranching ? buildBranchVisibility({
|
|
121
|
+
adapter: this,
|
|
122
|
+
branch: branchReadState.branch,
|
|
123
|
+
collectionSlug: args.collection,
|
|
124
|
+
table
|
|
125
|
+
}) : undefined;
|
|
126
|
+
const relatedBranchVisibility = nativeRelatedBranchReads.flatMap((relatedBranchRead)=>{
|
|
127
|
+
const relatedTable = joins.find(({ queryPath })=>queryPath?.endsWith(`${relatedBranchRead.relationshipPath}._target`))?.table;
|
|
128
|
+
return relatedTable ? [
|
|
129
|
+
buildBranchVisibility({
|
|
130
|
+
adapter: this,
|
|
131
|
+
branch: relatedBranchRead.branch,
|
|
132
|
+
collectionSlug: relatedBranchRead.collectionSlug,
|
|
133
|
+
table: relatedTable
|
|
134
|
+
})
|
|
135
|
+
] : [];
|
|
136
|
+
});
|
|
137
|
+
const where = and(queryWhere, branchVisibilityWhere, ...relatedBranchVisibility);
|
|
43
138
|
const db = await getTransaction(this, args.req);
|
|
44
|
-
const _order = getOrderColumn(orderBy, selectFields, joins);
|
|
139
|
+
const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins);
|
|
140
|
+
const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort;
|
|
141
|
+
const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc;
|
|
45
142
|
const selectDistinctResult = await selectDistinct({
|
|
46
143
|
adapter: this,
|
|
47
144
|
db,
|
|
@@ -49,7 +146,9 @@ export const findDistinct = async function(args) {
|
|
|
49
146
|
hasAggregates: Boolean(_order) && !joins.length,
|
|
50
147
|
joins,
|
|
51
148
|
query: ({ query })=>{
|
|
52
|
-
if (
|
|
149
|
+
if (canonicalIDExpression) {
|
|
150
|
+
query = query.orderBy(canonicalIDOrder(sql`_selected`));
|
|
151
|
+
} else if (_order && orderBy.length > 0 && !joins.length) {
|
|
53
152
|
query = query.orderBy(orderBy[0].order(sql`_order`));
|
|
54
153
|
} else {
|
|
55
154
|
query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
|
|
@@ -97,7 +196,7 @@ export const findDistinct = async function(args) {
|
|
|
97
196
|
}));
|
|
98
197
|
if (args.limit) {
|
|
99
198
|
const totalDocs = await this.countDistinct({
|
|
100
|
-
column: selectFields['_selected'],
|
|
199
|
+
column: canonicalIDExpression ?? selectFields['_selected'],
|
|
101
200
|
db,
|
|
102
201
|
joins,
|
|
103
202
|
tableName,
|
package/dist/findDistinct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { asc, desc, SQL } from 'drizzle-orm'\n\nimport { max, sql } from 'drizzle-orm'\nimport { type FindDistinct, getFieldByPath, type SanitizedCollectionConfig } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n args.where ?? {},\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n ],\n },\n })\n\n orderBy.pop()\n\n const db = await getTransaction(this, args.req)\n\n const _order = getOrderColumn(orderBy, selectFields, joins)\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: selectFields['_selected'],\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["max","sql","getFieldByPath","toSnakeCase","buildQuery","selectDistinct","getTransaction","DistinctSymbol","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","where","adapter","fields","flattenedFields","locale","sort","field","and","equals","pop","db","req","_order","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","map","_selected","includeRelationships","path","Array","isArray","relationTo","row","json","JSON","parse","Object","keys","find","each","value","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\n\nimport { and, asc, desc, max, sql } from 'drizzle-orm'\nimport {\n type FindDistinct,\n getFieldByPath,\n getLocalizedPaths,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n type SanitizedCollectionConfig,\n type Where,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildBranchVisibility } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst prefixWherePaths = ({ prefix, where }: { prefix: string; where: Where }): Where => {\n const prefixedWhere: Where = {}\n\n for (const [key, value] of Object.entries(where)) {\n if (['and', 'or'].includes(key.toLowerCase()) && Array.isArray(value)) {\n prefixedWhere[key] = value.map((nestedWhere) =>\n prefixWherePaths({ prefix, where: nestedWhere }),\n )\n } else {\n prefixedWhere[`${prefix}.${key}`] = value\n }\n }\n\n return prefixedWhere\n}\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n // Same predicate a list read gets: distinct values describe the visible documents.\n const branchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n })\n const branchScopedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(args.where)\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n where: args.where,\n })\n\n const relatedBranchConstraints: Where[] = []\n const nativeRelatedBranchReads: {\n branch: string\n collectionSlug: string\n relationshipPath: string\n }[] = []\n const fieldPaths = getLocalizedPaths({\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: args.locale,\n overrideAccess: true,\n payload: this.payload,\n })\n\n for (let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++) {\n const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug\n\n if (!relatedCollectionSlug) {\n continue\n }\n\n const relationshipPath = fieldPaths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n const relatedBranchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n })\n const relatedWhere = relatedBranchReadState.useBranching\n ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath])\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n where: args.relatedAccess?.[relationshipPath],\n })\n\n if (relatedBranchReadState.useBranching) {\n nativeRelatedBranchReads.push({\n branch: relatedBranchReadState.branch,\n collectionSlug: relatedCollectionSlug,\n relationshipPath,\n })\n }\n\n if (relatedWhere && Object.keys(relatedWhere).length) {\n relatedBranchConstraints.push(\n prefixWherePaths({ prefix: relationshipPath, where: relatedWhere }),\n )\n }\n }\n\n const {\n joins,\n orderBy,\n selectFields,\n where: queryWhere,\n } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n branchScopedWhere ?? {},\n ...relatedBranchConstraints,\n ],\n },\n })\n\n orderBy.pop()\n const table = this.tables[tableName]\n const canonicalIDExpression =\n branchReadState.useBranching && args.field === 'id'\n ? sql`COALESCE(${table._branchDocID}, ${table.id})`\n : undefined\n\n if (canonicalIDExpression) {\n selectFields['_selected'] = canonicalIDExpression.as('_selected') as unknown as GenericColumn\n }\n\n const branchVisibilityWhere = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug: args.collection,\n table,\n })\n : undefined\n const relatedBranchVisibility = nativeRelatedBranchReads.flatMap((relatedBranchRead) => {\n const relatedTable = joins.find(({ queryPath }) =>\n queryPath?.endsWith(`${relatedBranchRead.relationshipPath}._target`),\n )?.table\n\n return relatedTable\n ? [\n buildBranchVisibility({\n adapter: this,\n branch: relatedBranchRead.branch,\n collectionSlug: relatedBranchRead.collectionSlug,\n table: relatedTable,\n }),\n ]\n : []\n })\n const where = and(queryWhere, branchVisibilityWhere, ...relatedBranchVisibility)\n\n const db = await getTransaction(this, args.req)\n\n const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins)\n const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort\n const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (canonicalIDExpression) {\n query = query.orderBy(canonicalIDOrder(sql`_selected`))\n } else if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: (canonicalIDExpression ?? selectFields['_selected']) as GenericColumn,\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["and","asc","desc","max","sql","getFieldByPath","getLocalizedPaths","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","toSnakeCase","buildBranchVisibility","buildQuery","selectDistinct","getTransaction","DistinctSymbol","prefixWherePaths","prefix","where","prefixedWhere","key","value","Object","entries","includes","toLowerCase","Array","isArray","map","nestedWhere","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","branchReadState","branch","collectionSlug","req","branchScopedWhere","useBranching","relatedBranchConstraints","nativeRelatedBranchReads","fieldPaths","fields","flattenedFields","incomingPath","field","locale","overrideAccess","pathIndex","relatedCollectionSlug","relationshipPath","slice","path","join","relatedBranchReadState","relatedWhere","relatedAccess","push","keys","queryWhere","adapter","sort","equals","pop","table","tables","canonicalIDExpression","_branchDocID","id","branchVisibilityWhere","relatedBranchVisibility","flatMap","relatedBranchRead","relatedTable","find","queryPath","endsWith","db","_order","firstSort","canonicalIDOrder","startsWith","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","_selected","includeRelationships","relationTo","row","json","JSON","parse","each","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
|
package/dist/findGlobal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAezC,eAAO,MAAM,UAAU,EAAE,UAgCxB,CAAA"}
|
package/dist/findGlobal.js
CHANGED
|
@@ -1,19 +1,36 @@
|
|
|
1
|
+
import { branchGlobalNeedsBothRows, pickBranchGlobal, resolveBranch, resolveBranchGlobalQuery, withBranchGlobalSelect } from 'payload';
|
|
1
2
|
import toSnakeCase from 'to-snake-case';
|
|
2
3
|
import { findMany } from './find/findMany.js';
|
|
3
|
-
export const findGlobal = async function findGlobal({ slug, locale, req, select, where }) {
|
|
4
|
+
export const findGlobal = async function findGlobal({ slug, branch, locale, req, select, where }) {
|
|
4
5
|
const globalConfig = this.payload.globals.config.find((config)=>config.slug === slug);
|
|
5
6
|
const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug));
|
|
6
|
-
const
|
|
7
|
+
const needsBoth = branchGlobalNeedsBothRows({
|
|
8
|
+
branch,
|
|
9
|
+
globalSlug: slug,
|
|
10
|
+
req
|
|
11
|
+
});
|
|
12
|
+
const { docs } = await findMany({
|
|
7
13
|
adapter: this,
|
|
8
14
|
fields: globalConfig.flattenedFields,
|
|
9
|
-
limit: 1,
|
|
15
|
+
limit: needsBoth ? 2 : 1,
|
|
10
16
|
locale,
|
|
11
17
|
pagination: false,
|
|
12
18
|
req,
|
|
13
|
-
select
|
|
19
|
+
select: withBranchGlobalSelect({
|
|
20
|
+
branch,
|
|
21
|
+
globalSlug: slug,
|
|
22
|
+
req,
|
|
23
|
+
select
|
|
24
|
+
}),
|
|
14
25
|
tableName,
|
|
15
|
-
where
|
|
26
|
+
where: resolveBranchGlobalQuery({
|
|
27
|
+
branch,
|
|
28
|
+
globalSlug: slug,
|
|
29
|
+
req,
|
|
30
|
+
where
|
|
31
|
+
})
|
|
16
32
|
});
|
|
33
|
+
const doc = needsBoth ? pickBranchGlobal(docs, branch || resolveBranch(req)) : docs[0];
|
|
17
34
|
if (doc) {
|
|
18
35
|
doc.globalType = slug;
|
|
19
36
|
return doc;
|
package/dist/findGlobal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const {\n
|
|
1
|
+
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport {\n branchGlobalNeedsBothRows,\n pickBranchGlobal,\n resolveBranch,\n resolveBranchGlobalQuery,\n withBranchGlobalSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, branch, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const needsBoth = branchGlobalNeedsBothRows({ branch, globalSlug: slug, req })\n\n const { docs } = await findMany({\n adapter: this,\n fields: globalConfig.flattenedFields,\n limit: needsBoth ? 2 : 1,\n locale,\n pagination: false,\n req,\n select: withBranchGlobalSelect({ branch, globalSlug: slug, req, select }),\n tableName,\n where: resolveBranchGlobalQuery({ branch, globalSlug: slug, req, where }),\n })\n\n const doc = needsBoth\n ? pickBranchGlobal(docs, (branch as string) || resolveBranch(req as never))\n : docs[0]\n\n if (doc) {\n doc.globalType = slug\n return doc\n }\n\n return {}\n}\n"],"names":["branchGlobalNeedsBothRows","pickBranchGlobal","resolveBranch","resolveBranchGlobalQuery","withBranchGlobalSelect","toSnakeCase","findMany","findGlobal","slug","branch","locale","req","select","where","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","needsBoth","globalSlug","docs","adapter","fields","flattenedFields","limit","pagination","doc","globalType"],"mappings":"AAEA,SACEA,yBAAyB,EACzBC,gBAAgB,EAChBC,aAAa,EACbC,wBAAwB,EACxBC,sBAAsB,QACjB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAE5C,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOT,IAAI,KAAKA;IAElF,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAChB,YAAYS,aAAaN,IAAI;IAErE,MAAMc,YAAYtB,0BAA0B;QAAES;QAAQc,YAAYf;QAAMG;IAAI;IAE5E,MAAM,EAAEa,IAAI,EAAE,GAAG,MAAMlB,SAAS;QAC9BmB,SAAS,IAAI;QACbC,QAAQZ,aAAaa,eAAe;QACpCC,OAAON,YAAY,IAAI;QACvBZ;QACAmB,YAAY;QACZlB;QACAC,QAAQR,uBAAuB;YAAEK;YAAQc,YAAYf;YAAMG;YAAKC;QAAO;QACvEO;QACAN,OAAOV,yBAAyB;YAAEM;YAAQc,YAAYf;YAAMG;YAAKE;QAAM;IACzE;IAEA,MAAMiB,MAAMR,YACRrB,iBAAiBuB,MAAM,AAACf,UAAqBP,cAAcS,QAC3Da,IAAI,CAAC,EAAE;IAEX,IAAIM,KAAK;QACPA,IAAIC,UAAU,GAAGvB;QACjB,OAAOsB;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { buildVersionGlobalFields } from 'payload';
|
|
1
|
+
import { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload';
|
|
2
2
|
import toSnakeCase from 'to-snake-case';
|
|
3
3
|
import { findMany } from './find/findMany.js';
|
|
4
|
-
export const findGlobalVersions = async function findGlobalVersions({ global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
4
|
+
export const findGlobalVersions = async function findGlobalVersions({ branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
5
5
|
const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
|
|
6
6
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt';
|
|
7
7
|
const tableName = this.tableNameMap.get(`_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`);
|
|
@@ -17,7 +17,12 @@ export const findGlobalVersions = async function findGlobalVersions({ global, li
|
|
|
17
17
|
select,
|
|
18
18
|
sort,
|
|
19
19
|
tableName,
|
|
20
|
-
where
|
|
20
|
+
where: resolveBranchGlobalVersionQuery({
|
|
21
|
+
branch,
|
|
22
|
+
globalSlug: global,
|
|
23
|
+
req,
|
|
24
|
+
where
|
|
25
|
+
})
|
|
21
26
|
});
|
|
22
27
|
};
|
|
23
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","findMany","findGlobalVersions","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;
|
|
1
|
+
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where: resolveBranchGlobalVersionQuery({ branch, globalSlug: global, req, where }),\n })\n}\n"],"names":["buildVersionGlobalFields","resolveBranchGlobalVersionQuery","toSnakeCase","findMany","findGlobalVersions","branch","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter","globalSlug"],"mappings":"AAEA,SAASA,wBAAwB,EAAEC,+BAA+B,QAAQ,UAAS;AACnF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAEtF,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASf;IAEzB,MAAMO,OAAOC,YAAYQ,aAAaR,YAAY,OAAOA,UAAU;IAEnE,MAAMS,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYc,aAAaK,IAAI,IAAI,IAAI,CAACK,cAAc,EAAE;IAG5D,MAAMC,SAAS3B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,OAAOb,SAAS;QACdyB,SAAS,IAAI;QACbD;QACApB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAU;QACAR,OAAOd,gCAAgC;YAAEI;YAAQwB,YAAYvB;YAAQK;YAAKI;QAAM;IAClF;AACF,EAAC"}
|
package/dist/findOne.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { FindOneArgs, TypeWithID } from 'payload';
|
|
2
2
|
import type { DrizzleAdapter } from './types.js';
|
|
3
|
-
export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
|
|
3
|
+
export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
|
|
4
4
|
//# sourceMappingURL=findOne.d.ts.map
|
package/dist/findOne.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;AAWjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAChD,IAAI,EAAE,cAAc,EACpB,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,GACpF,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAsCnB"}
|
package/dist/findOne.js
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
|
+
import { applyBranchIDProjection, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
|
|
1
2
|
import toSnakeCase from 'to-snake-case';
|
|
2
3
|
import { findMany } from './find/findMany.js';
|
|
3
|
-
export async function findOne({ collection, draftsEnabled, joins, locale, req, select, where }) {
|
|
4
|
+
export async function findOne({ branch, collection, draftsEnabled, joins, locale, req, select, where }) {
|
|
4
5
|
const collectionConfig = this.payload.collections[collection].config;
|
|
5
6
|
const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
|
|
7
|
+
const branchReadState = resolveBranchReadState({
|
|
8
|
+
branch,
|
|
9
|
+
collectionSlug: collection,
|
|
10
|
+
req
|
|
11
|
+
});
|
|
12
|
+
const branchedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
|
|
13
|
+
branch,
|
|
14
|
+
collectionSlug: collection,
|
|
15
|
+
req,
|
|
16
|
+
where
|
|
17
|
+
});
|
|
6
18
|
const { docs } = await findMany({
|
|
7
19
|
adapter: this,
|
|
20
|
+
branchVisibility: branchReadState.useBranching ? {
|
|
21
|
+
branch: branchReadState.branch,
|
|
22
|
+
collectionSlug: collection
|
|
23
|
+
} : undefined,
|
|
8
24
|
collectionSlug: collection,
|
|
9
25
|
draftsEnabled,
|
|
10
26
|
fields: collectionConfig.flattenedFields,
|
|
@@ -14,10 +30,21 @@ export async function findOne({ collection, draftsEnabled, joins, locale, req, s
|
|
|
14
30
|
page: 1,
|
|
15
31
|
pagination: false,
|
|
16
32
|
req,
|
|
17
|
-
select
|
|
33
|
+
select: withBranchIDSelect({
|
|
34
|
+
branch,
|
|
35
|
+
collectionSlug: collection,
|
|
36
|
+
req,
|
|
37
|
+
select
|
|
38
|
+
}),
|
|
18
39
|
sort: undefined,
|
|
19
40
|
tableName,
|
|
20
|
-
where
|
|
41
|
+
where: branchedWhere
|
|
42
|
+
});
|
|
43
|
+
applyBranchIDProjection({
|
|
44
|
+
branch,
|
|
45
|
+
collectionSlug: collection,
|
|
46
|
+
docs: docs,
|
|
47
|
+
req
|
|
21
48
|
});
|
|
22
49
|
return docs?.[0] || null;
|
|
23
50
|
}
|
package/dist/findOne.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { docs } = await findMany({\n adapter: this,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select,\n sort: undefined,\n tableName,\n where,\n })\n\n return docs?.[0] || null\n}\n"],"names":["toSnakeCase","findMany","findOne","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","docs","adapter","
|
|
1
|
+
{"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } from 'payload'\n\nimport {\n applyBranchIDProjection,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchReadState = resolveBranchReadState({ branch, collectionSlug: collection, req })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({ branch, collectionSlug: collection, req, where })\n\n const { docs } = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collection }\n : undefined,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select: withBranchIDSelect({ branch, collectionSlug: collection, req, select }),\n sort: undefined,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collection,\n docs: docs as Record<string, unknown>[],\n req,\n })\n\n return docs?.[0] || null\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","toSnakeCase","findMany","findOne","branch","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","branchReadState","collectionSlug","branchedWhere","useBranching","docs","adapter","branchVisibility","undefined","fields","flattenedFields","limit","page","pagination","sort"],"mappings":"AAEA,SACEA,uBAAuB,EACvBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,eAAeC,QAEpB,EAAEC,MAAM,EAAEC,UAAU,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAe;IAErF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACT,WAAW,CAACU,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACjB,YAAYW,iBAAiBO,IAAI;IAEzE,MAAMC,kBAAkBtB,uBAAuB;QAAEM;QAAQiB,gBAAgBhB;QAAYI;IAAI;IACzF,MAAMa,gBAAgBF,gBAAgBG,YAAY,GAC9CxB,iBAAiBY,SACjB,MAAMd,mBAAmB;QAAEO;QAAQiB,gBAAgBhB;QAAYI;QAAKE;IAAM;IAE9E,MAAM,EAAEa,IAAI,EAAE,GAAG,MAAMtB,SAAS;QAC9BuB,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAEnB,QAAQgB,gBAAgBhB,MAAM;YAAEiB,gBAAgBhB;QAAW,IAC7DsB;QACJN,gBAAgBhB;QAChBC;QACAsB,QAAQhB,iBAAiBiB,eAAe;QACxCtB;QACAuB,OAAO;QACPtB;QACAuB,MAAM;QACNC,YAAY;QACZvB;QACAC,QAAQV,mBAAmB;YAAEI;YAAQiB,gBAAgBhB;YAAYI;YAAKC;QAAO;QAC7EuB,MAAMN;QACNX;QACAL,OAAOW;IACT;IAEA1B,wBAAwB;QACtBQ;QACAiB,gBAAgBhB;QAChBmB,MAAMA;QACNf;IACF;IAEA,OAAOe,MAAM,CAAC,EAAE,IAAI;AACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,SAAS,CAAA;AAgBtE,eAAO,MAAM,YAAY,EAAE,YAgD1B,CAAA"}
|
package/dist/findVersions.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
import { buildVersionCollectionFields } from 'payload';
|
|
1
|
+
import { buildVersionCollectionFields, projectBranchVersionParents, resolveBranchReadState, resolveBranchVersionHistoryQuery, rewriteBranchVersionParents, withBranchVersionSelect } from 'payload';
|
|
2
2
|
import toSnakeCase from 'to-snake-case';
|
|
3
3
|
import { findMany } from './find/findMany.js';
|
|
4
|
-
export const findVersions = async function findVersions({ collection, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
4
|
+
export const findVersions = async function findVersions({ branch, collection, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
5
5
|
const collectionConfig = this.payload.collections[collection].config;
|
|
6
6
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort;
|
|
7
7
|
const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
|
|
8
8
|
const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true);
|
|
9
|
-
|
|
9
|
+
const branchReadState = resolveBranchReadState({
|
|
10
|
+
branch,
|
|
11
|
+
collectionSlug: collection,
|
|
12
|
+
req
|
|
13
|
+
});
|
|
14
|
+
const branchedWhere = branchReadState.useBranching ? rewriteBranchVersionParents(where) : await resolveBranchVersionHistoryQuery({
|
|
15
|
+
branch,
|
|
16
|
+
collectionSlug: collection,
|
|
17
|
+
req,
|
|
18
|
+
where
|
|
19
|
+
});
|
|
20
|
+
const result = await findMany({
|
|
10
21
|
adapter: this,
|
|
22
|
+
branchVisibility: branchReadState.useBranching ? {
|
|
23
|
+
branch: branchReadState.branch,
|
|
24
|
+
collectionSlug: collection,
|
|
25
|
+
mode: 'history'
|
|
26
|
+
} : undefined,
|
|
11
27
|
fields,
|
|
12
28
|
joins: false,
|
|
13
29
|
limit,
|
|
@@ -15,11 +31,22 @@ export const findVersions = async function findVersions({ collection, limit, loc
|
|
|
15
31
|
page,
|
|
16
32
|
pagination,
|
|
17
33
|
req,
|
|
18
|
-
select
|
|
34
|
+
select: withBranchVersionSelect({
|
|
35
|
+
branch,
|
|
36
|
+
collectionSlug: collection,
|
|
37
|
+
req,
|
|
38
|
+
select
|
|
39
|
+
}),
|
|
19
40
|
sort,
|
|
20
41
|
tableName,
|
|
21
|
-
where
|
|
42
|
+
where: branchedWhere
|
|
22
43
|
});
|
|
44
|
+
if (branchReadState.useBranching) {
|
|
45
|
+
// A branch version hangs off the shadow row, so its `parent` is that row rather
|
|
46
|
+
// than the document the history belongs to.
|
|
47
|
+
projectBranchVersionParents(result.docs);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
23
50
|
};
|
|
24
51
|
|
|
25
52
|
//# sourceMappingURL=findVersions.js.map
|
package/dist/findVersions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { FindVersions, SanitizedCollectionConfig } from 'payload'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { FindVersions, SanitizedCollectionConfig } from 'payload'\n\nimport {\n buildVersionCollectionFields,\n projectBranchVersionParents,\n resolveBranchReadState,\n resolveBranchVersionHistoryQuery,\n rewriteBranchVersionParents,\n withBranchVersionSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findVersions: FindVersions = async function findVersions(\n this: DrizzleAdapter,\n { branch, collection, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const branchReadState = resolveBranchReadState({ branch, collectionSlug: collection, req })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchVersionParents(where)\n : await resolveBranchVersionHistoryQuery({\n branch,\n collectionSlug: collection,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collection, mode: 'history' }\n : undefined,\n fields,\n joins: false,\n limit,\n locale,\n page,\n pagination,\n req,\n select: withBranchVersionSelect({ branch, collectionSlug: collection, req, select }),\n sort,\n tableName,\n where: branchedWhere,\n })\n\n if (branchReadState.useBranching) {\n // A branch version hangs off the shadow row, so its `parent` is that row rather\n // than the document the history belongs to.\n projectBranchVersionParents(result.docs as Record<string, unknown>[])\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","projectBranchVersionParents","resolveBranchReadState","resolveBranchVersionHistoryQuery","rewriteBranchVersionParents","withBranchVersionSelect","toSnakeCase","findMany","findVersions","branch","collection","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","versionsSuffix","fields","branchReadState","collectionSlug","branchedWhere","useBranching","result","adapter","branchVisibility","mode","joins","docs"],"mappings":"AAEA,SACEA,4BAA4B,EAC5BC,2BAA2B,EAC3BC,sBAAsB,EACtBC,gCAAgC,EAChCC,2BAA2B,EAC3BC,uBAAuB,QAClB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAE1F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEtB,YAAYc,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAAS/B,6BAA6B,IAAI,CAACqB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAMY,kBAAkB9B,uBAAuB;QAAEO;QAAQwB,gBAAgBvB;QAAYK;IAAI;IACzF,MAAMmB,gBAAgBF,gBAAgBG,YAAY,GAC9C/B,4BAA4Be,SAC5B,MAAMhB,iCAAiC;QACrCM;QACAwB,gBAAgBvB;QAChBK;QACAI;IACF;IAEJ,MAAMiB,SAAS,MAAM7B,SAAS;QAC5B8B,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAE1B,QAAQuB,gBAAgBvB,MAAM;YAAEwB,gBAAgBvB;YAAY6B,MAAM;QAAU,IAC9Ef;QACJO;QACAS,OAAO;QACP7B;QACAC;QACAC;QACAC;QACAC;QACAC,QAAQX,wBAAwB;YAAEI;YAAQwB,gBAAgBvB;YAAYK;YAAKC;QAAO;QAClFC;QACAS;QACAP,OAAOe;IACT;IAEA,IAAIF,gBAAgBG,YAAY,EAAE;QAChC,gFAAgF;QAChF,4CAA4C;QAC5ClC,4BAA4BmC,OAAOK,IAAI;IACzC;IAEA,OAAOL;AACT,EAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { createGlobal } from './createGlobal.js';
|
|
|
6
6
|
export { createGlobalVersion } from './createGlobalVersion.js';
|
|
7
7
|
export { createTableName } from './createTableName.js';
|
|
8
8
|
export { createVersion } from './createVersion.js';
|
|
9
|
+
export { deleteBranchGlobal } from './deleteBranchGlobal.js';
|
|
9
10
|
export { deleteMany } from './deleteMany.js';
|
|
10
11
|
export { deleteOne } from './deleteOne.js';
|
|
11
12
|
export { deleteVersions } from './deleteVersions.js';
|
|
@@ -24,15 +25,16 @@ export { migrateReset } from './migrateReset.js';
|
|
|
24
25
|
export { migrateStatus } from './migrateStatus.js';
|
|
25
26
|
export { buildQuery } from './queries/buildQuery.js';
|
|
26
27
|
export { operatorMap } from './queries/operatorMap.js';
|
|
27
|
-
export type { Operators } from './queries/operatorMap.js';
|
|
28
|
+
export type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js';
|
|
28
29
|
export { parseParams } from './queries/parseParams.js';
|
|
30
|
+
export { validateOperatorHandlers } from './queries/validateOperatorHandlers.js';
|
|
29
31
|
export { queryDrafts } from './queryDrafts.js';
|
|
30
32
|
export { buildDrizzleRelations } from './schema/buildDrizzleRelations.js';
|
|
31
33
|
export { buildRawSchema } from './schema/buildRawSchema.js';
|
|
32
34
|
export { beginTransaction } from './transactions/beginTransaction.js';
|
|
33
35
|
export { commitTransaction } from './transactions/commitTransaction.js';
|
|
34
36
|
export { rollbackTransaction } from './transactions/rollbackTransaction.js';
|
|
35
|
-
export type { BaseRawColumn, BlocksToJsonMigrator, BuildDrizzleTable, BuildQueryJoinAliases, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
|
|
37
|
+
export type { BaseRawColumn, BlocksToJsonMigrator, BuildDrizzleTable, BuildQueryJoinAliases, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleOperandTransformHandler, DrizzleOperatorHandler, DrizzleOperatorHandlerContext, DrizzleOperatorReplacementHandler, DrizzleQueryConfig, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
|
|
36
38
|
export { updateGlobal } from './updateGlobal.js';
|
|
37
39
|
export { updateGlobalVersion } from './updateGlobalVersion.js';
|
|
38
40
|
export { updateJobs } from './updateJobs.js';
|
|
@@ -40,9 +42,11 @@ export { updateMany } from './updateMany.js';
|
|
|
40
42
|
export { updateOne } from './updateOne.js';
|
|
41
43
|
export { updateVersion } from './updateVersion.js';
|
|
42
44
|
export { upsert } from './upsert.js';
|
|
45
|
+
export { upsertBranchGlobalChange } from './upsertBranchGlobalChange.js';
|
|
43
46
|
export { upsertRow } from './upsertRow/index.js';
|
|
44
47
|
export { buildDynamicPredefinedBlocksToJsonMigration, createBlocksToJsonMigrator, getBlocksToJsonMigrator, } from './utilities/blocksToJsonMigrator.js';
|
|
45
48
|
export { buildCreateMigration } from './utilities/buildCreateMigration.js';
|
|
49
|
+
export { buildDynamicPredefinedSizesToVariantsMigration } from './utilities/buildDynamicPredefinedSizesToVariantsMigration.js';
|
|
46
50
|
export { buildIndexName } from './utilities/buildIndexName.js';
|
|
47
51
|
export { createSchemaGenerator } from './utilities/createSchemaGenerator.js';
|
|
48
52
|
export { executeSchemaHooks } from './utilities/executeSchemaHooks.js';
|