@payloadcms/db-mongodb 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/connect.d.ts.map +1 -1
- package/dist/connect.js +9 -2
- package/dist/connect.js.map +1 -1
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +33 -4
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.d.ts.map +1 -1
- package/dist/countGlobalVersions.js +1 -0
- package/dist/countGlobalVersions.js.map +1 -1
- package/dist/countVersions.d.ts.map +1 -1
- package/dist/countVersions.js +36 -4
- package/dist/countVersions.js.map +1 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +2 -1
- package/dist/create.js.map +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +23 -1
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +9 -2
- package/dist/createMigration.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +17 -4
- 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 +22 -0
- package/dist/deleteBranchGlobal.js.map +1 -0
- package/dist/deleteMany.d.ts.map +1 -1
- package/dist/deleteMany.js +1 -0
- package/dist/deleteMany.js.map +1 -1
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +20 -1
- package/dist/deleteOne.js.map +1 -1
- package/dist/deleteVersions.d.ts.map +1 -1
- package/dist/deleteVersions.js +1 -0
- package/dist/deleteVersions.js.map +1 -1
- package/dist/exports/migration-utils.d.ts +2 -0
- package/dist/exports/migration-utils.d.ts.map +1 -1
- package/dist/exports/migration-utils.js +2 -0
- package/dist/exports/migration-utils.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +44 -8
- package/dist/find.js.map +1 -1
- package/dist/findDistinct.d.ts.map +1 -1
- package/dist/findDistinct.js +115 -12
- package/dist/findDistinct.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +34 -5
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +10 -2
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +43 -5
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +49 -5
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +89 -67
- package/dist/init.js.map +1 -1
- package/dist/migrateFresh.d.ts +4 -2
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +21 -6
- package/dist/migrateFresh.js.map +1 -1
- package/dist/models/buildCollectionSchema.d.ts +8 -2
- package/dist/models/buildCollectionSchema.d.ts.map +1 -1
- package/dist/models/buildCollectionSchema.js +4 -2
- package/dist/models/buildCollectionSchema.js.map +1 -1
- package/dist/models/buildGlobalModel.d.ts +5 -1
- package/dist/models/buildGlobalModel.d.ts.map +1 -1
- package/dist/models/buildGlobalModel.js +34 -3
- package/dist/models/buildGlobalModel.js.map +1 -1
- package/dist/models/buildSchema.d.ts +4 -0
- package/dist/models/buildSchema.d.ts.map +1 -1
- package/dist/models/buildSchema.js +94 -36
- package/dist/models/buildSchema.js.map +1 -1
- package/dist/models/schemaBuildContext.d.ts +21 -0
- package/dist/models/schemaBuildContext.d.ts.map +1 -0
- package/dist/models/schemaBuildContext.js +29 -0
- package/dist/models/schemaBuildContext.js.map +1 -0
- package/dist/predefinedMigrations/branching.d.ts +4 -0
- package/dist/predefinedMigrations/branching.d.ts.map +1 -0
- package/dist/predefinedMigrations/branching.js +9 -0
- package/dist/predefinedMigrations/branching.js.map +1 -0
- package/dist/predefinedMigrations/migrateBranching.d.ts +15 -0
- package/dist/predefinedMigrations/migrateBranching.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateBranching.js +88 -0
- package/dist/predefinedMigrations/migrateBranching.js.map +1 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +4 -4
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
- package/dist/predefinedMigrations/migrateSizesToVariants.d.ts +13 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.js +368 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.js.map +1 -0
- package/dist/predefinedMigrations/sizes-to-variants.d.ts +5 -0
- package/dist/predefinedMigrations/sizes-to-variants.d.ts.map +1 -0
- package/dist/predefinedMigrations/sizes-to-variants.js +8 -0
- package/dist/predefinedMigrations/sizes-to-variants.js.map +1 -0
- package/dist/queries/buildAndOrConditions.d.ts +4 -2
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +3 -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 +204 -0
- package/dist/queries/buildBranchVisibility.js.map +1 -0
- package/dist/queries/buildQuery.d.ts +4 -2
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +3 -1
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/buildSearchParams.d.ts +4 -2
- package/dist/queries/buildSearchParams.d.ts.map +1 -1
- package/dist/queries/buildSearchParams.js +338 -24
- package/dist/queries/buildSearchParams.js.map +1 -1
- package/dist/queries/getBuildQueryPlugin.d.ts +3 -1
- package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
- package/dist/queries/getBuildQueryPlugin.js +3 -1
- package/dist/queries/getBuildQueryPlugin.js.map +1 -1
- package/dist/queries/parseParams.d.ts +4 -2
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +5 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +38 -7
- package/dist/queryDrafts.js.map +1 -1
- package/dist/transactions/commitTransaction.d.ts.map +1 -1
- package/dist/transactions/commitTransaction.js +55 -7
- package/dist/transactions/commitTransaction.js.map +1 -1
- package/dist/transactions/rollbackTransaction.d.ts.map +1 -1
- package/dist/transactions/rollbackTransaction.js +10 -9
- package/dist/transactions/rollbackTransaction.js.map +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +89 -9
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +3 -2
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +71 -14
- package/dist/updateJobs.js.map +1 -1
- package/dist/updateMany.d.ts.map +1 -1
- package/dist/updateMany.js +3 -2
- package/dist/updateMany.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +30 -4
- package/dist/updateOne.js.map +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +3 -2
- package/dist/updateVersion.js.map +1 -1
- package/dist/upsertBranchGlobalChange.d.ts +3 -0
- package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
- package/dist/upsertBranchGlobalChange.js +28 -0
- package/dist/upsertBranchGlobalChange.js.map +1 -0
- package/dist/utilities/aggregatePaginate.d.ts +2 -1
- package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
- package/dist/utilities/aggregatePaginate.js +21 -5
- package/dist/utilities/aggregatePaginate.js.map +1 -1
- package/dist/utilities/buildJoinAggregation.d.ts +4 -2
- package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
- package/dist/utilities/buildJoinAggregation.js +107 -8
- package/dist/utilities/buildJoinAggregation.js.map +1 -1
- package/dist/utilities/resolveJoins.d.ts +6 -2
- package/dist/utilities/resolveJoins.d.ts.map +1 -1
- package/dist/utilities/resolveJoins.js +114 -26
- package/dist/utilities/resolveJoins.js.map +1 -1
- package/dist/utilities/transform.d.ts.map +1 -1
- package/dist/utilities/transform.js +15 -0
- package/dist/utilities/transform.js.map +1 -1
- package/package.json +6 -6
- package/dist/queries/buildSortParam.spec.js +0 -123
- package/dist/queries/buildSortParam.spec.js.map +0 -1
- package/dist/queries/getLocalizedSortProperty.spec.js +0 -215
- package/dist/queries/getLocalizedSortProperty.spec.js.map +0 -1
- package/dist/utilities/transform.spec.js +0 -479
- package/dist/utilities/transform.spec.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/deleteBranchGlobal.ts"],"sourcesContent":["import type { DeleteBranchGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getGlobal } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\n/**\n * Drops a branch's copy of a global.\n *\n * Every global lives in one discriminated collection here, so the branch's copy is a\n * sibling row identified by `globalType` and `_branch` — addressed directly rather than\n * through any generic delete, since no other part of Payload deletes a global.\n */\nexport const deleteBranchGlobal: DeleteBranchGlobal = async function deleteBranchGlobal(\n this: MongooseAdapter,\n { branch, globalSlug, req },\n) {\n const { Model } = getGlobal({ adapter: this, globalSlug })\n\n await Model.deleteOne(\n { _branch: branch, globalType: globalSlug },\n { session: await getSession(this, req) },\n )\n}\n"],"names":["getGlobal","getSession","deleteBranchGlobal","branch","globalSlug","req","Model","adapter","deleteOne","_branch","globalType","session"],"mappings":"AAIA,SAASA,SAAS,QAAQ,2BAA0B;AACpD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD;;;;;;CAMC,GACD,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAE;IAE3B,MAAM,EAAEC,KAAK,EAAE,GAAGN,UAAU;QAAEO,SAAS,IAAI;QAAEH;IAAW;IAExD,MAAME,MAAME,SAAS,CACnB;QAAEC,SAASN;QAAQO,YAAYN;IAAW,GAC1C;QAAEO,SAAS,MAAMV,WAAW,IAAI,EAAEI;IAAK;AAE3C,EAAC"}
|
package/dist/deleteMany.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../src/deleteMany.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAQzC,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../src/deleteMany.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAQzC,eAAO,MAAM,UAAU,EAAE,UAmBxB,CAAA"}
|
package/dist/deleteMany.js
CHANGED
package/dist/deleteMany.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deleteMany.ts"],"sourcesContent":["import type { DeleteOptions } from 'mongodb'\n\nimport { type DeleteMany } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const deleteMany: DeleteMany = async function deleteMany(\n this: MongooseAdapter,\n { collection: collectionSlug, req, where },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n where,\n })\n\n const options: DeleteOptions = {\n session: await getSession(this, req),\n }\n\n await Model.deleteMany(query, options)\n}\n"],"names":["buildQuery","getCollection","getSession","deleteMany","collection","collectionSlug","req","where","collectionConfig","Model","adapter","query","fields","flattenedFields","options","session"],"mappings":"AAMA,SAASA,UAAU,QAAQ,0BAAyB;AACpD,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,YAAYC,cAAc,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE1C,MAAM,EAAEC,gBAAgB,EAAEC,KAAK,EAAE,GAAGR,cAAc;QAAES,SAAS,IAAI;QAAEL;IAAe;IAElF,MAAMM,QAAQ,MAAMX,WAAW;QAC7BU,SAAS,IAAI;QACbL;QACAO,QAAQJ,iBAAiBK,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/deleteMany.ts"],"sourcesContent":["import type { DeleteOptions } from 'mongodb'\n\nimport { type DeleteMany } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const deleteMany: DeleteMany = async function deleteMany(\n this: MongooseAdapter,\n { collection: collectionSlug, req, where },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n req,\n where,\n })\n\n const options: DeleteOptions = {\n session: await getSession(this, req),\n }\n\n await Model.deleteMany(query, options)\n}\n"],"names":["buildQuery","getCollection","getSession","deleteMany","collection","collectionSlug","req","where","collectionConfig","Model","adapter","query","fields","flattenedFields","options","session"],"mappings":"AAMA,SAASA,UAAU,QAAQ,0BAAyB;AACpD,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,YAAYC,cAAc,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE1C,MAAM,EAAEC,gBAAgB,EAAEC,KAAK,EAAE,GAAGR,cAAc;QAAES,SAAS,IAAI;QAAEL;IAAe;IAElF,MAAMM,QAAQ,MAAMX,WAAW;QAC7BU,SAAS,IAAI;QACbL;QACAO,QAAQJ,iBAAiBK,eAAe;QACxCP;QACAC;IACF;IAEA,MAAMO,UAAyB;QAC7BC,SAAS,MAAMb,WAAW,IAAI,EAAEI;IAClC;IAEA,MAAMG,MAAMN,UAAU,CAACQ,OAAOG;AAChC,EAAC"}
|
package/dist/deleteOne.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAYxC,eAAO,MAAM,SAAS,EAAE,SAqDvB,CAAA"}
|
package/dist/deleteOne.js
CHANGED
|
@@ -1,17 +1,36 @@
|
|
|
1
|
+
import { resolveBranchDelete } from 'payload';
|
|
1
2
|
import { buildQuery } from './queries/buildQuery.js';
|
|
2
3
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
3
4
|
import { getCollection } from './utilities/getEntity.js';
|
|
4
5
|
import { getSession } from './utilities/getSession.js';
|
|
5
6
|
import { transform } from './utilities/transform.js';
|
|
6
|
-
export const deleteOne = async function deleteOne({ collection: collectionSlug, req, returning, select, where }) {
|
|
7
|
+
export const deleteOne = async function deleteOne({ branch, collection: collectionSlug, req, returning, select, where }) {
|
|
7
8
|
const { collectionConfig, Model } = getCollection({
|
|
8
9
|
adapter: this,
|
|
9
10
|
collectionSlug
|
|
10
11
|
});
|
|
12
|
+
const branchDelete = await resolveBranchDelete({
|
|
13
|
+
branch,
|
|
14
|
+
collectionSlug,
|
|
15
|
+
req,
|
|
16
|
+
where
|
|
17
|
+
});
|
|
18
|
+
if (branchDelete.tombstoned) {
|
|
19
|
+
return returning === false ? null : branchDelete.doc;
|
|
20
|
+
}
|
|
21
|
+
if (branchDelete.deleteRowID !== undefined) {
|
|
22
|
+
where = {
|
|
23
|
+
id: {
|
|
24
|
+
equals: branchDelete.deleteRowID
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
11
28
|
const query = await buildQuery({
|
|
12
29
|
adapter: this,
|
|
30
|
+
branch,
|
|
13
31
|
collectionSlug,
|
|
14
32
|
fields: collectionConfig.flattenedFields,
|
|
33
|
+
req,
|
|
15
34
|
where
|
|
16
35
|
});
|
|
17
36
|
const options = {
|
package/dist/deleteOne.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { DeleteOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: MongooseAdapter,\n { collection: collectionSlug, req, returning, select, where },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n where,\n })\n\n const options = {\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n select,\n }),\n session: await getSession(this, req),\n } satisfies QueryOptions\n\n if (returning === false) {\n await Model.deleteOne(query, options)?.lean()\n return null\n }\n\n const doc = await Model.findOneAndDelete(query, options)?.lean()\n\n if (!doc) {\n return null\n }\n\n transform({\n adapter: this,\n data: doc,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n return doc\n}\n"],"names":["buildQuery","buildProjectionFromSelect","getCollection","getSession","transform","deleteOne","collection","collectionSlug","req","returning","select","where","collectionConfig","Model","adapter","query","fields","flattenedFields","options","projection","session","lean","
|
|
1
|
+
{"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { DeleteOne } from 'payload'\n\nimport { resolveBranchDelete } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: MongooseAdapter,\n { branch, collection: collectionSlug, req, returning, select, where },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n\n const branchDelete = await resolveBranchDelete({ branch, collectionSlug, req, where })\n\n if (branchDelete.tombstoned) {\n return returning === false ? null : (branchDelete.doc as any)\n }\n\n if (branchDelete.deleteRowID !== undefined) {\n where = { id: { equals: branchDelete.deleteRowID } }\n }\n\n const query = await buildQuery({\n adapter: this,\n branch,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n req,\n where,\n })\n\n const options = {\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n select,\n }),\n session: await getSession(this, req),\n } satisfies QueryOptions\n\n if (returning === false) {\n await Model.deleteOne(query, options)?.lean()\n return null\n }\n\n const doc = await Model.findOneAndDelete(query, options)?.lean()\n\n if (!doc) {\n return null\n }\n\n transform({\n adapter: this,\n data: doc,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n return doc\n}\n"],"names":["resolveBranchDelete","buildQuery","buildProjectionFromSelect","getCollection","getSession","transform","deleteOne","branch","collection","collectionSlug","req","returning","select","where","collectionConfig","Model","adapter","branchDelete","tombstoned","doc","deleteRowID","undefined","id","equals","query","fields","flattenedFields","options","projection","session","lean","findOneAndDelete","data","operation"],"mappings":"AAGA,SAASA,mBAAmB,QAAQ,UAAS;AAI7C,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,MAAM,EAAEC,YAAYC,cAAc,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAErE,MAAM,EAAEC,gBAAgB,EAAEC,KAAK,EAAE,GAAGZ,cAAc;QAAEa,SAAS,IAAI;QAAEP;IAAe;IAElF,MAAMQ,eAAe,MAAMjB,oBAAoB;QAAEO;QAAQE;QAAgBC;QAAKG;IAAM;IAEpF,IAAII,aAAaC,UAAU,EAAE;QAC3B,OAAOP,cAAc,QAAQ,OAAQM,aAAaE,GAAG;IACvD;IAEA,IAAIF,aAAaG,WAAW,KAAKC,WAAW;QAC1CR,QAAQ;YAAES,IAAI;gBAAEC,QAAQN,aAAaG,WAAW;YAAC;QAAE;IACrD;IAEA,MAAMI,QAAQ,MAAMvB,WAAW;QAC7Be,SAAS,IAAI;QACbT;QACAE;QACAgB,QAAQX,iBAAiBY,eAAe;QACxChB;QACAG;IACF;IAEA,MAAMc,UAAU;QACdC,YAAY1B,0BAA0B;YACpCc,SAAS,IAAI;YACbS,QAAQX,iBAAiBY,eAAe;YACxCd;QACF;QACAiB,SAAS,MAAMzB,WAAW,IAAI,EAAEM;IAClC;IAEA,IAAIC,cAAc,OAAO;QACvB,MAAMI,MAAMT,SAAS,CAACkB,OAAOG,UAAUG;QACvC,OAAO;IACT;IAEA,MAAMX,MAAM,MAAMJ,MAAMgB,gBAAgB,CAACP,OAAOG,UAAUG;IAE1D,IAAI,CAACX,KAAK;QACR,OAAO;IACT;IAEAd,UAAU;QACRW,SAAS,IAAI;QACbgB,MAAMb;QACNM,QAAQX,iBAAiBW,MAAM;QAC/BQ,WAAW;IACb;IAEA,OAAOd;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteVersions.d.ts","sourceRoot":"","sources":["../src/deleteVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAA;AAW7D,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"deleteVersions.d.ts","sourceRoot":"","sources":["../src/deleteVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAA;AAW7D,eAAO,MAAM,cAAc,EAAE,cAsC5B,CAAA"}
|
package/dist/deleteVersions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deleteVersions.ts"],"sourcesContent":["import type { DeleteVersions, FlattenedField } from 'payload'\n\nimport { APIError, buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\nimport type { CollectionModel } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { getCollection, getGlobal } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const deleteVersions: DeleteVersions = async function deleteVersions(\n this: MongooseAdapter,\n { collection: collectionSlug, globalSlug, locale, req, where },\n) {\n let fields: FlattenedField[]\n let VersionsModel: CollectionModel\n\n if (globalSlug) {\n const { globalConfig, Model } = getGlobal({\n adapter: this,\n globalSlug,\n versions: true,\n })\n fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n VersionsModel = Model\n } else if (collectionSlug) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n VersionsModel = Model\n } else {\n throw new APIError('Either collection or globalSlug must be passed.')\n }\n\n const query = await buildQuery({\n adapter: this,\n fields,\n locale,\n where,\n })\n\n const session = await getSession(this, req)\n\n await VersionsModel.deleteMany(query, { session })\n}\n"],"names":["APIError","buildVersionCollectionFields","buildVersionGlobalFields","buildQuery","getCollection","getGlobal","getSession","deleteVersions","collection","collectionSlug","globalSlug","locale","req","where","fields","VersionsModel","globalConfig","Model","adapter","versions","payload","config","collectionConfig","query","session","deleteMany"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAK1F,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,aAAa,EAAEC,SAAS,QAAQ,2BAA0B;AACnE,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,iBAAiC,eAAeA,eAE3D,EAAEC,YAAYC,cAAc,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE9D,IAAIC;IACJ,IAAIC;IAEJ,IAAIL,YAAY;QACd,MAAM,EAAEM,YAAY,EAAEC,KAAK,EAAE,GAAGZ,UAAU;YACxCa,SAAS,IAAI;YACbR;YACAS,UAAU;QACZ;QACAL,SAASZ,yBAAyB,IAAI,CAACkB,OAAO,CAACC,MAAM,EAAEL,cAAc;QACrED,gBAAgBE;IAClB,OAAO,IAAIR,gBAAgB;QACzB,MAAM,EAAEa,gBAAgB,EAAEL,KAAK,EAAE,GAAGb,cAAc;YAChDc,SAAS,IAAI;YACbT;YACAU,UAAU;QACZ;QACAL,SAASb,6BAA6B,IAAI,CAACmB,OAAO,CAACC,MAAM,EAAEC,kBAAkB;QAC7EP,gBAAgBE;IAClB,OAAO;QACL,MAAM,IAAIjB,SAAS;IACrB;IAEA,MAAMuB,QAAQ,MAAMpB,WAAW;QAC7Be,SAAS,IAAI;QACbJ;QACAH;
|
|
1
|
+
{"version":3,"sources":["../src/deleteVersions.ts"],"sourcesContent":["import type { DeleteVersions, FlattenedField } from 'payload'\n\nimport { APIError, buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\nimport type { CollectionModel } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { getCollection, getGlobal } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const deleteVersions: DeleteVersions = async function deleteVersions(\n this: MongooseAdapter,\n { collection: collectionSlug, globalSlug, locale, req, where },\n) {\n let fields: FlattenedField[]\n let VersionsModel: CollectionModel\n\n if (globalSlug) {\n const { globalConfig, Model } = getGlobal({\n adapter: this,\n globalSlug,\n versions: true,\n })\n fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n VersionsModel = Model\n } else if (collectionSlug) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n VersionsModel = Model\n } else {\n throw new APIError('Either collection or globalSlug must be passed.')\n }\n\n const query = await buildQuery({\n adapter: this,\n fields,\n locale,\n req,\n where,\n })\n\n const session = await getSession(this, req)\n\n await VersionsModel.deleteMany(query, { session })\n}\n"],"names":["APIError","buildVersionCollectionFields","buildVersionGlobalFields","buildQuery","getCollection","getGlobal","getSession","deleteVersions","collection","collectionSlug","globalSlug","locale","req","where","fields","VersionsModel","globalConfig","Model","adapter","versions","payload","config","collectionConfig","query","session","deleteMany"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAK1F,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,aAAa,EAAEC,SAAS,QAAQ,2BAA0B;AACnE,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,iBAAiC,eAAeA,eAE3D,EAAEC,YAAYC,cAAc,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE9D,IAAIC;IACJ,IAAIC;IAEJ,IAAIL,YAAY;QACd,MAAM,EAAEM,YAAY,EAAEC,KAAK,EAAE,GAAGZ,UAAU;YACxCa,SAAS,IAAI;YACbR;YACAS,UAAU;QACZ;QACAL,SAASZ,yBAAyB,IAAI,CAACkB,OAAO,CAACC,MAAM,EAAEL,cAAc;QACrED,gBAAgBE;IAClB,OAAO,IAAIR,gBAAgB;QACzB,MAAM,EAAEa,gBAAgB,EAAEL,KAAK,EAAE,GAAGb,cAAc;YAChDc,SAAS,IAAI;YACbT;YACAU,UAAU;QACZ;QACAL,SAASb,6BAA6B,IAAI,CAACmB,OAAO,CAACC,MAAM,EAAEC,kBAAkB;QAC7EP,gBAAgBE;IAClB,OAAO;QACL,MAAM,IAAIjB,SAAS;IACrB;IAEA,MAAMuB,QAAQ,MAAMpB,WAAW;QAC7Be,SAAS,IAAI;QACbJ;QACAH;QACAC;QACAC;IACF;IAEA,MAAMW,UAAU,MAAMlB,WAAW,IAAI,EAAEM;IAEvC,MAAMG,cAAcU,UAAU,CAACF,OAAO;QAAEC;IAAQ;AAClD,EAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export { migrateBranching } from '../predefinedMigrations/migrateBranching.js';
|
|
1
2
|
export { localizeStatus, migrateLocalizeStatus, } from '../predefinedMigrations/migrateLocalizeStatus.js';
|
|
2
3
|
export { migrateRelationshipsV2_V3 } from '../predefinedMigrations/migrateRelationshipsV2_V3.js';
|
|
4
|
+
export { migrateSizesToVariants } from '../predefinedMigrations/migrateSizesToVariants.js';
|
|
3
5
|
export { migrateVersionsV1_V2 } from '../predefinedMigrations/migrateVersionsV1_V2.js';
|
|
4
6
|
//# sourceMappingURL=migration-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-utils.d.ts","sourceRoot":"","sources":["../../src/exports/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,qBAAqB,GACtB,MAAM,kDAAkD,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAA;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAA"}
|
|
1
|
+
{"version":3,"file":"migration-utils.d.ts","sourceRoot":"","sources":["../../src/exports/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AAC9E,OAAO,EACL,cAAc,EACd,qBAAqB,GACtB,MAAM,kDAAkD,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAA;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAA;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { migrateBranching } from '../predefinedMigrations/migrateBranching.js';
|
|
1
2
|
export { localizeStatus, migrateLocalizeStatus } from '../predefinedMigrations/migrateLocalizeStatus.js';
|
|
2
3
|
export { migrateRelationshipsV2_V3 } from '../predefinedMigrations/migrateRelationshipsV2_V3.js';
|
|
4
|
+
export { migrateSizesToVariants } from '../predefinedMigrations/migrateSizesToVariants.js';
|
|
3
5
|
export { migrateVersionsV1_V2 } from '../predefinedMigrations/migrateVersionsV1_V2.js';
|
|
4
6
|
|
|
5
7
|
//# sourceMappingURL=migration-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/migration-utils.ts"],"sourcesContent":["export {\n localizeStatus,\n migrateLocalizeStatus,\n} from '../predefinedMigrations/migrateLocalizeStatus.js'\nexport { migrateRelationshipsV2_V3 } from '../predefinedMigrations/migrateRelationshipsV2_V3.js'\nexport { migrateVersionsV1_V2 } from '../predefinedMigrations/migrateVersionsV1_V2.js'\n"],"names":["localizeStatus","migrateLocalizeStatus","migrateRelationshipsV2_V3","migrateVersionsV1_V2"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/exports/migration-utils.ts"],"sourcesContent":["export { migrateBranching } from '../predefinedMigrations/migrateBranching.js'\nexport {\n localizeStatus,\n migrateLocalizeStatus,\n} from '../predefinedMigrations/migrateLocalizeStatus.js'\nexport { migrateRelationshipsV2_V3 } from '../predefinedMigrations/migrateRelationshipsV2_V3.js'\nexport { migrateSizesToVariants } from '../predefinedMigrations/migrateSizesToVariants.js'\nexport { migrateVersionsV1_V2 } from '../predefinedMigrations/migrateVersionsV1_V2.js'\n"],"names":["migrateBranching","localizeStatus","migrateLocalizeStatus","migrateRelationshipsV2_V3","migrateSizesToVariants","migrateVersionsV1_V2"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,8CAA6C;AAC9E,SACEC,cAAc,EACdC,qBAAqB,QAChB,mDAAkD;AACzD,SAASC,yBAAyB,QAAQ,uDAAsD;AAChG,SAASC,sBAAsB,QAAQ,oDAAmD;AAC1F,SAASC,oBAAoB,QAAQ,kDAAiD"}
|
package/dist/find.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAwBnC,eAAO,MAAM,IAAI,EAAE,IA+MlB,CAAA"}
|
package/dist/find.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { flattenWhereToOperators } from 'payload';
|
|
1
|
+
import { applyBranchIDProjection, flattenWhereToOperators, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
|
|
2
|
+
import { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js';
|
|
2
3
|
import { buildQuery } from './queries/buildQuery.js';
|
|
3
4
|
import { buildSortParam } from './queries/buildSortParam.js';
|
|
4
5
|
import { aggregatePaginate } from './utilities/aggregatePaginate.js';
|
|
@@ -8,11 +9,27 @@ import { getCollection } from './utilities/getEntity.js';
|
|
|
8
9
|
import { getSession } from './utilities/getSession.js';
|
|
9
10
|
import { resolveJoins } from './utilities/resolveJoins.js';
|
|
10
11
|
import { transform } from './utilities/transform.js';
|
|
11
|
-
export const find = async function find({ collection: collectionSlug, draftsEnabled, joins = {}, limit = 0, locale, page, pagination, projection, req, select, sort: sortArg, where = {} }) {
|
|
12
|
+
export const find = async function find({ branch, collection: collectionSlug, draftsEnabled, joins = {}, limit = 0, locale, page, pagination, projection, req, select, sort: sortArg, where = {} }) {
|
|
12
13
|
const { collectionConfig, Model } = getCollection({
|
|
13
14
|
adapter: this,
|
|
14
15
|
collectionSlug
|
|
15
16
|
});
|
|
17
|
+
const branchReadState = resolveBranchReadState({
|
|
18
|
+
branch,
|
|
19
|
+
collectionSlug,
|
|
20
|
+
req
|
|
21
|
+
});
|
|
22
|
+
where = branchReadState.useBranching ? rewriteBranchIDs(where) ?? {} : await resolveBranchQuery({
|
|
23
|
+
branch,
|
|
24
|
+
collectionSlug,
|
|
25
|
+
req,
|
|
26
|
+
where
|
|
27
|
+
}) ?? {};
|
|
28
|
+
const branchVisibility = branchReadState.useBranching ? buildBranchVisibilityStages({
|
|
29
|
+
adapter: this,
|
|
30
|
+
branch: branchReadState.branch,
|
|
31
|
+
collectionSlug
|
|
32
|
+
}) : [];
|
|
16
33
|
let hasNearConstraint = false;
|
|
17
34
|
if (where) {
|
|
18
35
|
const constraints = flattenWhereToOperators(where);
|
|
@@ -33,14 +50,16 @@ export const find = async function find({ collection: collectionSlug, draftsEnab
|
|
|
33
50
|
}
|
|
34
51
|
const query = await buildQuery({
|
|
35
52
|
adapter: this,
|
|
53
|
+
branch,
|
|
36
54
|
collectionSlug,
|
|
37
55
|
fields: collectionConfig.flattenedFields,
|
|
38
56
|
locale,
|
|
57
|
+
req,
|
|
39
58
|
where
|
|
40
59
|
});
|
|
41
60
|
const session = await getSession(this, req);
|
|
42
61
|
// useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
|
|
43
|
-
const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
|
|
62
|
+
const useEstimatedCount = !branchVisibility.length && (hasNearConstraint || !query || Object.keys(query).length === 0);
|
|
44
63
|
const paginationOptions = {
|
|
45
64
|
lean: true,
|
|
46
65
|
leanWithId: true,
|
|
@@ -53,11 +72,17 @@ export const find = async function find({ collection: collectionSlug, draftsEnab
|
|
|
53
72
|
sort,
|
|
54
73
|
useEstimatedCount
|
|
55
74
|
};
|
|
56
|
-
|
|
75
|
+
const selectWithBranchID = withBranchIDSelect({
|
|
76
|
+
branch,
|
|
77
|
+
collectionSlug,
|
|
78
|
+
req,
|
|
79
|
+
select
|
|
80
|
+
});
|
|
81
|
+
if (selectWithBranchID) {
|
|
57
82
|
paginationOptions.projection = buildProjectionFromSelect({
|
|
58
83
|
adapter: this,
|
|
59
84
|
fields: collectionConfig.flattenedFields,
|
|
60
|
-
select
|
|
85
|
+
select: selectWithBranchID
|
|
61
86
|
});
|
|
62
87
|
}
|
|
63
88
|
if (this.collation) {
|
|
@@ -106,17 +131,20 @@ export const find = async function find({ collection: collectionSlug, draftsEnab
|
|
|
106
131
|
let result;
|
|
107
132
|
const aggregate = await buildJoinAggregation({
|
|
108
133
|
adapter: this,
|
|
134
|
+
branch,
|
|
109
135
|
collection: collectionSlug,
|
|
110
136
|
collectionConfig,
|
|
111
137
|
draftsEnabled,
|
|
112
138
|
joins,
|
|
113
139
|
locale,
|
|
114
140
|
projection: paginationOptions.projection,
|
|
115
|
-
query
|
|
141
|
+
query,
|
|
142
|
+
req
|
|
116
143
|
});
|
|
117
|
-
if (aggregate || sortAggregation.length > 0) {
|
|
144
|
+
if (aggregate.length > 0 || branchVisibility.length > 0 || sortAggregation.length > 0) {
|
|
118
145
|
result = await aggregatePaginate({
|
|
119
146
|
adapter: this,
|
|
147
|
+
branchVisibility,
|
|
120
148
|
collation: paginationOptions.collation,
|
|
121
149
|
joinAggregation: aggregate,
|
|
122
150
|
limit: paginationOptions.limit,
|
|
@@ -136,10 +164,12 @@ export const find = async function find({ collection: collectionSlug, draftsEnab
|
|
|
136
164
|
if (!this.useJoinAggregations) {
|
|
137
165
|
await resolveJoins({
|
|
138
166
|
adapter: this,
|
|
167
|
+
branch,
|
|
139
168
|
collectionSlug,
|
|
140
169
|
docs: result.docs,
|
|
141
170
|
joins,
|
|
142
|
-
locale
|
|
171
|
+
locale,
|
|
172
|
+
req
|
|
143
173
|
});
|
|
144
174
|
}
|
|
145
175
|
transform({
|
|
@@ -148,6 +178,12 @@ export const find = async function find({ collection: collectionSlug, draftsEnab
|
|
|
148
178
|
fields: collectionConfig.fields,
|
|
149
179
|
operation: 'read'
|
|
150
180
|
});
|
|
181
|
+
applyBranchIDProjection({
|
|
182
|
+
branch,
|
|
183
|
+
collectionSlug,
|
|
184
|
+
docs: result.docs,
|
|
185
|
+
req
|
|
186
|
+
});
|
|
151
187
|
return result;
|
|
152
188
|
};
|
|
153
189
|
|
package/dist/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { PaginateOptions, PipelineStage } from 'mongoose'\nimport type { Find } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { resolveJoins } from './utilities/resolveJoins.js'\nimport { transform } from './utilities/transform.js'\n\nexport const find: Find = async function find(\n this: MongooseAdapter,\n {\n collection: collectionSlug,\n draftsEnabled,\n joins = {},\n limit = 0,\n locale,\n page,\n pagination,\n projection,\n req,\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const sortAggregation: PipelineStage[] = []\n\n let sort\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n sortAggregation,\n timestamps: collectionConfig.timestamps || false,\n })\n }\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n locale,\n where,\n })\n\n const session = await getSession(this, req)\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n options: {\n session,\n },\n page,\n pagination,\n projection,\n sort,\n useEstimatedCount,\n }\n\n if (select) {\n paginationOptions.projection = buildProjectionFromSelect({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n select,\n })\n }\n\n if (this.collation) {\n const localizationConfig = this.payload.config.localization\n const defaultLocale =\n (typeof localizationConfig === 'object' && localizationConfig?.defaultLocale) || 'en'\n\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n hint: { _id: 1 },\n session,\n }),\n )\n }\n } else if (!useEstimatedCount && this.collation) {\n // Workaround for mongoose-paginate-v2 bug: chaining .collation() on countDocuments breaks\n // session context in transactions (mongoose 8.x). Provide custom count function that passes\n // collation as an option instead. See: https://github.com/aravindnc/mongoose-paginate-v2/pull/240\n // TODO: Remove this workaround once mongoose-paginate-v2 is updated with the fix.\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n session,\n }),\n )\n }\n }\n\n if (limit >= 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n\n // Disable pagination if limit is 0\n if (limit === 0) {\n paginationOptions.pagination = false\n }\n }\n\n let result\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n collection: collectionSlug,\n collectionConfig,\n draftsEnabled,\n joins,\n locale,\n projection: paginationOptions.projection,\n query,\n })\n\n if (aggregate || sortAggregation.length > 0) {\n result = await aggregatePaginate({\n adapter: this,\n collation: paginationOptions.collation,\n joinAggregation: aggregate,\n limit: paginationOptions.limit,\n Model,\n page: paginationOptions.page,\n pagination: paginationOptions.pagination,\n projection: paginationOptions.projection,\n query,\n session: paginationOptions.options?.session ?? undefined,\n sort: paginationOptions.sort as object,\n sortAggregation,\n useEstimatedCount: paginationOptions.useEstimatedCount,\n })\n } else {\n result = await Model.paginate(query, paginationOptions)\n }\n\n if (!this.useJoinAggregations) {\n await resolveJoins({\n adapter: this,\n collectionSlug,\n docs: result.docs as Record<string, unknown>[],\n joins,\n locale,\n })\n }\n\n transform({\n adapter: this,\n data: result.docs,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n return result\n}\n"],"names":["flattenWhereToOperators","buildQuery","buildSortParam","aggregatePaginate","buildJoinAggregation","buildProjectionFromSelect","getCollection","getSession","resolveJoins","transform","find","collection","collectionSlug","draftsEnabled","joins","limit","locale","page","pagination","projection","req","select","sort","sortArg","where","collectionConfig","Model","adapter","hasNearConstraint","constraints","some","prop","Object","keys","key","sortAggregation","config","payload","fields","flattenedFields","defaultSort","timestamps","query","session","useEstimatedCount","length","paginationOptions","lean","leanWithId","options","collation","localizationConfig","localization","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","aggregate","joinAggregation","undefined","paginate","useJoinAggregations","docs","data","operation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { PaginateOptions, PipelineStage } from 'mongoose'\nimport type { Find } from 'payload'\n\nimport {\n applyBranchIDProjection,\n flattenWhereToOperators,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { resolveJoins } from './utilities/resolveJoins.js'\nimport { transform } from './utilities/transform.js'\n\nexport const find: Find = async function find(\n this: MongooseAdapter,\n {\n branch,\n collection: collectionSlug,\n draftsEnabled,\n joins = {},\n limit = 0,\n locale,\n page,\n pagination,\n projection,\n req,\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n const branchReadState = resolveBranchReadState({ branch, collectionSlug, req })\n\n where = branchReadState.useBranching\n ? (rewriteBranchIDs(where) ?? {})\n : ((await resolveBranchQuery({ branch, collectionSlug, req, where })) ?? {})\n const branchVisibility = branchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug,\n })\n : []\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const sortAggregation: PipelineStage[] = []\n\n let sort\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n sortAggregation,\n timestamps: collectionConfig.timestamps || false,\n })\n }\n\n const query = await buildQuery({\n adapter: this,\n branch,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n locale,\n req,\n where,\n })\n\n const session = await getSession(this, req)\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n !branchVisibility.length && (hasNearConstraint || !query || Object.keys(query).length === 0)\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n options: {\n session,\n },\n page,\n pagination,\n projection,\n sort,\n useEstimatedCount,\n }\n\n const selectWithBranchID = withBranchIDSelect({ branch, collectionSlug, req, select })\n\n if (selectWithBranchID) {\n paginationOptions.projection = buildProjectionFromSelect({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n select: selectWithBranchID,\n })\n }\n\n if (this.collation) {\n const localizationConfig = this.payload.config.localization\n const defaultLocale =\n (typeof localizationConfig === 'object' && localizationConfig?.defaultLocale) || 'en'\n\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n hint: { _id: 1 },\n session,\n }),\n )\n }\n } else if (!useEstimatedCount && this.collation) {\n // Workaround for mongoose-paginate-v2 bug: chaining .collation() on countDocuments breaks\n // session context in transactions (mongoose 8.x). Provide custom count function that passes\n // collation as an option instead. See: https://github.com/aravindnc/mongoose-paginate-v2/pull/240\n // TODO: Remove this workaround once mongoose-paginate-v2 is updated with the fix.\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n session,\n }),\n )\n }\n }\n\n if (limit >= 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n\n // Disable pagination if limit is 0\n if (limit === 0) {\n paginationOptions.pagination = false\n }\n }\n\n let result\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n branch,\n collection: collectionSlug,\n collectionConfig,\n draftsEnabled,\n joins,\n locale,\n projection: paginationOptions.projection,\n query,\n req,\n })\n\n if (aggregate.length > 0 || branchVisibility.length > 0 || sortAggregation.length > 0) {\n result = await aggregatePaginate({\n adapter: this,\n branchVisibility,\n collation: paginationOptions.collation,\n joinAggregation: aggregate,\n limit: paginationOptions.limit,\n Model,\n page: paginationOptions.page,\n pagination: paginationOptions.pagination,\n projection: paginationOptions.projection,\n query,\n session: paginationOptions.options?.session ?? undefined,\n sort: paginationOptions.sort as object,\n sortAggregation,\n useEstimatedCount: paginationOptions.useEstimatedCount,\n })\n } else {\n result = await Model.paginate(query, paginationOptions)\n }\n\n if (!this.useJoinAggregations) {\n await resolveJoins({\n adapter: this,\n branch,\n collectionSlug,\n docs: result.docs as Record<string, unknown>[],\n joins,\n locale,\n req,\n })\n }\n\n transform({\n adapter: this,\n data: result.docs,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug,\n docs: result.docs as Record<string, unknown>[],\n req,\n })\n\n return result\n}\n"],"names":["applyBranchIDProjection","flattenWhereToOperators","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","buildBranchVisibilityStages","buildQuery","buildSortParam","aggregatePaginate","buildJoinAggregation","buildProjectionFromSelect","getCollection","getSession","resolveJoins","transform","find","branch","collection","collectionSlug","draftsEnabled","joins","limit","locale","page","pagination","projection","req","select","sort","sortArg","where","collectionConfig","Model","adapter","branchReadState","useBranching","branchVisibility","hasNearConstraint","constraints","some","prop","Object","keys","key","sortAggregation","config","payload","fields","flattenedFields","defaultSort","timestamps","query","session","useEstimatedCount","length","paginationOptions","lean","leanWithId","options","selectWithBranchID","collation","localizationConfig","localization","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","aggregate","joinAggregation","undefined","paginate","useJoinAggregations","docs","data","operation"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;AAmD3D,eAAO,MAAM,YAAY,EAAE,YAqW1B,CAAA"}
|
package/dist/findDistinct.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { getFieldByPath } from 'payload';
|
|
1
|
+
import { getFieldByPath, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs } from 'payload';
|
|
2
|
+
import { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js';
|
|
2
3
|
import { buildQuery } from './queries/buildQuery.js';
|
|
3
4
|
import { buildSortParam } from './queries/buildSortParam.js';
|
|
4
5
|
import { getCollection } from './utilities/getEntity.js';
|
|
@@ -29,7 +30,25 @@ export const findDistinct = async function(args) {
|
|
|
29
30
|
adapter: this,
|
|
30
31
|
collectionSlug: args.collection
|
|
31
32
|
});
|
|
32
|
-
const
|
|
33
|
+
const branchReadState = resolveBranchReadState({
|
|
34
|
+
branch: args.branch,
|
|
35
|
+
collectionSlug: args.collection,
|
|
36
|
+
req: args.req
|
|
37
|
+
});
|
|
38
|
+
// Distinct values describe the documents the caller can see, so they are subject to
|
|
39
|
+
// the same branch predicate as a list read. Without it a branch's shadow rows fed
|
|
40
|
+
// main's distinct values and the branch's own edits were invisible in its own.
|
|
41
|
+
const where = branchReadState.useBranching ? rewriteBranchIDs(args.where) ?? {} : await resolveBranchQuery({
|
|
42
|
+
branch: args.branch,
|
|
43
|
+
collectionSlug: args.collection,
|
|
44
|
+
req: args.req,
|
|
45
|
+
where: args.where
|
|
46
|
+
}) ?? {};
|
|
47
|
+
const branchVisibility = branchReadState.useBranching ? buildBranchVisibilityStages({
|
|
48
|
+
adapter: this,
|
|
49
|
+
branch: branchReadState.branch,
|
|
50
|
+
collectionSlug: args.collection
|
|
51
|
+
}) : [];
|
|
33
52
|
let sortAggregation = [];
|
|
34
53
|
const sort = buildSortParam({
|
|
35
54
|
adapter: this,
|
|
@@ -42,9 +61,11 @@ export const findDistinct = async function(args) {
|
|
|
42
61
|
});
|
|
43
62
|
const query = await buildQuery({
|
|
44
63
|
adapter: this,
|
|
64
|
+
branch: args.branch,
|
|
45
65
|
collectionSlug: args.collection,
|
|
46
66
|
fields: collectionConfig.flattenedFields,
|
|
47
67
|
locale: args.locale,
|
|
68
|
+
req: args.req,
|
|
48
69
|
where
|
|
49
70
|
});
|
|
50
71
|
const fieldPathResult = getFieldByPath({
|
|
@@ -53,7 +74,7 @@ export const findDistinct = async function(args) {
|
|
|
53
74
|
includeRelationships: true,
|
|
54
75
|
path: args.field
|
|
55
76
|
});
|
|
56
|
-
let fieldPath = args.field;
|
|
77
|
+
let fieldPath = args.field === 'id' ? '_id' : args.field;
|
|
57
78
|
if (fieldPathResult?.pathHasLocalized && args.locale) {
|
|
58
79
|
fieldPath = fieldPathResult.localizedPath.replace('<locale>', args.locale);
|
|
59
80
|
}
|
|
@@ -114,30 +135,105 @@ export const findDistinct = async function(args) {
|
|
|
114
135
|
sortProperty = sortWithoutRelationPrefix;
|
|
115
136
|
}
|
|
116
137
|
}
|
|
117
|
-
relationLookup =
|
|
138
|
+
relationLookup = [];
|
|
139
|
+
for (const { fieldPath, relationTo } of rels){
|
|
118
140
|
sortAggregation = sortAggregation.filter((each)=>{
|
|
119
141
|
if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {
|
|
120
142
|
return false;
|
|
121
143
|
}
|
|
122
144
|
return true;
|
|
123
145
|
});
|
|
124
|
-
const { Model: foreignModel } = getCollection({
|
|
146
|
+
const { collectionConfig: foreignCollectionConfig, Model: foreignModel } = getCollection({
|
|
125
147
|
adapter: this,
|
|
126
148
|
collectionSlug: relationTo
|
|
127
149
|
});
|
|
128
|
-
|
|
150
|
+
const relatedAccess = args.relatedAccess?.[fieldPath];
|
|
151
|
+
const relatedBranchReadState = resolveBranchReadState({
|
|
152
|
+
branch: args.branch,
|
|
153
|
+
collectionSlug: relationTo,
|
|
154
|
+
req: args.req
|
|
155
|
+
});
|
|
156
|
+
const relatedWhere = relatedBranchReadState.useBranching ? rewriteBranchIDs(relatedAccess) : await resolveBranchQuery({
|
|
157
|
+
branch: args.branch,
|
|
158
|
+
collectionSlug: relationTo,
|
|
159
|
+
req: args.req,
|
|
160
|
+
where: relatedAccess
|
|
161
|
+
});
|
|
162
|
+
const relatedQuery = relatedWhere && Object.keys(relatedWhere).length ? await buildQuery({
|
|
163
|
+
adapter: this,
|
|
164
|
+
branch: args.branch,
|
|
165
|
+
collectionSlug: relationTo,
|
|
166
|
+
fields: foreignCollectionConfig.flattenedFields,
|
|
167
|
+
locale: args.locale,
|
|
168
|
+
req: args.req,
|
|
169
|
+
where: relatedWhere
|
|
170
|
+
}) : null;
|
|
171
|
+
const relatedBranchVisibility = relatedBranchReadState.useBranching ? buildBranchVisibilityStages({
|
|
172
|
+
adapter: this,
|
|
173
|
+
branch: relatedBranchReadState.branch,
|
|
174
|
+
collectionSlug: relationTo
|
|
175
|
+
}) : [];
|
|
176
|
+
relationLookup.push({
|
|
129
177
|
$lookup: {
|
|
130
178
|
as: fieldPath,
|
|
131
|
-
foreignField: '_id',
|
|
132
179
|
from: foreignModel.collection.name,
|
|
133
|
-
|
|
180
|
+
...relatedQuery || relatedBranchVisibility.length ? {
|
|
181
|
+
let: {
|
|
182
|
+
relatedIDs: `$${fieldPath}`
|
|
183
|
+
},
|
|
184
|
+
pipeline: [
|
|
185
|
+
{
|
|
186
|
+
$match: {
|
|
187
|
+
$and: [
|
|
188
|
+
{
|
|
189
|
+
$expr: {
|
|
190
|
+
$cond: {
|
|
191
|
+
else: {
|
|
192
|
+
$eq: [
|
|
193
|
+
{
|
|
194
|
+
$ifNull: [
|
|
195
|
+
'$_branchDocID',
|
|
196
|
+
'$_id'
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
'$$relatedIDs'
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
if: {
|
|
203
|
+
$isArray: '$$relatedIDs'
|
|
204
|
+
},
|
|
205
|
+
then: {
|
|
206
|
+
$in: [
|
|
207
|
+
{
|
|
208
|
+
$ifNull: [
|
|
209
|
+
'$_branchDocID',
|
|
210
|
+
'$_id'
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
'$$relatedIDs'
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
...relatedQuery ? [
|
|
220
|
+
relatedQuery
|
|
221
|
+
] : []
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
...relatedBranchVisibility
|
|
226
|
+
]
|
|
227
|
+
} : {
|
|
228
|
+
foreignField: '_id',
|
|
229
|
+
localField: fieldPath
|
|
230
|
+
}
|
|
134
231
|
}
|
|
135
232
|
});
|
|
136
|
-
|
|
233
|
+
relationLookup.push({
|
|
137
234
|
$unwind: `$${fieldPath}`
|
|
138
235
|
});
|
|
139
|
-
|
|
140
|
-
}, []);
|
|
236
|
+
}
|
|
141
237
|
}
|
|
142
238
|
let $unwind = '';
|
|
143
239
|
let $group = null;
|
|
@@ -160,7 +256,12 @@ export const findDistinct = async function(args) {
|
|
|
160
256
|
}
|
|
161
257
|
if (!$group) {
|
|
162
258
|
$group = {
|
|
163
|
-
_id:
|
|
259
|
+
_id: args.field === 'id' && branchReadState.useBranching ? {
|
|
260
|
+
$ifNull: [
|
|
261
|
+
'$_branchDocID',
|
|
262
|
+
'$_id'
|
|
263
|
+
]
|
|
264
|
+
} : `$${fieldPath}`,
|
|
164
265
|
...sortProperty === fieldPath ? {} : {
|
|
165
266
|
_sort: {
|
|
166
267
|
$max: `$${sortProperty}`
|
|
@@ -172,6 +273,7 @@ export const findDistinct = async function(args) {
|
|
|
172
273
|
{
|
|
173
274
|
$match: query
|
|
174
275
|
},
|
|
276
|
+
...branchVisibility,
|
|
175
277
|
...sortAggregation.length > 0 ? sortAggregation : [],
|
|
176
278
|
...relationLookup?.length ? relationLookup : [],
|
|
177
279
|
...$unwind ? [
|
|
@@ -212,6 +314,7 @@ export const findDistinct = async function(args) {
|
|
|
212
314
|
{
|
|
213
315
|
$match: query
|
|
214
316
|
},
|
|
317
|
+
...branchVisibility,
|
|
215
318
|
...sortAggregation.length > 0 ? sortAggregation : [],
|
|
216
319
|
...relationLookup?.length ? relationLookup : [],
|
|
217
320
|
...$unwind ? [
|