@payloadcms/db-mongodb 3.24.0-canary.a62d86f → 3.24.0-canary.d22403c

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.
Files changed (73) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +2 -5
  3. package/dist/count.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts.map +1 -1
  5. package/dist/countGlobalVersions.js +3 -5
  6. package/dist/countGlobalVersions.js.map +1 -1
  7. package/dist/countVersions.d.ts.map +1 -1
  8. package/dist/countVersions.js +3 -5
  9. package/dist/countVersions.js.map +1 -1
  10. package/dist/deleteMany.d.ts.map +1 -1
  11. package/dist/deleteMany.js +2 -5
  12. package/dist/deleteMany.js.map +1 -1
  13. package/dist/deleteOne.d.ts.map +1 -1
  14. package/dist/deleteOne.js +3 -9
  15. package/dist/deleteOne.js.map +1 -1
  16. package/dist/deleteVersions.d.ts +1 -1
  17. package/dist/deleteVersions.d.ts.map +1 -1
  18. package/dist/deleteVersions.js +2 -5
  19. package/dist/deleteVersions.js.map +1 -1
  20. package/dist/find.d.ts.map +1 -1
  21. package/dist/find.js +2 -5
  22. package/dist/find.js.map +1 -1
  23. package/dist/findGlobal.d.ts.map +1 -1
  24. package/dist/findGlobal.js +3 -6
  25. package/dist/findGlobal.js.map +1 -1
  26. package/dist/findGlobalVersions.d.ts.map +1 -1
  27. package/dist/findGlobalVersions.js +3 -4
  28. package/dist/findGlobalVersions.js.map +1 -1
  29. package/dist/findOne.d.ts.map +1 -1
  30. package/dist/findOne.js +2 -5
  31. package/dist/findOne.js.map +1 -1
  32. package/dist/findVersions.d.ts.map +1 -1
  33. package/dist/findVersions.js +3 -6
  34. package/dist/findVersions.js.map +1 -1
  35. package/dist/init.js +1 -1
  36. package/dist/init.js.map +1 -1
  37. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  38. package/dist/models/buildCollectionSchema.js +2 -2
  39. package/dist/models/buildCollectionSchema.js.map +1 -1
  40. package/dist/models/buildGlobalModel.js +1 -1
  41. package/dist/models/buildGlobalModel.js.map +1 -1
  42. package/dist/queries/buildQuery.d.ts +9 -6
  43. package/dist/queries/buildQuery.d.ts.map +1 -1
  44. package/dist/queries/buildQuery.js +35 -11
  45. package/dist/queries/buildQuery.js.map +1 -1
  46. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  47. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  48. package/dist/queryDrafts.d.ts.map +1 -1
  49. package/dist/queryDrafts.js +3 -6
  50. package/dist/queryDrafts.js.map +1 -1
  51. package/dist/types.d.ts +1 -1
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js.map +1 -1
  54. package/dist/updateGlobal.d.ts.map +1 -1
  55. package/dist/updateGlobal.js +0 -3
  56. package/dist/updateGlobal.js.map +1 -1
  57. package/dist/updateGlobalVersion.d.ts.map +1 -1
  58. package/dist/updateGlobalVersion.js +3 -9
  59. package/dist/updateGlobalVersion.js.map +1 -1
  60. package/dist/updateOne.d.ts.map +1 -1
  61. package/dist/updateOne.js +2 -8
  62. package/dist/updateOne.js.map +1 -1
  63. package/dist/updateVersion.d.ts.map +1 -1
  64. package/dist/updateVersion.js +3 -9
  65. package/dist/updateVersion.js.map +1 -1
  66. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  67. package/dist/utilities/buildJoinAggregation.js +3 -150
  68. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  69. package/package.json +3 -3
  70. package/dist/queries/getBuildQueryPlugin.d.ts +0 -14
  71. package/dist/queries/getBuildQueryPlugin.d.ts.map +0 -1
  72. package/dist/queries/getBuildQueryPlugin.js +0 -40
  73. package/dist/queries/getBuildQueryPlugin.js.map +0 -1
package/dist/updateOne.js CHANGED
@@ -1,4 +1,3 @@
1
- import { buildQuery } from './queries/buildQuery.js';
2
1
  import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
3
2
  import { getSession } from './utilities/getSession.js';
4
3
  import { handleError } from './utilities/handleError.js';
@@ -23,11 +22,9 @@ export const updateOne = async function updateOne({ id, collection, data, locale
23
22
  }),
24
23
  session: await getSession(this, req)
25
24
  };
26
- const query = await buildQuery({
27
- adapter: this,
28
- collectionSlug: collection,
29
- fields: this.payload.collections[collection].config.flattenedFields,
25
+ const query = await Model.buildQuery({
30
26
  locale,
27
+ payload: this.payload,
31
28
  where
32
29
  });
33
30
  let result;
@@ -45,9 +42,6 @@ export const updateOne = async function updateOne({ id, collection, data, locale
45
42
  req
46
43
  });
47
44
  }
48
- if (!result) {
49
- return null;
50
- }
51
45
  result = JSON.parse(JSON.stringify(result));
52
46
  result.id = result._id;
53
47
  result = sanitizeInternalFields(result);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { UpdateOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: MongooseAdapter,\n { id, collection, data, locale, options: optionsArgs = {}, req, select, where: whereArg },\n) {\n const where = id ? { id: { equals: id } } : whereArg\n const Model = this.collections[collection]\n const fields = this.payload.collections[collection].config.fields\n const options: QueryOptions = {\n ...optionsArgs,\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: this.payload.collections[collection].config.flattenedFields,\n select,\n }),\n session: await getSession(this, req),\n }\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug: collection,\n fields: this.payload.collections[collection].config.flattenedFields,\n locale,\n where,\n })\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields,\n })\n\n try {\n result = await Model.findOneAndUpdate(query, sanitizedData, options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n if (!result) {\n return null\n }\n\n result = JSON.parse(JSON.stringify(result))\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["buildQuery","buildProjectionFromSelect","getSession","handleError","sanitizeInternalFields","sanitizeRelationshipIDs","updateOne","id","collection","data","locale","options","optionsArgs","req","select","where","whereArg","equals","Model","collections","fields","payload","config","lean","new","projection","adapter","flattenedFields","session","query","collectionSlug","result","sanitizedData","findOneAndUpdate","error","JSON","parse","stringify","_id"],"mappings":"AAKA,SAASA,UAAU,QAAQ,0BAAyB;AACpD,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,SAASC,cAAc,CAAC,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,OAAOC,QAAQ,EAAE;IAEzF,MAAMD,QAAQR,KAAK;QAAEA,IAAI;YAAEU,QAAQV;QAAG;IAAE,IAAIS;IAC5C,MAAME,QAAQ,IAAI,CAACC,WAAW,CAACX,WAAW;IAC1C,MAAMY,SAAS,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACF,MAAM;IACjE,MAAMT,UAAwB;QAC5B,GAAGC,WAAW;QACdW,MAAM;QACNC,KAAK;QACLC,YAAYxB,0BAA0B;YACpCyB,SAAS,IAAI;YACbN,QAAQ,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACK,eAAe;YACnEb;QACF;QACAc,SAAS,MAAM1B,WAAW,IAAI,EAAEW;IAClC;IAEA,MAAMgB,QAAQ,MAAM7B,WAAW;QAC7B0B,SAAS,IAAI;QACbI,gBAAgBtB;QAChBY,QAAQ,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACK,eAAe;QACnEjB;QACAK;IACF;IAEA,IAAIgB;IAEJ,MAAMC,gBAAgB3B,wBAAwB;QAC5CiB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3Bb;QACAW;IACF;IAEA,IAAI;QACFW,SAAS,MAAMb,MAAMe,gBAAgB,CAACJ,OAAOG,eAAerB;IAC9D,EAAE,OAAOuB,OAAO;QACd/B,YAAY;YAAEK;YAAY0B;YAAOrB;QAAI;IACvC;IAEA,IAAI,CAACkB,QAAQ;QACX,OAAO;IACT;IAEAA,SAASI,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACN;IACnCA,OAAOxB,EAAE,GAAGwB,OAAOO,GAAG;IACtBP,SAAS3B,uBAAuB2B;IAEhC,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { UpdateOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: MongooseAdapter,\n { id, collection, data, locale, options: optionsArgs = {}, req, select, where: whereArg },\n) {\n const where = id ? { id: { equals: id } } : whereArg\n const Model = this.collections[collection]\n const fields = this.payload.collections[collection].config.fields\n const options: QueryOptions = {\n ...optionsArgs,\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: this.payload.collections[collection].config.flattenedFields,\n select,\n }),\n session: await getSession(this, req),\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields,\n })\n\n try {\n result = await Model.findOneAndUpdate(query, sanitizedData, options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n result = JSON.parse(JSON.stringify(result))\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["buildProjectionFromSelect","getSession","handleError","sanitizeInternalFields","sanitizeRelationshipIDs","updateOne","id","collection","data","locale","options","optionsArgs","req","select","where","whereArg","equals","Model","collections","fields","payload","config","lean","new","projection","adapter","flattenedFields","session","query","buildQuery","result","sanitizedData","findOneAndUpdate","error","JSON","parse","stringify","_id"],"mappings":"AAKA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,SAASC,cAAc,CAAC,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,OAAOC,QAAQ,EAAE;IAEzF,MAAMD,QAAQR,KAAK;QAAEA,IAAI;YAAEU,QAAQV;QAAG;IAAE,IAAIS;IAC5C,MAAME,QAAQ,IAAI,CAACC,WAAW,CAACX,WAAW;IAC1C,MAAMY,SAAS,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACF,MAAM;IACjE,MAAMT,UAAwB;QAC5B,GAAGC,WAAW;QACdW,MAAM;QACNC,KAAK;QACLC,YAAYxB,0BAA0B;YACpCyB,SAAS,IAAI;YACbN,QAAQ,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACK,eAAe;YACnEb;QACF;QACAc,SAAS,MAAM1B,WAAW,IAAI,EAAEW;IAClC;IAEA,MAAMgB,QAAQ,MAAMX,MAAMY,UAAU,CAAC;QACnCpB;QACAW,SAAS,IAAI,CAACA,OAAO;QACrBN;IACF;IAEA,IAAIgB;IAEJ,MAAMC,gBAAgB3B,wBAAwB;QAC5CiB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3Bb;QACAW;IACF;IAEA,IAAI;QACFW,SAAS,MAAMb,MAAMe,gBAAgB,CAACJ,OAAOG,eAAerB;IAC9D,EAAE,OAAOuB,OAAO;QACd/B,YAAY;YAAEK;YAAY0B;YAAOrB;QAAI;IACvC;IAEAkB,SAASI,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACN;IACnCA,OAAOxB,EAAE,GAAGwB,OAAOO,GAAG;IACtBP,SAAS3B,uBAAuB2B;IAEhC,OAAOA;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAS1E,eAAO,MAAM,aAAa,EAAE,aA0D3B,CAAA"}
1
+ {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ1E,eAAO,MAAM,aAAa,EAAE,aAmD3B,CAAA"}
@@ -1,5 +1,4 @@
1
1
  import { buildVersionCollectionFields } from 'payload';
2
- import { buildQuery } from './queries/buildQuery.js';
3
2
  import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
4
3
  import { getSession } from './utilities/getSession.js';
5
4
  import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
@@ -11,22 +10,20 @@ export const updateVersion = async function updateVersion({ id, collection, loca
11
10
  }
12
11
  };
13
12
  const fields = buildVersionCollectionFields(this.payload.config, this.payload.collections[collection].config);
14
- const flattenedFields = buildVersionCollectionFields(this.payload.config, this.payload.collections[collection].config, true);
15
13
  const options = {
16
14
  ...optionsArgs,
17
15
  lean: true,
18
16
  new: true,
19
17
  projection: buildProjectionFromSelect({
20
18
  adapter: this,
21
- fields: flattenedFields,
19
+ fields: buildVersionCollectionFields(this.payload.config, this.payload.collections[collection].config, true),
22
20
  select
23
21
  }),
24
22
  session: await getSession(this, req)
25
23
  };
26
- const query = await buildQuery({
27
- adapter: this,
28
- fields: flattenedFields,
24
+ const query = await VersionModel.buildQuery({
29
25
  locale,
26
+ payload: this.payload,
30
27
  where: whereToUse
31
28
  });
32
29
  const sanitizedData = sanitizeRelationshipIDs({
@@ -35,9 +32,6 @@ export const updateVersion = async function updateVersion({ id, collection, loca
35
32
  fields
36
33
  });
37
34
  const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options);
38
- if (!doc) {
39
- return null;
40
- }
41
35
  const result = JSON.parse(JSON.stringify(doc));
42
36
  const verificationToken = doc._verificationToken;
43
37
  // custom id type reset
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\n\nimport { buildVersionCollectionFields, type UpdateVersion } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getSession } from './utilities/getSession.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const updateVersion: UpdateVersion = async function updateVersion(\n this: MongooseAdapter,\n { id, collection, locale, options: optionsArgs = {}, req, select, versionData, where },\n) {\n const VersionModel = this.versions[collection]\n const whereToUse = where || { id: { equals: id } }\n const fields = buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n )\n\n const flattenedFields = buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n true,\n )\n\n const options: QueryOptions = {\n ...optionsArgs,\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: flattenedFields,\n select,\n }),\n session: await getSession(this, req),\n }\n\n const query = await buildQuery({\n adapter: this,\n fields: flattenedFields,\n locale,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields,\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n if (!doc) {\n return null\n }\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionCollectionFields","buildQuery","buildProjectionFromSelect","getSession","sanitizeRelationshipIDs","updateVersion","id","collection","locale","options","optionsArgs","req","select","versionData","where","VersionModel","versions","whereToUse","equals","fields","payload","config","collections","flattenedFields","lean","new","projection","adapter","session","query","sanitizedData","data","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAEA,SAASA,4BAA4B,QAA4B,UAAS;AAI1E,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,MAAM,EAAEC,SAASC,cAAc,CAAC,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAE;IAEtF,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACT,WAAW;IAC9C,MAAMU,aAAaH,SAAS;QAAER,IAAI;YAAEY,QAAQZ;QAAG;IAAE;IACjD,MAAMa,SAASnB,6BACb,IAAI,CAACoB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACE,WAAW,CAACf,WAAW,CAACc,MAAM;IAG7C,MAAME,kBAAkBvB,6BACtB,IAAI,CAACoB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACE,WAAW,CAACf,WAAW,CAACc,MAAM,EAC3C;IAGF,MAAMZ,UAAwB;QAC5B,GAAGC,WAAW;QACdc,MAAM;QACNC,KAAK;QACLC,YAAYxB,0BAA0B;YACpCyB,SAAS,IAAI;YACbR,QAAQI;YACRX;QACF;QACAgB,SAAS,MAAMzB,WAAW,IAAI,EAAEQ;IAClC;IAEA,MAAMkB,QAAQ,MAAM5B,WAAW;QAC7B0B,SAAS,IAAI;QACbR,QAAQI;QACRf;QACAM,OAAOG;IACT;IAEA,MAAMa,gBAAgB1B,wBAAwB;QAC5CiB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3BU,MAAMlB;QACNM;IACF;IAEA,MAAMa,MAAM,MAAMjB,aAAakB,gBAAgB,CAACJ,OAAOC,eAAerB;IAEtE,IAAI,CAACuB,KAAK;QACR,OAAO;IACT;IAEA,MAAME,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAO5B,EAAE,GAAG4B,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\n\nimport { buildVersionCollectionFields, type UpdateVersion } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getSession } from './utilities/getSession.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const updateVersion: UpdateVersion = async function updateVersion(\n this: MongooseAdapter,\n { id, collection, locale, options: optionsArgs = {}, req, select, versionData, where },\n) {\n const VersionModel = this.versions[collection]\n const whereToUse = where || { id: { equals: id } }\n const fields = buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n )\n\n const options: QueryOptions = {\n ...optionsArgs,\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n true,\n ),\n select,\n }),\n session: await getSession(this, req),\n }\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields,\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionCollectionFields","buildProjectionFromSelect","getSession","sanitizeRelationshipIDs","updateVersion","id","collection","locale","options","optionsArgs","req","select","versionData","where","VersionModel","versions","whereToUse","equals","fields","payload","config","collections","lean","new","projection","adapter","session","query","buildQuery","sanitizedData","data","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAEA,SAASA,4BAA4B,QAA4B,UAAS;AAI1E,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,MAAM,EAAEC,SAASC,cAAc,CAAC,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAE;IAEtF,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACT,WAAW;IAC9C,MAAMU,aAAaH,SAAS;QAAER,IAAI;YAAEY,QAAQZ;QAAG;IAAE;IACjD,MAAMa,SAASlB,6BACb,IAAI,CAACmB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACE,WAAW,CAACf,WAAW,CAACc,MAAM;IAG7C,MAAMZ,UAAwB;QAC5B,GAAGC,WAAW;QACda,MAAM;QACNC,KAAK;QACLC,YAAYvB,0BAA0B;YACpCwB,SAAS,IAAI;YACbP,QAAQlB,6BACN,IAAI,CAACmB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACE,WAAW,CAACf,WAAW,CAACc,MAAM,EAC3C;YAEFT;QACF;QACAe,SAAS,MAAMxB,WAAW,IAAI,EAAEQ;IAClC;IAEA,MAAMiB,QAAQ,MAAMb,aAAac,UAAU,CAAC;QAC1CrB;QACAY,SAAS,IAAI,CAACA,OAAO;QACrBN,OAAOG;IACT;IAEA,MAAMa,gBAAgB1B,wBAAwB;QAC5CiB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3BU,MAAMlB;QACNM;IACF;IAEA,MAAMa,MAAM,MAAMjB,aAAakB,gBAAgB,CAACL,OAAOE,eAAerB;IAEtE,MAAMyB,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAO5B,EAAE,GAAG4B,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EACV,cAAc,EAEd,SAAS,EACT,yBAAyB,EACzB,KAAK,EACN,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,KAAK,EAAE,SAAS,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEjC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,kGAU9B,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAkVhE,CAAA"}
1
+ {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAI1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,KAAK,EAAE,SAAS,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEjC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,kGAU9B,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAmLhE,CAAA"}
@@ -1,12 +1,10 @@
1
1
  import { fieldShouldBeLocalized } from 'payload/shared';
2
- import { buildQuery } from '../queries/buildQuery.js';
3
2
  import { buildSortParam } from '../queries/buildSortParam.js';
4
3
  export const buildJoinAggregation = async ({ adapter, collection, collectionConfig, joins, limit, locale, projection, query, versions })=>{
5
- if (Object.keys(collectionConfig.joins).length === 0 && collectionConfig.polymorphicJoins.length == 0 || joins === false) {
4
+ if (Object.keys(collectionConfig.joins).length === 0 || joins === false) {
6
5
  return;
7
6
  }
8
7
  const joinConfig = adapter.payload.collections[collection].config.joins;
9
- const polymorphicJoinsConfig = adapter.payload.collections[collection].config.polymorphicJoins;
10
8
  const aggregate = [
11
9
  {
12
10
  $sort: {
@@ -24,156 +22,16 @@ export const buildJoinAggregation = async ({ adapter, collection, collectionConf
24
22
  $limit: limit
25
23
  });
26
24
  }
27
- for (const join of polymorphicJoinsConfig){
28
- if (projection && !projection[join.joinPath]) {
29
- continue;
30
- }
31
- if (joins?.[join.joinPath] === false) {
32
- continue;
33
- }
34
- const { limit: limitJoin = join.field.defaultLimit ?? 10, page, sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort, where: whereJoin } = joins?.[join.joinPath] || {};
35
- const aggregatedFields = [];
36
- for (const collectionSlug of join.field.collection){
37
- for (const field of adapter.payload.collections[collectionSlug].config.flattenedFields){
38
- if (!aggregatedFields.some((eachField)=>eachField.name === field.name)) {
39
- aggregatedFields.push(field);
40
- }
41
- }
42
- }
43
- const sort = buildSortParam({
44
- config: adapter.payload.config,
45
- fields: aggregatedFields,
46
- locale,
47
- sort: sortJoin,
48
- timestamps: true
49
- });
50
- const $match = await buildQuery({
51
- adapter,
52
- fields: aggregatedFields,
53
- locale,
54
- where: whereJoin
55
- });
56
- const sortProperty = Object.keys(sort)[0];
57
- const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1;
58
- const projectSort = sortProperty !== '_id' && sortProperty !== 'relationTo';
59
- const aliases = [];
60
- const as = join.joinPath;
61
- for (const collectionSlug of join.field.collection){
62
- const alias = `${as}.docs.${collectionSlug}`;
63
- aliases.push(alias);
64
- aggregate.push({
65
- $lookup: {
66
- as: alias,
67
- from: adapter.collections[collectionSlug].collection.name,
68
- let: {
69
- root_id_: '$_id'
70
- },
71
- pipeline: [
72
- {
73
- $addFields: {
74
- relationTo: {
75
- $literal: collectionSlug
76
- }
77
- }
78
- },
79
- {
80
- $match: {
81
- $and: [
82
- {
83
- $expr: {
84
- $eq: [
85
- `$${join.field.on}`,
86
- '$$root_id_'
87
- ]
88
- }
89
- },
90
- $match
91
- ]
92
- }
93
- },
94
- {
95
- $sort: {
96
- [sortProperty]: sortDirection
97
- }
98
- },
99
- {
100
- // Unfortunately, we can't use $skip here because we can lose data, instead we do $slice then
101
- $limit: page ? page * limitJoin : limitJoin
102
- },
103
- {
104
- $project: {
105
- value: '$_id',
106
- ...projectSort && {
107
- [sortProperty]: 1
108
- },
109
- relationTo: 1
110
- }
111
- }
112
- ]
113
- }
114
- });
115
- }
116
- aggregate.push({
117
- $addFields: {
118
- [`${as}.docs`]: {
119
- $concatArrays: aliases.map((alias)=>`$${alias}`)
120
- }
121
- }
122
- });
123
- aggregate.push({
124
- $set: {
125
- [`${as}.docs`]: {
126
- $sortArray: {
127
- input: `$${as}.docs`,
128
- sortBy: {
129
- [sortProperty]: sortDirection
130
- }
131
- }
132
- }
133
- }
134
- });
135
- const sliceValue = page ? [
136
- (page - 1) * limitJoin,
137
- limitJoin
138
- ] : [
139
- limitJoin
140
- ];
141
- aggregate.push({
142
- $set: {
143
- [`${as}.docs`]: {
144
- $slice: [
145
- `$${as}.docs`,
146
- ...sliceValue
147
- ]
148
- }
149
- }
150
- });
151
- aggregate.push({
152
- $addFields: {
153
- [`${as}.hasNextPage`]: {
154
- $gt: [
155
- {
156
- $size: `$${as}.docs`
157
- },
158
- limitJoin || Number.MAX_VALUE
159
- ]
160
- }
161
- }
162
- });
163
- }
164
25
  for (const slug of Object.keys(joinConfig)){
165
26
  for (const join of joinConfig[slug]){
27
+ const joinModel = adapter.collections[join.field.collection];
166
28
  if (projection && !projection[join.joinPath]) {
167
29
  continue;
168
30
  }
169
31
  if (joins?.[join.joinPath] === false) {
170
32
  continue;
171
33
  }
172
- const { limit: limitJoin = join.field.defaultLimit ?? 10, page, sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort, where: whereJoin } = joins?.[join.joinPath] || {};
173
- if (Array.isArray(join.field.collection)) {
174
- throw new Error('Unreachable');
175
- }
176
- const joinModel = adapter.collections[join.field.collection];
34
+ const { limit: limitJoin = join.field.defaultLimit ?? 10, sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort, where: whereJoin } = joins?.[join.joinPath] || {};
177
35
  const sort = buildSortParam({
178
36
  config: adapter.payload.config,
179
37
  fields: adapter.payload.collections[slug].config.flattenedFields,
@@ -198,11 +56,6 @@ export const buildJoinAggregation = async ({ adapter, collection, collectionConf
198
56
  }
199
57
  }
200
58
  ];
201
- if (page) {
202
- pipeline.push({
203
- $skip: (page - 1) * limitJoin
204
- });
205
- }
206
59
  if (limitJoin > 0) {
207
60
  pipeline.push({
208
61
  $limit: limitJoin + 1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/buildJoinAggregation.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type {\n CollectionSlug,\n FlattenedField,\n JoinQuery,\n SanitizedCollectionConfig,\n Where,\n} from 'payload'\n\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { buildSortParam } from '../queries/buildSortParam.js'\n\ntype BuildJoinAggregationArgs = {\n adapter: MongooseAdapter\n collection: CollectionSlug\n collectionConfig: SanitizedCollectionConfig\n joins: JoinQuery\n // the number of docs to get at the top collection level\n limit?: number\n locale: string\n projection?: Record<string, true>\n // the where clause for the top collection\n query?: Where\n /** whether the query is from drafts */\n versions?: boolean\n}\n\nexport const buildJoinAggregation = async ({\n adapter,\n collection,\n collectionConfig,\n joins,\n limit,\n locale,\n projection,\n query,\n versions,\n}: BuildJoinAggregationArgs): Promise<PipelineStage[] | undefined> => {\n if (\n (Object.keys(collectionConfig.joins).length === 0 &&\n collectionConfig.polymorphicJoins.length == 0) ||\n joins === false\n ) {\n return\n }\n\n const joinConfig = adapter.payload.collections[collection].config.joins\n const polymorphicJoinsConfig = adapter.payload.collections[collection].config.polymorphicJoins\n const aggregate: PipelineStage[] = [\n {\n $sort: { createdAt: -1 },\n },\n ]\n\n if (query) {\n aggregate.push({\n $match: query,\n })\n }\n\n if (limit) {\n aggregate.push({\n $limit: limit,\n })\n }\n\n for (const join of polymorphicJoinsConfig) {\n if (projection && !projection[join.joinPath]) {\n continue\n }\n\n if (joins?.[join.joinPath] === false) {\n continue\n }\n\n const {\n limit: limitJoin = join.field.defaultLimit ?? 10,\n page,\n sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort,\n where: whereJoin,\n } = joins?.[join.joinPath] || {}\n\n const aggregatedFields: FlattenedField[] = []\n for (const collectionSlug of join.field.collection) {\n for (const field of adapter.payload.collections[collectionSlug].config.flattenedFields) {\n if (!aggregatedFields.some((eachField) => eachField.name === field.name)) {\n aggregatedFields.push(field)\n }\n }\n }\n\n const sort = buildSortParam({\n config: adapter.payload.config,\n fields: aggregatedFields,\n locale,\n sort: sortJoin,\n timestamps: true,\n })\n\n const $match = await buildQuery({\n adapter,\n fields: aggregatedFields,\n locale,\n where: whereJoin,\n })\n\n const sortProperty = Object.keys(sort)[0]\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n const projectSort = sortProperty !== '_id' && sortProperty !== 'relationTo'\n\n const aliases: string[] = []\n\n const as = join.joinPath\n\n for (const collectionSlug of join.field.collection) {\n const alias = `${as}.docs.${collectionSlug}`\n aliases.push(alias)\n\n aggregate.push({\n $lookup: {\n as: alias,\n from: adapter.collections[collectionSlug].collection.name,\n let: {\n root_id_: '$_id',\n },\n pipeline: [\n {\n $addFields: {\n relationTo: {\n $literal: collectionSlug,\n },\n },\n },\n {\n $match: {\n $and: [\n {\n $expr: {\n $eq: [`$${join.field.on}`, '$$root_id_'],\n },\n },\n $match,\n ],\n },\n },\n {\n $sort: {\n [sortProperty]: sortDirection,\n },\n },\n {\n // Unfortunately, we can't use $skip here because we can lose data, instead we do $slice then\n $limit: page ? page * limitJoin : limitJoin,\n },\n {\n $project: {\n value: '$_id',\n ...(projectSort && {\n [sortProperty]: 1,\n }),\n relationTo: 1,\n },\n },\n ],\n },\n })\n }\n\n aggregate.push({\n $addFields: {\n [`${as}.docs`]: {\n $concatArrays: aliases.map((alias) => `$${alias}`),\n },\n },\n })\n\n aggregate.push({\n $set: {\n [`${as}.docs`]: {\n $sortArray: {\n input: `$${as}.docs`,\n sortBy: {\n [sortProperty]: sortDirection,\n },\n },\n },\n },\n })\n\n const sliceValue = page ? [(page - 1) * limitJoin, limitJoin] : [limitJoin]\n\n aggregate.push({\n $set: {\n [`${as}.docs`]: {\n $slice: [`$${as}.docs`, ...sliceValue],\n },\n },\n })\n\n aggregate.push({\n $addFields: {\n [`${as}.hasNextPage`]: {\n $gt: [{ $size: `$${as}.docs` }, limitJoin || Number.MAX_VALUE],\n },\n },\n })\n }\n\n for (const slug of Object.keys(joinConfig)) {\n for (const join of joinConfig[slug]) {\n if (projection && !projection[join.joinPath]) {\n continue\n }\n\n if (joins?.[join.joinPath] === false) {\n continue\n }\n\n const {\n limit: limitJoin = join.field.defaultLimit ?? 10,\n page,\n sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort,\n where: whereJoin,\n } = joins?.[join.joinPath] || {}\n\n if (Array.isArray(join.field.collection)) {\n throw new Error('Unreachable')\n }\n\n const joinModel = adapter.collections[join.field.collection]\n\n const sort = buildSortParam({\n config: adapter.payload.config,\n fields: adapter.payload.collections[slug].config.flattenedFields,\n locale,\n sort: sortJoin,\n timestamps: true,\n })\n const sortProperty = Object.keys(sort)[0]\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n const $match = await joinModel.buildQuery({\n locale,\n payload: adapter.payload,\n where: whereJoin,\n })\n\n const pipeline: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out>[] = [\n { $match },\n {\n $sort: { [sortProperty]: sortDirection },\n },\n ]\n\n if (page) {\n pipeline.push({\n $skip: (page - 1) * limitJoin,\n })\n }\n\n if (limitJoin > 0) {\n pipeline.push({\n $limit: limitJoin + 1,\n })\n }\n\n let polymorphicSuffix = ''\n if (Array.isArray(join.targetField.relationTo)) {\n polymorphicSuffix = '.value'\n }\n\n if (adapter.payload.config.localization && locale === 'all') {\n adapter.payload.config.localization.localeCodes.forEach((code) => {\n const as = `${versions ? `version.${join.joinPath}` : join.joinPath}${code}`\n\n aggregate.push(\n {\n $lookup: {\n as: `${as}.docs`,\n foreignField: `${join.field.on}${code}${polymorphicSuffix}`,\n from: adapter.collections[slug].collection.name,\n localField: versions ? 'parent' : '_id',\n pipeline,\n },\n },\n {\n $addFields: {\n [`${as}.docs`]: {\n $map: {\n as: 'doc',\n in: '$$doc._id',\n input: `$${as}.docs`,\n },\n }, // Slicing the docs to match the limit\n [`${as}.hasNextPage`]: limitJoin\n ? { $gt: [{ $size: `$${as}.docs` }, limitJoin] }\n : false,\n // Boolean indicating if more docs than limit\n },\n },\n )\n if (limitJoin > 0) {\n aggregate.push({\n $addFields: {\n [`${as}.docs`]: {\n $slice: [`$${as}.docs`, limitJoin],\n },\n },\n })\n }\n })\n } else {\n const localeSuffix =\n fieldShouldBeLocalized({\n field: join.field,\n parentIsLocalized: join.parentIsLocalized,\n }) &&\n adapter.payload.config.localization &&\n locale\n ? `.${locale}`\n : ''\n const as = `${versions ? `version.${join.joinPath}` : join.joinPath}${localeSuffix}`\n\n let foreignField: string\n\n if (join.getForeignPath) {\n foreignField = `${join.getForeignPath({ locale })}${polymorphicSuffix}`\n } else {\n foreignField = `${join.field.on}${polymorphicSuffix}`\n }\n\n aggregate.push(\n {\n $lookup: {\n as: `${as}.docs`,\n foreignField,\n from: adapter.collections[slug].collection.name,\n localField: versions ? 'parent' : '_id',\n pipeline,\n },\n },\n {\n $addFields: {\n [`${as}.docs`]: {\n $map: {\n as: 'doc',\n in: '$$doc._id',\n input: `$${as}.docs`,\n },\n }, // Slicing the docs to match the limit\n [`${as}.hasNextPage`]: {\n $gt: [{ $size: `$${as}.docs` }, limitJoin || Number.MAX_VALUE],\n }, // Boolean indicating if more docs than limit\n },\n },\n )\n if (limitJoin > 0) {\n aggregate.push({\n $addFields: {\n [`${as}.docs`]: {\n $slice: [`$${as}.docs`, limitJoin],\n },\n },\n })\n }\n }\n }\n }\n\n if (projection) {\n aggregate.push({ $project: projection })\n }\n\n return aggregate\n}\n"],"names":["fieldShouldBeLocalized","buildQuery","buildSortParam","buildJoinAggregation","adapter","collection","collectionConfig","joins","limit","locale","projection","query","versions","Object","keys","length","polymorphicJoins","joinConfig","payload","collections","config","polymorphicJoinsConfig","aggregate","$sort","createdAt","push","$match","$limit","join","joinPath","limitJoin","field","defaultLimit","page","sort","sortJoin","defaultSort","where","whereJoin","aggregatedFields","collectionSlug","flattenedFields","some","eachField","name","fields","timestamps","sortProperty","sortDirection","projectSort","aliases","as","alias","$lookup","from","let","root_id_","pipeline","$addFields","relationTo","$literal","$and","$expr","$eq","on","$project","value","$concatArrays","map","$set","$sortArray","input","sortBy","sliceValue","$slice","$gt","$size","Number","MAX_VALUE","slug","Array","isArray","Error","joinModel","$skip","polymorphicSuffix","targetField","localization","localeCodes","forEach","code","foreignField","localField","$map","in","localeSuffix","parentIsLocalized","getForeignPath"],"mappings":"AASA,SAASA,sBAAsB,QAAQ,iBAAgB;AAIvD,SAASC,UAAU,QAAQ,2BAA0B;AACrD,SAASC,cAAc,QAAQ,+BAA8B;AAiB7D,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,OAAO,EACPC,UAAU,EACVC,gBAAgB,EAChBC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,KAAK,EACLC,QAAQ,EACiB;IACzB,IACE,AAACC,OAAOC,IAAI,CAACR,iBAAiBC,KAAK,EAAEQ,MAAM,KAAK,KAC9CT,iBAAiBU,gBAAgB,CAACD,MAAM,IAAI,KAC9CR,UAAU,OACV;QACA;IACF;IAEA,MAAMU,aAAab,QAAQc,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM,CAACb,KAAK;IACvE,MAAMc,yBAAyBjB,QAAQc,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM,CAACJ,gBAAgB;IAC9F,MAAMM,YAA6B;QACjC;YACEC,OAAO;gBAAEC,WAAW,CAAC;YAAE;QACzB;KACD;IAED,IAAIb,OAAO;QACTW,UAAUG,IAAI,CAAC;YACbC,QAAQf;QACV;IACF;IAEA,IAAIH,OAAO;QACTc,UAAUG,IAAI,CAAC;YACbE,QAAQnB;QACV;IACF;IAEA,KAAK,MAAMoB,QAAQP,uBAAwB;QACzC,IAAIX,cAAc,CAACA,UAAU,CAACkB,KAAKC,QAAQ,CAAC,EAAE;YAC5C;QACF;QAEA,IAAItB,OAAO,CAACqB,KAAKC,QAAQ,CAAC,KAAK,OAAO;YACpC;QACF;QAEA,MAAM,EACJrB,OAAOsB,YAAYF,KAAKG,KAAK,CAACC,YAAY,IAAI,EAAE,EAChDC,IAAI,EACJC,MAAMC,WAAWP,KAAKG,KAAK,CAACK,WAAW,IAAI9B,iBAAiB8B,WAAW,EACvEC,OAAOC,SAAS,EACjB,GAAG/B,OAAO,CAACqB,KAAKC,QAAQ,CAAC,IAAI,CAAC;QAE/B,MAAMU,mBAAqC,EAAE;QAC7C,KAAK,MAAMC,kBAAkBZ,KAAKG,KAAK,CAAC1B,UAAU,CAAE;YAClD,KAAK,MAAM0B,SAAS3B,QAAQc,OAAO,CAACC,WAAW,CAACqB,eAAe,CAACpB,MAAM,CAACqB,eAAe,CAAE;gBACtF,IAAI,CAACF,iBAAiBG,IAAI,CAAC,CAACC,YAAcA,UAAUC,IAAI,KAAKb,MAAMa,IAAI,GAAG;oBACxEL,iBAAiBd,IAAI,CAACM;gBACxB;YACF;QACF;QAEA,MAAMG,OAAOhC,eAAe;YAC1BkB,QAAQhB,QAAQc,OAAO,CAACE,MAAM;YAC9ByB,QAAQN;YACR9B;YACAyB,MAAMC;YACNW,YAAY;QACd;QAEA,MAAMpB,SAAS,MAAMzB,WAAW;YAC9BG;YACAyC,QAAQN;YACR9B;YACA4B,OAAOC;QACT;QAEA,MAAMS,eAAelC,OAAOC,IAAI,CAACoB,KAAK,CAAC,EAAE;QACzC,MAAMc,gBAAgBd,IAAI,CAACa,aAAa,KAAK,QAAQ,IAAI,CAAC;QAE1D,MAAME,cAAcF,iBAAiB,SAASA,iBAAiB;QAE/D,MAAMG,UAAoB,EAAE;QAE5B,MAAMC,KAAKvB,KAAKC,QAAQ;QAExB,KAAK,MAAMW,kBAAkBZ,KAAKG,KAAK,CAAC1B,UAAU,CAAE;YAClD,MAAM+C,QAAQ,GAAGD,GAAG,MAAM,EAAEX,gBAAgB;YAC5CU,QAAQzB,IAAI,CAAC2B;YAEb9B,UAAUG,IAAI,CAAC;gBACb4B,SAAS;oBACPF,IAAIC;oBACJE,MAAMlD,QAAQe,WAAW,CAACqB,eAAe,CAACnC,UAAU,CAACuC,IAAI;oBACzDW,KAAK;wBACHC,UAAU;oBACZ;oBACAC,UAAU;wBACR;4BACEC,YAAY;gCACVC,YAAY;oCACVC,UAAUpB;gCACZ;4BACF;wBACF;wBACA;4BACEd,QAAQ;gCACNmC,MAAM;oCACJ;wCACEC,OAAO;4CACLC,KAAK;gDAAC,CAAC,CAAC,EAAEnC,KAAKG,KAAK,CAACiC,EAAE,EAAE;gDAAE;6CAAa;wCAC1C;oCACF;oCACAtC;iCACD;4BACH;wBACF;wBACA;4BACEH,OAAO;gCACL,CAACwB,aAAa,EAAEC;4BAClB;wBACF;wBACA;4BACE,6FAA6F;4BAC7FrB,QAAQM,OAAOA,OAAOH,YAAYA;wBACpC;wBACA;4BACEmC,UAAU;gCACRC,OAAO;gCACP,GAAIjB,eAAe;oCACjB,CAACF,aAAa,EAAE;gCAClB,CAAC;gCACDY,YAAY;4BACd;wBACF;qBACD;gBACH;YACF;QACF;QAEArC,UAAUG,IAAI,CAAC;YACbiC,YAAY;gBACV,CAAC,GAAGP,GAAG,KAAK,CAAC,CAAC,EAAE;oBACdgB,eAAejB,QAAQkB,GAAG,CAAC,CAAChB,QAAU,CAAC,CAAC,EAAEA,OAAO;gBACnD;YACF;QACF;QAEA9B,UAAUG,IAAI,CAAC;YACb4C,MAAM;gBACJ,CAAC,GAAGlB,GAAG,KAAK,CAAC,CAAC,EAAE;oBACdmB,YAAY;wBACVC,OAAO,CAAC,CAAC,EAAEpB,GAAG,KAAK,CAAC;wBACpBqB,QAAQ;4BACN,CAACzB,aAAa,EAAEC;wBAClB;oBACF;gBACF;YACF;QACF;QAEA,MAAMyB,aAAaxC,OAAO;YAAEA,CAAAA,OAAO,CAAA,IAAKH;YAAWA;SAAU,GAAG;YAACA;SAAU;QAE3ER,UAAUG,IAAI,CAAC;YACb4C,MAAM;gBACJ,CAAC,GAAGlB,GAAG,KAAK,CAAC,CAAC,EAAE;oBACduB,QAAQ;wBAAC,CAAC,CAAC,EAAEvB,GAAG,KAAK,CAAC;2BAAKsB;qBAAW;gBACxC;YACF;QACF;QAEAnD,UAAUG,IAAI,CAAC;YACbiC,YAAY;gBACV,CAAC,GAAGP,GAAG,YAAY,CAAC,CAAC,EAAE;oBACrBwB,KAAK;wBAAC;4BAAEC,OAAO,CAAC,CAAC,EAAEzB,GAAG,KAAK,CAAC;wBAAC;wBAAGrB,aAAa+C,OAAOC,SAAS;qBAAC;gBAChE;YACF;QACF;IACF;IAEA,KAAK,MAAMC,QAAQlE,OAAOC,IAAI,CAACG,YAAa;QAC1C,KAAK,MAAMW,QAAQX,UAAU,CAAC8D,KAAK,CAAE;YACnC,IAAIrE,cAAc,CAACA,UAAU,CAACkB,KAAKC,QAAQ,CAAC,EAAE;gBAC5C;YACF;YAEA,IAAItB,OAAO,CAACqB,KAAKC,QAAQ,CAAC,KAAK,OAAO;gBACpC;YACF;YAEA,MAAM,EACJrB,OAAOsB,YAAYF,KAAKG,KAAK,CAACC,YAAY,IAAI,EAAE,EAChDC,IAAI,EACJC,MAAMC,WAAWP,KAAKG,KAAK,CAACK,WAAW,IAAI9B,iBAAiB8B,WAAW,EACvEC,OAAOC,SAAS,EACjB,GAAG/B,OAAO,CAACqB,KAAKC,QAAQ,CAAC,IAAI,CAAC;YAE/B,IAAImD,MAAMC,OAAO,CAACrD,KAAKG,KAAK,CAAC1B,UAAU,GAAG;gBACxC,MAAM,IAAI6E,MAAM;YAClB;YAEA,MAAMC,YAAY/E,QAAQe,WAAW,CAACS,KAAKG,KAAK,CAAC1B,UAAU,CAAC;YAE5D,MAAM6B,OAAOhC,eAAe;gBAC1BkB,QAAQhB,QAAQc,OAAO,CAACE,MAAM;gBAC9ByB,QAAQzC,QAAQc,OAAO,CAACC,WAAW,CAAC4D,KAAK,CAAC3D,MAAM,CAACqB,eAAe;gBAChEhC;gBACAyB,MAAMC;gBACNW,YAAY;YACd;YACA,MAAMC,eAAelC,OAAOC,IAAI,CAACoB,KAAK,CAAC,EAAE;YACzC,MAAMc,gBAAgBd,IAAI,CAACa,aAAa,KAAK,QAAQ,IAAI,CAAC;YAE1D,MAAMrB,SAAS,MAAMyD,UAAUlF,UAAU,CAAC;gBACxCQ;gBACAS,SAASd,QAAQc,OAAO;gBACxBmB,OAAOC;YACT;YAEA,MAAMmB,WAA8E;gBAClF;oBAAE/B;gBAAO;gBACT;oBACEH,OAAO;wBAAE,CAACwB,aAAa,EAAEC;oBAAc;gBACzC;aACD;YAED,IAAIf,MAAM;gBACRwB,SAAShC,IAAI,CAAC;oBACZ2D,OAAO,AAACnD,CAAAA,OAAO,CAAA,IAAKH;gBACtB;YACF;YAEA,IAAIA,YAAY,GAAG;gBACjB2B,SAAShC,IAAI,CAAC;oBACZE,QAAQG,YAAY;gBACtB;YACF;YAEA,IAAIuD,oBAAoB;YACxB,IAAIL,MAAMC,OAAO,CAACrD,KAAK0D,WAAW,CAAC3B,UAAU,GAAG;gBAC9C0B,oBAAoB;YACtB;YAEA,IAAIjF,QAAQc,OAAO,CAACE,MAAM,CAACmE,YAAY,IAAI9E,WAAW,OAAO;gBAC3DL,QAAQc,OAAO,CAACE,MAAM,CAACmE,YAAY,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;oBACvD,MAAMvC,KAAK,GAAGvC,WAAW,CAAC,QAAQ,EAAEgB,KAAKC,QAAQ,EAAE,GAAGD,KAAKC,QAAQ,GAAG6D,MAAM;oBAE5EpE,UAAUG,IAAI,CACZ;wBACE4B,SAAS;4BACPF,IAAI,GAAGA,GAAG,KAAK,CAAC;4BAChBwC,cAAc,GAAG/D,KAAKG,KAAK,CAACiC,EAAE,GAAG0B,OAAOL,mBAAmB;4BAC3D/B,MAAMlD,QAAQe,WAAW,CAAC4D,KAAK,CAAC1E,UAAU,CAACuC,IAAI;4BAC/CgD,YAAYhF,WAAW,WAAW;4BAClC6C;wBACF;oBACF,GACA;wBACEC,YAAY;4BACV,CAAC,GAAGP,GAAG,KAAK,CAAC,CAAC,EAAE;gCACd0C,MAAM;oCACJ1C,IAAI;oCACJ2C,IAAI;oCACJvB,OAAO,CAAC,CAAC,EAAEpB,GAAG,KAAK,CAAC;gCACtB;4BACF;4BACA,CAAC,GAAGA,GAAG,YAAY,CAAC,CAAC,EAAErB,YACnB;gCAAE6C,KAAK;oCAAC;wCAAEC,OAAO,CAAC,CAAC,EAAEzB,GAAG,KAAK,CAAC;oCAAC;oCAAGrB;iCAAU;4BAAC,IAC7C;wBAEN;oBACF;oBAEF,IAAIA,YAAY,GAAG;wBACjBR,UAAUG,IAAI,CAAC;4BACbiC,YAAY;gCACV,CAAC,GAAGP,GAAG,KAAK,CAAC,CAAC,EAAE;oCACduB,QAAQ;wCAAC,CAAC,CAAC,EAAEvB,GAAG,KAAK,CAAC;wCAAErB;qCAAU;gCACpC;4BACF;wBACF;oBACF;gBACF;YACF,OAAO;gBACL,MAAMiE,eACJ/F,uBAAuB;oBACrB+B,OAAOH,KAAKG,KAAK;oBACjBiE,mBAAmBpE,KAAKoE,iBAAiB;gBAC3C,MACA5F,QAAQc,OAAO,CAACE,MAAM,CAACmE,YAAY,IACnC9E,SACI,CAAC,CAAC,EAAEA,QAAQ,GACZ;gBACN,MAAM0C,KAAK,GAAGvC,WAAW,CAAC,QAAQ,EAAEgB,KAAKC,QAAQ,EAAE,GAAGD,KAAKC,QAAQ,GAAGkE,cAAc;gBAEpF,IAAIJ;gBAEJ,IAAI/D,KAAKqE,cAAc,EAAE;oBACvBN,eAAe,GAAG/D,KAAKqE,cAAc,CAAC;wBAAExF;oBAAO,KAAK4E,mBAAmB;gBACzE,OAAO;oBACLM,eAAe,GAAG/D,KAAKG,KAAK,CAACiC,EAAE,GAAGqB,mBAAmB;gBACvD;gBAEA/D,UAAUG,IAAI,CACZ;oBACE4B,SAAS;wBACPF,IAAI,GAAGA,GAAG,KAAK,CAAC;wBAChBwC;wBACArC,MAAMlD,QAAQe,WAAW,CAAC4D,KAAK,CAAC1E,UAAU,CAACuC,IAAI;wBAC/CgD,YAAYhF,WAAW,WAAW;wBAClC6C;oBACF;gBACF,GACA;oBACEC,YAAY;wBACV,CAAC,GAAGP,GAAG,KAAK,CAAC,CAAC,EAAE;4BACd0C,MAAM;gCACJ1C,IAAI;gCACJ2C,IAAI;gCACJvB,OAAO,CAAC,CAAC,EAAEpB,GAAG,KAAK,CAAC;4BACtB;wBACF;wBACA,CAAC,GAAGA,GAAG,YAAY,CAAC,CAAC,EAAE;4BACrBwB,KAAK;gCAAC;oCAAEC,OAAO,CAAC,CAAC,EAAEzB,GAAG,KAAK,CAAC;gCAAC;gCAAGrB,aAAa+C,OAAOC,SAAS;6BAAC;wBAChE;oBACF;gBACF;gBAEF,IAAIhD,YAAY,GAAG;oBACjBR,UAAUG,IAAI,CAAC;wBACbiC,YAAY;4BACV,CAAC,GAAGP,GAAG,KAAK,CAAC,CAAC,EAAE;gCACduB,QAAQ;oCAAC,CAAC,CAAC,EAAEvB,GAAG,KAAK,CAAC;oCAAErB;iCAAU;4BACpC;wBACF;oBACF;gBACF;YACF;QACF;IACF;IAEA,IAAIpB,YAAY;QACdY,UAAUG,IAAI,CAAC;YAAEwC,UAAUvD;QAAW;IACxC;IAEA,OAAOY;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/buildJoinAggregation.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type { CollectionSlug, JoinQuery, SanitizedCollectionConfig, Where } from 'payload'\n\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { buildSortParam } from '../queries/buildSortParam.js'\n\ntype BuildJoinAggregationArgs = {\n adapter: MongooseAdapter\n collection: CollectionSlug\n collectionConfig: SanitizedCollectionConfig\n joins: JoinQuery\n // the number of docs to get at the top collection level\n limit?: number\n locale: string\n projection?: Record<string, true>\n // the where clause for the top collection\n query?: Where\n /** whether the query is from drafts */\n versions?: boolean\n}\n\nexport const buildJoinAggregation = async ({\n adapter,\n collection,\n collectionConfig,\n joins,\n limit,\n locale,\n projection,\n query,\n versions,\n}: BuildJoinAggregationArgs): Promise<PipelineStage[] | undefined> => {\n if (Object.keys(collectionConfig.joins).length === 0 || joins === false) {\n return\n }\n\n const joinConfig = adapter.payload.collections[collection].config.joins\n const aggregate: PipelineStage[] = [\n {\n $sort: { createdAt: -1 },\n },\n ]\n\n if (query) {\n aggregate.push({\n $match: query,\n })\n }\n\n if (limit) {\n aggregate.push({\n $limit: limit,\n })\n }\n\n for (const slug of Object.keys(joinConfig)) {\n for (const join of joinConfig[slug]) {\n const joinModel = adapter.collections[join.field.collection]\n\n if (projection && !projection[join.joinPath]) {\n continue\n }\n\n if (joins?.[join.joinPath] === false) {\n continue\n }\n\n const {\n limit: limitJoin = join.field.defaultLimit ?? 10,\n sort: sortJoin = join.field.defaultSort || collectionConfig.defaultSort,\n where: whereJoin,\n } = joins?.[join.joinPath] || {}\n\n const sort = buildSortParam({\n config: adapter.payload.config,\n fields: adapter.payload.collections[slug].config.flattenedFields,\n locale,\n sort: sortJoin,\n timestamps: true,\n })\n const sortProperty = Object.keys(sort)[0]\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n const $match = await joinModel.buildQuery({\n locale,\n payload: adapter.payload,\n where: whereJoin,\n })\n\n const pipeline: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out>[] = [\n { $match },\n {\n $sort: { [sortProperty]: sortDirection },\n },\n ]\n\n if (limitJoin > 0) {\n pipeline.push({\n $limit: limitJoin + 1,\n })\n }\n\n let polymorphicSuffix = ''\n if (Array.isArray(join.targetField.relationTo)) {\n polymorphicSuffix = '.value'\n }\n\n if (adapter.payload.config.localization && locale === 'all') {\n adapter.payload.config.localization.localeCodes.forEach((code) => {\n const as = `${versions ? `version.${join.joinPath}` : join.joinPath}${code}`\n\n aggregate.push(\n {\n $lookup: {\n as: `${as}.docs`,\n foreignField: `${join.field.on}${code}${polymorphicSuffix}`,\n from: adapter.collections[slug].collection.name,\n localField: versions ? 'parent' : '_id',\n pipeline,\n },\n },\n {\n $addFields: {\n [`${as}.docs`]: {\n $map: {\n as: 'doc',\n in: '$$doc._id',\n input: `$${as}.docs`,\n },\n }, // Slicing the docs to match the limit\n [`${as}.hasNextPage`]: limitJoin\n ? { $gt: [{ $size: `$${as}.docs` }, limitJoin] }\n : false,\n // Boolean indicating if more docs than limit\n },\n },\n )\n if (limitJoin > 0) {\n aggregate.push({\n $addFields: {\n [`${as}.docs`]: {\n $slice: [`$${as}.docs`, limitJoin],\n },\n },\n })\n }\n })\n } else {\n const localeSuffix =\n fieldShouldBeLocalized({\n field: join.field,\n parentIsLocalized: join.parentIsLocalized,\n }) &&\n adapter.payload.config.localization &&\n locale\n ? `.${locale}`\n : ''\n const as = `${versions ? `version.${join.joinPath}` : join.joinPath}${localeSuffix}`\n\n let foreignField: string\n\n if (join.getForeignPath) {\n foreignField = `${join.getForeignPath({ locale })}${polymorphicSuffix}`\n } else {\n foreignField = `${join.field.on}${polymorphicSuffix}`\n }\n\n aggregate.push(\n {\n $lookup: {\n as: `${as}.docs`,\n foreignField,\n from: adapter.collections[slug].collection.name,\n localField: versions ? 'parent' : '_id',\n pipeline,\n },\n },\n {\n $addFields: {\n [`${as}.docs`]: {\n $map: {\n as: 'doc',\n in: '$$doc._id',\n input: `$${as}.docs`,\n },\n }, // Slicing the docs to match the limit\n [`${as}.hasNextPage`]: {\n $gt: [{ $size: `$${as}.docs` }, limitJoin || Number.MAX_VALUE],\n }, // Boolean indicating if more docs than limit\n },\n },\n )\n if (limitJoin > 0) {\n aggregate.push({\n $addFields: {\n [`${as}.docs`]: {\n $slice: [`$${as}.docs`, limitJoin],\n },\n },\n })\n }\n }\n }\n }\n\n if (projection) {\n aggregate.push({ $project: projection })\n }\n\n return aggregate\n}\n"],"names":["fieldShouldBeLocalized","buildSortParam","buildJoinAggregation","adapter","collection","collectionConfig","joins","limit","locale","projection","query","versions","Object","keys","length","joinConfig","payload","collections","config","aggregate","$sort","createdAt","push","$match","$limit","slug","join","joinModel","field","joinPath","limitJoin","defaultLimit","sort","sortJoin","defaultSort","where","whereJoin","fields","flattenedFields","timestamps","sortProperty","sortDirection","buildQuery","pipeline","polymorphicSuffix","Array","isArray","targetField","relationTo","localization","localeCodes","forEach","code","as","$lookup","foreignField","on","from","name","localField","$addFields","$map","in","input","$gt","$size","$slice","localeSuffix","parentIsLocalized","getForeignPath","Number","MAX_VALUE","$project"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-mongodb",
3
- "version": "3.24.0-canary.a62d86f",
3
+ "version": "3.24.0-canary.d22403c",
4
4
  "description": "The officially supported MongoDB database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -48,10 +48,10 @@
48
48
  "mongodb": "6.12.0",
49
49
  "mongodb-memory-server": "^10",
50
50
  "@payloadcms/eslint-config": "3.9.0",
51
- "payload": "3.24.0-canary.a62d86f"
51
+ "payload": "3.24.0-canary.d22403c"
52
52
  },
53
53
  "peerDependencies": {
54
- "payload": "3.24.0-canary.a62d86f"
54
+ "payload": "3.24.0-canary.d22403c"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "pnpm build:types && pnpm build:swc",
@@ -1,14 +0,0 @@
1
- import type { FlattenedField, Payload, Where } from 'payload';
2
- type GetBuildQueryPluginArgs = {
3
- collectionSlug?: string;
4
- versionsFields?: FlattenedField[];
5
- };
6
- export type BuildQueryArgs = {
7
- globalSlug?: string;
8
- locale?: string;
9
- payload: Payload;
10
- where: Where;
11
- };
12
- export declare const getBuildQueryPlugin: ({ collectionSlug, versionsFields, }?: GetBuildQueryPluginArgs) => (schema: any) => void;
13
- export {};
14
- //# sourceMappingURL=getBuildQueryPlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBuildQueryPlugin.d.ts","sourceRoot":"","sources":["../../src/queries/getBuildQueryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7D,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAKD,eAAO,MAAM,mBAAmB,yCAG7B,uBAAuB,0BAwCzB,CAAA"}
@@ -1,40 +0,0 @@
1
- import { QueryError } from 'payload';
2
- import { parseParams } from './parseParams.js';
3
- // This plugin asynchronously builds a list of Mongoose query constraints
4
- // which can then be used in subsequent Mongoose queries.
5
- // Deprecated in favor of using simpler buildQuery directly
6
- export const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
7
- return function buildQueryPlugin(schema) {
8
- const modifiedSchema = schema;
9
- async function schemaBuildQuery({ globalSlug, locale, payload, where }) {
10
- let fields = versionsFields;
11
- if (!fields) {
12
- if (globalSlug) {
13
- const globalConfig = payload.globals.config.find(({ slug })=>slug === globalSlug);
14
- fields = globalConfig.flattenedFields;
15
- }
16
- if (collectionSlug) {
17
- const collectionConfig = payload.collections[collectionSlug].config;
18
- fields = collectionConfig.flattenedFields;
19
- }
20
- }
21
- const errors = [];
22
- const result = await parseParams({
23
- collectionSlug,
24
- fields,
25
- globalSlug,
26
- locale,
27
- parentIsLocalized: false,
28
- payload,
29
- where
30
- });
31
- if (errors.length > 0) {
32
- throw new QueryError(errors);
33
- }
34
- return result;
35
- }
36
- modifiedSchema.statics.buildQuery = schemaBuildQuery;
37
- };
38
- };
39
-
40
- //# sourceMappingURL=getBuildQueryPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/queries/getBuildQueryPlugin.ts"],"sourcesContent":["import type { FlattenedField, Payload, Where } from 'payload'\n\nimport { QueryError } from 'payload'\n\nimport { parseParams } from './parseParams.js'\n\ntype GetBuildQueryPluginArgs = {\n collectionSlug?: string\n versionsFields?: FlattenedField[]\n}\n\nexport type BuildQueryArgs = {\n globalSlug?: string\n locale?: string\n payload: Payload\n where: Where\n}\n\n// This plugin asynchronously builds a list of Mongoose query constraints\n// which can then be used in subsequent Mongoose queries.\n// Deprecated in favor of using simpler buildQuery directly\nexport const getBuildQueryPlugin = ({\n collectionSlug,\n versionsFields,\n}: GetBuildQueryPluginArgs = {}) => {\n return function buildQueryPlugin(schema) {\n const modifiedSchema = schema\n async function schemaBuildQuery({\n globalSlug,\n locale,\n payload,\n where,\n }: BuildQueryArgs): Promise<Record<string, unknown>> {\n let fields = versionsFields\n if (!fields) {\n if (globalSlug) {\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n fields = globalConfig.flattenedFields\n }\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug].config\n fields = collectionConfig.flattenedFields\n }\n }\n\n const errors = []\n const result = await parseParams({\n collectionSlug,\n fields,\n globalSlug,\n locale,\n parentIsLocalized: false,\n payload,\n where,\n })\n\n if (errors.length > 0) {\n throw new QueryError(errors)\n }\n\n return result\n }\n modifiedSchema.statics.buildQuery = schemaBuildQuery\n }\n}\n"],"names":["QueryError","parseParams","getBuildQueryPlugin","collectionSlug","versionsFields","buildQueryPlugin","schema","modifiedSchema","schemaBuildQuery","globalSlug","locale","payload","where","fields","globalConfig","globals","config","find","slug","flattenedFields","collectionConfig","collections","errors","result","parentIsLocalized","length","statics","buildQuery"],"mappings":"AAEA,SAASA,UAAU,QAAQ,UAAS;AAEpC,SAASC,WAAW,QAAQ,mBAAkB;AAc9C,yEAAyE;AACzE,yDAAyD;AACzD,2DAA2D;AAC3D,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,cAAc,EACdC,cAAc,EACU,GAAG,CAAC,CAAC;IAC7B,OAAO,SAASC,iBAAiBC,MAAM;QACrC,MAAMC,iBAAiBD;QACvB,eAAeE,iBAAiB,EAC9BC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,KAAK,EACU;YACf,IAAIC,SAAST;YACb,IAAI,CAACS,QAAQ;gBACX,IAAIJ,YAAY;oBACd,MAAMK,eAAeH,QAAQI,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAST;oBACxEI,SAASC,aAAaK,eAAe;gBACvC;gBACA,IAAIhB,gBAAgB;oBAClB,MAAMiB,mBAAmBT,QAAQU,WAAW,CAAClB,eAAe,CAACa,MAAM;oBACnEH,SAASO,iBAAiBD,eAAe;gBAC3C;YACF;YAEA,MAAMG,SAAS,EAAE;YACjB,MAAMC,SAAS,MAAMtB,YAAY;gBAC/BE;gBACAU;gBACAJ;gBACAC;gBACAc,mBAAmB;gBACnBb;gBACAC;YACF;YAEA,IAAIU,OAAOG,MAAM,GAAG,GAAG;gBACrB,MAAM,IAAIzB,WAAWsB;YACvB;YAEA,OAAOC;QACT;QACAhB,eAAemB,OAAO,CAACC,UAAU,GAAGnB;IACtC;AACF,EAAC"}