@payloadcms/db-mongodb 3.0.0-canary.b922438 → 3.0.0-canary.bb00d64

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +7 -3
  3. package/dist/connect.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts +3 -0
  5. package/dist/countGlobalVersions.d.ts.map +1 -0
  6. package/dist/countGlobalVersions.js +33 -0
  7. package/dist/countGlobalVersions.js.map +1 -0
  8. package/dist/countVersions.d.ts +3 -0
  9. package/dist/countVersions.d.ts.map +1 -0
  10. package/dist/countVersions.js +33 -0
  11. package/dist/countVersions.js.map +1 -0
  12. package/dist/create.d.ts.map +1 -1
  13. package/dist/create.js +10 -1
  14. package/dist/create.js.map +1 -1
  15. package/dist/createGlobal.d.ts.map +1 -1
  16. package/dist/createGlobal.js +10 -5
  17. package/dist/createGlobal.js.map +1 -1
  18. package/dist/createGlobalVersion.d.ts +1 -1
  19. package/dist/createGlobalVersion.d.ts.map +1 -1
  20. package/dist/createGlobalVersion.js +13 -4
  21. package/dist/createGlobalVersion.js.map +1 -1
  22. package/dist/createMigration.d.ts.map +1 -1
  23. package/dist/createMigration.js +8 -6
  24. package/dist/createMigration.js.map +1 -1
  25. package/dist/createVersion.d.ts +1 -1
  26. package/dist/createVersion.d.ts.map +1 -1
  27. package/dist/createVersion.js +31 -9
  28. package/dist/createVersion.js.map +1 -1
  29. package/dist/deleteOne.d.ts.map +1 -1
  30. package/dist/deleteOne.js +11 -3
  31. package/dist/deleteOne.js.map +1 -1
  32. package/dist/find.d.ts.map +1 -1
  33. package/dist/find.js +27 -3
  34. package/dist/find.js.map +1 -1
  35. package/dist/findGlobal.d.ts.map +1 -1
  36. package/dist/findGlobal.js +9 -3
  37. package/dist/findGlobal.js.map +1 -1
  38. package/dist/findGlobalVersions.d.ts.map +1 -1
  39. package/dist/findGlobalVersions.js +9 -3
  40. package/dist/findGlobalVersions.js.map +1 -1
  41. package/dist/findOne.d.ts.map +1 -1
  42. package/dist/findOne.js +27 -3
  43. package/dist/findOne.js.map +1 -1
  44. package/dist/findVersions.d.ts.map +1 -1
  45. package/dist/findVersions.js +9 -3
  46. package/dist/findVersions.js.map +1 -1
  47. package/dist/index.d.ts +6 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +15 -6
  50. package/dist/index.js.map +1 -1
  51. package/dist/init.d.ts.map +1 -1
  52. package/dist/init.js +9 -6
  53. package/dist/init.js.map +1 -1
  54. package/dist/models/buildCollectionSchema.d.ts +1 -2
  55. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  56. package/dist/models/buildCollectionSchema.js +16 -4
  57. package/dist/models/buildCollectionSchema.js.map +1 -1
  58. package/dist/models/buildGlobalModel.js +2 -2
  59. package/dist/models/buildGlobalModel.js.map +1 -1
  60. package/dist/models/buildSchema.d.ts +1 -2
  61. package/dist/models/buildSchema.d.ts.map +1 -1
  62. package/dist/models/buildSchema.js +104 -12
  63. package/dist/models/buildSchema.js.map +1 -1
  64. package/dist/queries/buildQuery.d.ts +2 -2
  65. package/dist/queries/buildQuery.d.ts.map +1 -1
  66. package/dist/queries/buildQuery.js +1 -2
  67. package/dist/queries/buildQuery.js.map +1 -1
  68. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  69. package/dist/queries/buildSearchParams.js +19 -11
  70. package/dist/queries/buildSearchParams.js.map +1 -1
  71. package/dist/queries/buildSortParam.d.ts +2 -2
  72. package/dist/queries/buildSortParam.d.ts.map +1 -1
  73. package/dist/queries/buildSortParam.js +26 -17
  74. package/dist/queries/buildSortParam.js.map +1 -1
  75. package/dist/queries/getLocalizedSortProperty.spec.js +1 -1
  76. package/dist/queries/getLocalizedSortProperty.spec.js.map +1 -1
  77. package/dist/queries/parseParams.d.ts.map +1 -1
  78. package/dist/queries/parseParams.js +3 -1
  79. package/dist/queries/parseParams.js.map +1 -1
  80. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  81. package/dist/queries/sanitizeQueryValue.js +145 -26
  82. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  83. package/dist/queryDrafts.d.ts.map +1 -1
  84. package/dist/queryDrafts.js +29 -7
  85. package/dist/queryDrafts.js.map +1 -1
  86. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  87. package/dist/transactions/beginTransaction.js +2 -0
  88. package/dist/transactions/beginTransaction.js.map +1 -1
  89. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  90. package/dist/transactions/commitTransaction.js +3 -1
  91. package/dist/transactions/commitTransaction.js.map +1 -1
  92. package/dist/types.d.ts +7 -4
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/types.js.map +1 -1
  95. package/dist/updateGlobal.d.ts.map +1 -1
  96. package/dist/updateGlobal.js +17 -4
  97. package/dist/updateGlobal.js.map +1 -1
  98. package/dist/updateGlobalVersion.d.ts +2 -2
  99. package/dist/updateGlobalVersion.d.ts.map +1 -1
  100. package/dist/updateGlobalVersion.js +18 -4
  101. package/dist/updateGlobalVersion.js.map +1 -1
  102. package/dist/updateOne.d.ts.map +1 -1
  103. package/dist/updateOne.js +18 -4
  104. package/dist/updateOne.js.map +1 -1
  105. package/dist/updateVersion.d.ts +1 -1
  106. package/dist/updateVersion.d.ts.map +1 -1
  107. package/dist/updateVersion.js +17 -3
  108. package/dist/updateVersion.js.map +1 -1
  109. package/dist/upsert.d.ts +3 -0
  110. package/dist/upsert.d.ts.map +1 -0
  111. package/dist/upsert.js +15 -0
  112. package/dist/upsert.js.map +1 -0
  113. package/dist/utilities/buildJoinAggregation.d.ts +18 -0
  114. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -0
  115. package/dist/utilities/buildJoinAggregation.js +159 -0
  116. package/dist/utilities/buildJoinAggregation.js.map +1 -0
  117. package/dist/utilities/buildProjectionFromSelect.d.ts +8 -0
  118. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -0
  119. package/dist/utilities/buildProjectionFromSelect.js +171 -0
  120. package/dist/utilities/buildProjectionFromSelect.js.map +1 -0
  121. package/dist/utilities/getDBName.d.ts.map +1 -1
  122. package/dist/utilities/getDBName.js +3 -1
  123. package/dist/utilities/getDBName.js.map +1 -1
  124. package/dist/utilities/handleError.js +2 -2
  125. package/dist/utilities/handleError.js.map +1 -1
  126. package/dist/utilities/sanitizeInternalFields.d.ts +1 -2
  127. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  128. package/dist/utilities/sanitizeInternalFields.js +1 -2
  129. package/dist/utilities/sanitizeInternalFields.js.map +1 -1
  130. package/dist/utilities/sanitizeRelationshipIDs.d.ts +9 -0
  131. package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -0
  132. package/dist/utilities/sanitizeRelationshipIDs.js +115 -0
  133. package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -0
  134. package/dist/withSession.d.ts +1 -1
  135. package/dist/withSession.d.ts.map +1 -1
  136. package/dist/withSession.js +5 -3
  137. package/dist/withSession.js.map +1 -1
  138. package/package.json +9 -6
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,OAAO,EAAE,OA0DrB,CAAA"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,OAAO,EAAE,OA8DrB,CAAA"}
package/dist/connect.js CHANGED
@@ -15,7 +15,9 @@ export const connect = async function connect(options = {
15
15
  ...this.connectOptions,
16
16
  useFacet: undefined
17
17
  };
18
- if (hotReload) connectionOptions.autoIndex = false;
18
+ if (hotReload) {
19
+ connectionOptions.autoIndex = false;
20
+ }
19
21
  try {
20
22
  this.connection = (await mongoose.connect(urlToConnect, connectionOptions)).connection;
21
23
  // If we are running a replica set with MongoDB Memory Server,
@@ -41,8 +43,10 @@ export const connect = async function connect(options = {
41
43
  });
42
44
  }
43
45
  } catch (err) {
44
- console.log(err);
45
- this.payload.logger.error(`Error: cannot connect to MongoDB. Details: ${err.message}`, err);
46
+ this.payload.logger.error({
47
+ err,
48
+ msg: `Error: cannot connect to MongoDB. Details: ${err.message}`
49
+ });
46
50
  process.exit(1);
47
51
  }
48
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { ConnectOptions } from 'mongoose'\nimport type { Connect } from 'payload'\n\nimport mongoose from 'mongoose'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const connect: Connect = async function connect(\n this: MongooseAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n if (this.url === false) {\n return\n }\n\n if (typeof this.url !== 'string') {\n throw new Error('Error: missing MongoDB connection URL.')\n }\n\n const urlToConnect = this.url\n\n const connectionOptions: { useFacet: undefined } & ConnectOptions = {\n autoIndex: true,\n ...this.connectOptions,\n useFacet: undefined,\n }\n\n if (hotReload) connectionOptions.autoIndex = false\n\n try {\n this.connection = (await mongoose.connect(urlToConnect, connectionOptions)).connection\n\n // If we are running a replica set with MongoDB Memory Server,\n // wait until the replica set elects a primary before proceeding\n if (this.mongoMemoryServer) {\n await new Promise((resolve) => setTimeout(resolve, 2000))\n }\n\n const client = this.connection.getClient()\n\n if (!client.options.replicaSet) {\n this.transactionOptions = false\n this.beginTransaction = undefined\n }\n\n if (!this.mongoMemoryServer && !hotReload) {\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info('---- DROPPING DATABASE ----')\n await mongoose.connection.dropDatabase()\n this.payload.logger.info('---- DROPPED DATABASE ----')\n }\n }\n\n if (process.env.NODE_ENV === 'production' && this.prodMigrations) {\n await this.migrate({ migrations: this.prodMigrations })\n }\n } catch (err) {\n console.log(err)\n this.payload.logger.error(`Error: cannot connect to MongoDB. Details: ${err.message}`, err)\n process.exit(1)\n }\n}\n"],"names":["mongoose","connect","options","hotReload","url","Error","urlToConnect","connectionOptions","autoIndex","connectOptions","useFacet","undefined","connection","mongoMemoryServer","Promise","resolve","setTimeout","client","getClient","replicaSet","transactionOptions","beginTransaction","process","env","PAYLOAD_DROP_DATABASE","payload","logger","info","dropDatabase","NODE_ENV","prodMigrations","migrate","migrations","err","console","log","error","message","exit"],"mappings":"AAGA,OAAOA,cAAc,WAAU;AAI/B,OAAO,MAAMC,UAAmB,eAAeA,QAE7CC,UAAU;IACRC,WAAW;AACb,CAAC;IAED,MAAM,EAAEA,SAAS,EAAE,GAAGD;IAEtB,IAAI,IAAI,CAACE,GAAG,KAAK,OAAO;QACtB;IACF;IAEA,IAAI,OAAO,IAAI,CAACA,GAAG,KAAK,UAAU;QAChC,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,eAAe,IAAI,CAACF,GAAG;IAE7B,MAAMG,oBAA8D;QAClEC,WAAW;QACX,GAAG,IAAI,CAACC,cAAc;QACtBC,UAAUC;IACZ;IAEA,IAAIR,WAAWI,kBAAkBC,SAAS,GAAG;IAE7C,IAAI;QACF,IAAI,CAACI,UAAU,GAAG,AAAC,CAAA,MAAMZ,SAASC,OAAO,CAACK,cAAcC,kBAAiB,EAAGK,UAAU;QAEtF,8DAA8D;QAC9D,gEAAgE;QAChE,IAAI,IAAI,CAACC,iBAAiB,EAAE;YAC1B,MAAM,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAAS;QACrD;QAEA,MAAME,SAAS,IAAI,CAACL,UAAU,CAACM,SAAS;QAExC,IAAI,CAACD,OAAOf,OAAO,CAACiB,UAAU,EAAE;YAC9B,IAAI,CAACC,kBAAkB,GAAG;YAC1B,IAAI,CAACC,gBAAgB,GAAGV;QAC1B;QAEA,IAAI,CAAC,IAAI,CAACE,iBAAiB,IAAI,CAACV,WAAW;YACzC,IAAImB,QAAQC,GAAG,CAACC,qBAAqB,KAAK,QAAQ;gBAChD,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;gBACzB,MAAM3B,SAASY,UAAU,CAACgB,YAAY;gBACtC,IAAI,CAACH,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;YAC3B;QACF;QAEA,IAAIL,QAAQC,GAAG,CAACM,QAAQ,KAAK,gBAAgB,IAAI,CAACC,cAAc,EAAE;YAChE,MAAM,IAAI,CAACC,OAAO,CAAC;gBAAEC,YAAY,IAAI,CAACF,cAAc;YAAC;QACvD;IACF,EAAE,OAAOG,KAAK;QACZC,QAAQC,GAAG,CAACF;QACZ,IAAI,CAACR,OAAO,CAACC,MAAM,CAACU,KAAK,CAAC,CAAC,2CAA2C,EAAEH,IAAII,OAAO,CAAC,CAAC,EAAEJ;QACvFX,QAAQgB,IAAI,CAAC;IACf;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { ConnectOptions } from 'mongoose'\nimport type { Connect } from 'payload'\n\nimport mongoose from 'mongoose'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const connect: Connect = async function connect(\n this: MongooseAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n if (this.url === false) {\n return\n }\n\n if (typeof this.url !== 'string') {\n throw new Error('Error: missing MongoDB connection URL.')\n }\n\n const urlToConnect = this.url\n\n const connectionOptions: { useFacet: undefined } & ConnectOptions = {\n autoIndex: true,\n ...this.connectOptions,\n useFacet: undefined,\n }\n\n if (hotReload) {\n connectionOptions.autoIndex = false\n }\n\n try {\n this.connection = (await mongoose.connect(urlToConnect, connectionOptions)).connection\n\n // If we are running a replica set with MongoDB Memory Server,\n // wait until the replica set elects a primary before proceeding\n if (this.mongoMemoryServer) {\n await new Promise((resolve) => setTimeout(resolve, 2000))\n }\n\n const client = this.connection.getClient()\n\n if (!client.options.replicaSet) {\n this.transactionOptions = false\n this.beginTransaction = undefined\n }\n\n if (!this.mongoMemoryServer && !hotReload) {\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info('---- DROPPING DATABASE ----')\n await mongoose.connection.dropDatabase()\n this.payload.logger.info('---- DROPPED DATABASE ----')\n }\n }\n\n if (process.env.NODE_ENV === 'production' && this.prodMigrations) {\n await this.migrate({ migrations: this.prodMigrations })\n }\n } catch (err) {\n this.payload.logger.error({\n err,\n msg: `Error: cannot connect to MongoDB. Details: ${err.message}`,\n })\n process.exit(1)\n }\n}\n"],"names":["mongoose","connect","options","hotReload","url","Error","urlToConnect","connectionOptions","autoIndex","connectOptions","useFacet","undefined","connection","mongoMemoryServer","Promise","resolve","setTimeout","client","getClient","replicaSet","transactionOptions","beginTransaction","process","env","PAYLOAD_DROP_DATABASE","payload","logger","info","dropDatabase","NODE_ENV","prodMigrations","migrate","migrations","err","error","msg","message","exit"],"mappings":"AAGA,OAAOA,cAAc,WAAU;AAI/B,OAAO,MAAMC,UAAmB,eAAeA,QAE7CC,UAAU;IACRC,WAAW;AACb,CAAC;IAED,MAAM,EAAEA,SAAS,EAAE,GAAGD;IAEtB,IAAI,IAAI,CAACE,GAAG,KAAK,OAAO;QACtB;IACF;IAEA,IAAI,OAAO,IAAI,CAACA,GAAG,KAAK,UAAU;QAChC,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,eAAe,IAAI,CAACF,GAAG;IAE7B,MAAMG,oBAA8D;QAClEC,WAAW;QACX,GAAG,IAAI,CAACC,cAAc;QACtBC,UAAUC;IACZ;IAEA,IAAIR,WAAW;QACbI,kBAAkBC,SAAS,GAAG;IAChC;IAEA,IAAI;QACF,IAAI,CAACI,UAAU,GAAG,AAAC,CAAA,MAAMZ,SAASC,OAAO,CAACK,cAAcC,kBAAiB,EAAGK,UAAU;QAEtF,8DAA8D;QAC9D,gEAAgE;QAChE,IAAI,IAAI,CAACC,iBAAiB,EAAE;YAC1B,MAAM,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAAS;QACrD;QAEA,MAAME,SAAS,IAAI,CAACL,UAAU,CAACM,SAAS;QAExC,IAAI,CAACD,OAAOf,OAAO,CAACiB,UAAU,EAAE;YAC9B,IAAI,CAACC,kBAAkB,GAAG;YAC1B,IAAI,CAACC,gBAAgB,GAAGV;QAC1B;QAEA,IAAI,CAAC,IAAI,CAACE,iBAAiB,IAAI,CAACV,WAAW;YACzC,IAAImB,QAAQC,GAAG,CAACC,qBAAqB,KAAK,QAAQ;gBAChD,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;gBACzB,MAAM3B,SAASY,UAAU,CAACgB,YAAY;gBACtC,IAAI,CAACH,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;YAC3B;QACF;QAEA,IAAIL,QAAQC,GAAG,CAACM,QAAQ,KAAK,gBAAgB,IAAI,CAACC,cAAc,EAAE;YAChE,MAAM,IAAI,CAACC,OAAO,CAAC;gBAAEC,YAAY,IAAI,CAACF,cAAc;YAAC;QACvD;IACF,EAAE,OAAOG,KAAK;QACZ,IAAI,CAACR,OAAO,CAACC,MAAM,CAACQ,KAAK,CAAC;YACxBD;YACAE,KAAK,CAAC,2CAA2C,EAAEF,IAAIG,OAAO,CAAC,CAAC;QAClE;QACAd,QAAQe,IAAI,CAAC;IACf;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CountGlobalVersions } from 'payload';
2
+ export declare const countGlobalVersions: CountGlobalVersions;
3
+ //# sourceMappingURL=countGlobalVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../src/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,SAAS,CAAA;AAQlE,eAAO,MAAM,mBAAmB,EAAE,mBAsCjC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { flattenWhereToOperators } from 'payload';
2
+ import { withSession } from './withSession.js';
3
+ export const countGlobalVersions = async function countGlobalVersions({ global, locale, req = {}, where }) {
4
+ const Model = this.versions[global];
5
+ const options = await withSession(this, req);
6
+ let hasNearConstraint = false;
7
+ if (where) {
8
+ const constraints = flattenWhereToOperators(where);
9
+ hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
10
+ }
11
+ const query = await Model.buildQuery({
12
+ locale,
13
+ payload: this.payload,
14
+ where
15
+ });
16
+ // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
17
+ const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
18
+ if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {
19
+ // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
20
+ // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
21
+ // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
22
+ // the correct indexed field
23
+ options.hint = {
24
+ _id: 1
25
+ };
26
+ }
27
+ const result = await Model.countDocuments(query, options);
28
+ return {
29
+ totalDocs: result
30
+ };
31
+ };
32
+
33
+ //# sourceMappingURL=countGlobalVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/countGlobalVersions.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { CountGlobalVersions, PayloadRequest } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { withSession } from './withSession.js'\n\nexport const countGlobalVersions: CountGlobalVersions = async function countGlobalVersions(\n this: MongooseAdapter,\n { global, locale, req = {} as PayloadRequest, where },\n) {\n const Model = this.versions[global]\n const options: QueryOptions = await withSession(this, req)\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 query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\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\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 options.hint = {\n _id: 1,\n }\n }\n\n const result = await Model.countDocuments(query, options)\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["flattenWhereToOperators","withSession","countGlobalVersions","global","locale","req","where","Model","versions","options","hasNearConstraint","constraints","some","prop","Object","keys","key","query","buildQuery","payload","useEstimatedCount","length","disableIndexHints","hint","_id","result","countDocuments","totalDocs"],"mappings":"AAGA,SAASA,uBAAuB,QAAQ,UAAS;AAIjD,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,KAAK,EAAE;IAErD,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,OAAO;IACnC,MAAMM,UAAwB,MAAMR,YAAY,IAAI,EAAEI;IAEtD,IAAIK,oBAAoB;IAExB,IAAIJ,OAAO;QACT,MAAMK,cAAcX,wBAAwBM;QAC5CI,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,MAAMC,QAAQ,MAAMV,MAAMW,UAAU,CAAC;QACnCd;QACAe,SAAS,IAAI,CAACA,OAAO;QACrBb;IACF;IAEA,4HAA4H;IAC5H,MAAMc,oBAAoBV,qBAAqB,CAACO,SAASH,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK;IAEvF,IAAI,CAACD,qBAAqBN,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK,KAAK,IAAI,CAACC,iBAAiB,KAAK,MAAM;QAC5F,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5Bb,QAAQc,IAAI,GAAG;YACbC,KAAK;QACP;IACF;IAEA,MAAMC,SAAS,MAAMlB,MAAMmB,cAAc,CAACT,OAAOR;IAEjD,OAAO;QACLkB,WAAWF;IACb;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CountVersions } from 'payload';
2
+ export declare const countVersions: CountVersions;
3
+ //# sourceMappingURL=countVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../src/countVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAA;AAQ5D,eAAO,MAAM,aAAa,EAAE,aAsC3B,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { flattenWhereToOperators } from 'payload';
2
+ import { withSession } from './withSession.js';
3
+ export const countVersions = async function countVersions({ collection, locale, req = {}, where }) {
4
+ const Model = this.versions[collection];
5
+ const options = await withSession(this, req);
6
+ let hasNearConstraint = false;
7
+ if (where) {
8
+ const constraints = flattenWhereToOperators(where);
9
+ hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
10
+ }
11
+ const query = await Model.buildQuery({
12
+ locale,
13
+ payload: this.payload,
14
+ where
15
+ });
16
+ // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
17
+ const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
18
+ if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {
19
+ // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
20
+ // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
21
+ // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
22
+ // the correct indexed field
23
+ options.hint = {
24
+ _id: 1
25
+ };
26
+ }
27
+ const result = await Model.countDocuments(query, options);
28
+ return {
29
+ totalDocs: result
30
+ };
31
+ };
32
+
33
+ //# sourceMappingURL=countVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/countVersions.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { CountVersions, PayloadRequest } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { withSession } from './withSession.js'\n\nexport const countVersions: CountVersions = async function countVersions(\n this: MongooseAdapter,\n { collection, locale, req = {} as PayloadRequest, where },\n) {\n const Model = this.versions[collection]\n const options: QueryOptions = await withSession(this, req)\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 query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\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\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 options.hint = {\n _id: 1,\n }\n }\n\n const result = await Model.countDocuments(query, options)\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["flattenWhereToOperators","withSession","countVersions","collection","locale","req","where","Model","versions","options","hasNearConstraint","constraints","some","prop","Object","keys","key","query","buildQuery","payload","useEstimatedCount","length","disableIndexHints","hint","_id","result","countDocuments","totalDocs"],"mappings":"AAGA,SAASA,uBAAuB,QAAQ,UAAS;AAIjD,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,KAAK,EAAE;IAEzD,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,WAAW;IACvC,MAAMM,UAAwB,MAAMR,YAAY,IAAI,EAAEI;IAEtD,IAAIK,oBAAoB;IAExB,IAAIJ,OAAO;QACT,MAAMK,cAAcX,wBAAwBM;QAC5CI,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,MAAMC,QAAQ,MAAMV,MAAMW,UAAU,CAAC;QACnCd;QACAe,SAAS,IAAI,CAACA,OAAO;QACrBb;IACF;IAEA,4HAA4H;IAC5H,MAAMc,oBAAoBV,qBAAqB,CAACO,SAASH,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK;IAEvF,IAAI,CAACD,qBAAqBN,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK,KAAK,IAAI,CAACC,iBAAiB,KAAK,MAAM;QAC5F,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5Bb,QAAQc,IAAI,GAAG;YACbC,KAAK;QACP;IACF;IAEA,MAAMC,SAAS,MAAMlB,MAAMmB,cAAc,CAACT,OAAOR;IAEjD,OAAO;QACLkB,WAAWF;IACb;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAA4B,MAAM,SAAS,CAAA;AAO/D,eAAO,MAAM,MAAM,EAAE,MAwBpB,CAAA"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAA4B,MAAM,SAAS,CAAA;AAQ/D,eAAO,MAAM,MAAM,EAAE,MAmCpB,CAAA"}
package/dist/create.js CHANGED
@@ -1,12 +1,21 @@
1
1
  import { handleError } from './utilities/handleError.js';
2
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
2
3
  import { withSession } from './withSession.js';
3
4
  export const create = async function create({ collection, data, req = {} }) {
4
5
  const Model = this.collections[collection];
5
6
  const options = await withSession(this, req);
6
7
  let doc;
8
+ const sanitizedData = sanitizeRelationshipIDs({
9
+ config: this.payload.config,
10
+ data,
11
+ fields: this.payload.collections[collection].config.fields
12
+ });
13
+ if (this.payload.collections[collection].customIDType) {
14
+ sanitizedData._id = sanitizedData.id;
15
+ }
7
16
  try {
8
17
  [doc] = await Model.create([
9
- data
18
+ sanitizedData
10
19
  ], options);
11
20
  } catch (error) {
12
21
  handleError({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/create.ts"],"sourcesContent":["import type { Create, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { handleError } from './utilities/handleError.js'\nimport { withSession } from './withSession.js'\n\nexport const create: Create = async function create(\n this: MongooseAdapter,\n { collection, data, req = {} as PayloadRequest },\n) {\n const Model = this.collections[collection]\n const options = await withSession(this, req)\n let doc\n try {\n ;[doc] = await Model.create([data], options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n // doc.toJSON does not do stuff like converting ObjectIds to string, or date strings to date objects. That's why we use JSON.parse/stringify here\n const result: Document = JSON.parse(JSON.stringify(doc))\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\n return result\n}\n"],"names":["handleError","withSession","create","collection","data","req","Model","collections","options","doc","error","result","JSON","parse","stringify","verificationToken","_verificationToken","id","_id"],"mappings":"AAIA,SAASA,WAAW,QAAQ,6BAA4B;AACxD,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAE;IAEhD,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACJ,WAAW;IAC1C,MAAMK,UAAU,MAAMP,YAAY,IAAI,EAAEI;IACxC,IAAII;IACJ,IAAI;QACD,CAACA,IAAI,GAAG,MAAMH,MAAMJ,MAAM,CAAC;YAACE;SAAK,EAAEI;IACtC,EAAE,OAAOE,OAAO;QACdV,YAAY;YAAEG;YAAYO;YAAOL;QAAI;IACvC;IAEA,iJAAiJ;IACjJ,MAAMM,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IACnD,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOO,GAAG;IACtB,IAAIH,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IAEA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/create.ts"],"sourcesContent":["import type { Create, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const create: Create = async function create(\n this: MongooseAdapter,\n { collection, data, req = {} as PayloadRequest },\n) {\n const Model = this.collections[collection]\n const options = await withSession(this, req)\n let doc\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields: this.payload.collections[collection].config.fields,\n })\n\n if (this.payload.collections[collection].customIDType) {\n sanitizedData._id = sanitizedData.id\n }\n\n try {\n ;[doc] = await Model.create([sanitizedData], options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n // doc.toJSON does not do stuff like converting ObjectIds to string, or date strings to date objects. That's why we use JSON.parse/stringify here\n const result: Document = JSON.parse(JSON.stringify(doc))\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\n return result\n}\n"],"names":["handleError","sanitizeRelationshipIDs","withSession","create","collection","data","req","Model","collections","options","doc","sanitizedData","config","payload","fields","customIDType","_id","id","error","result","JSON","parse","stringify","verificationToken","_verificationToken"],"mappings":"AAIA,SAASA,WAAW,QAAQ,6BAA4B;AACxD,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAE;IAEhD,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACJ,WAAW;IAC1C,MAAMK,UAAU,MAAMP,YAAY,IAAI,EAAEI;IACxC,IAAII;IAEJ,MAAMC,gBAAgBV,wBAAwB;QAC5CW,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BP;QACAS,QAAQ,IAAI,CAACD,OAAO,CAACL,WAAW,CAACJ,WAAW,CAACQ,MAAM,CAACE,MAAM;IAC5D;IAEA,IAAI,IAAI,CAACD,OAAO,CAACL,WAAW,CAACJ,WAAW,CAACW,YAAY,EAAE;QACrDJ,cAAcK,GAAG,GAAGL,cAAcM,EAAE;IACtC;IAEA,IAAI;QACD,CAACP,IAAI,GAAG,MAAMH,MAAMJ,MAAM,CAAC;YAACQ;SAAc,EAAEF;IAC/C,EAAE,OAAOS,OAAO;QACdlB,YAAY;YAAEI;YAAYc;YAAOZ;QAAI;IACvC;IAEA,iJAAiJ;IACjJ,MAAMa,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACZ;IACnD,MAAMa,oBAAoBb,IAAIc,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOF,EAAE,GAAGE,OAAOH,GAAG;IACtB,IAAIO,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IAEA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createGlobal.d.ts","sourceRoot":"","sources":["../src/createGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;AAO3D,eAAO,MAAM,YAAY,EAAE,YAoB1B,CAAA"}
1
+ {"version":3,"file":"createGlobal.d.ts","sourceRoot":"","sources":["../src/createGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;AAQ3D,eAAO,MAAM,YAAY,EAAE,YA0B1B,CAAA"}
@@ -1,11 +1,16 @@
1
- import sanitizeInternalFields from './utilities/sanitizeInternalFields.js';
1
+ import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
2
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
2
3
  import { withSession } from './withSession.js';
3
4
  export const createGlobal = async function createGlobal({ slug, data, req = {} }) {
4
5
  const Model = this.globals;
5
- const global = {
6
- globalType: slug,
7
- ...data
8
- };
6
+ const global = sanitizeRelationshipIDs({
7
+ config: this.payload.config,
8
+ data: {
9
+ globalType: slug,
10
+ ...data
11
+ },
12
+ fields: this.payload.config.globals.find((globalConfig)=>globalConfig.slug === slug).fields
13
+ });
9
14
  const options = await withSession(this, req);
10
15
  let [result] = await Model.create([
11
16
  global
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createGlobal.ts"],"sourcesContent":["import type { CreateGlobal, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport sanitizeInternalFields from './utilities/sanitizeInternalFields.js'\nimport { withSession } from './withSession.js'\n\nexport const createGlobal: CreateGlobal = async function createGlobal(\n this: MongooseAdapter,\n { slug, data, req = {} as PayloadRequest },\n) {\n const Model = this.globals\n const global = {\n globalType: slug,\n ...data,\n }\n const options = await withSession(this, req)\n\n let [result] = (await Model.create([global], options)) as any\n\n result = JSON.parse(JSON.stringify(result))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["sanitizeInternalFields","withSession","createGlobal","slug","data","req","Model","globals","global","globalType","options","result","create","JSON","parse","stringify","id","_id"],"mappings":"AAIA,OAAOA,4BAA4B,wCAAuC;AAC1E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAE;IAE1C,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAC1B,MAAMC,SAAS;QACbC,YAAYN;QACZ,GAAGC,IAAI;IACT;IACA,MAAMM,UAAU,MAAMT,YAAY,IAAI,EAAEI;IAExC,IAAI,CAACM,OAAO,GAAI,MAAML,MAAMM,MAAM,CAAC;QAACJ;KAAO,EAAEE;IAE7CC,SAASE,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ;IAEnC,uBAAuB;IACvBA,OAAOK,EAAE,GAAGL,OAAOM,GAAG;IACtBN,SAASX,uBAAuBW;IAEhC,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/createGlobal.ts"],"sourcesContent":["import type { CreateGlobal, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const createGlobal: CreateGlobal = async function createGlobal(\n this: MongooseAdapter,\n { slug, data, req = {} as PayloadRequest },\n) {\n const Model = this.globals\n\n const global = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: {\n globalType: slug,\n ...data,\n },\n fields: this.payload.config.globals.find((globalConfig) => globalConfig.slug === slug).fields,\n })\n\n const options = await withSession(this, req)\n\n let [result] = (await Model.create([global], options)) as any\n\n result = JSON.parse(JSON.stringify(result))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["sanitizeInternalFields","sanitizeRelationshipIDs","withSession","createGlobal","slug","data","req","Model","globals","global","config","payload","globalType","fields","find","globalConfig","options","result","create","JSON","parse","stringify","id","_id"],"mappings":"AAIA,SAASA,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAE;IAE1C,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAE1B,MAAMC,SAASR,wBAAwB;QACrCS,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BL,MAAM;YACJO,YAAYR;YACZ,GAAGC,IAAI;QACT;QACAQ,QAAQ,IAAI,CAACF,OAAO,CAACD,MAAM,CAACF,OAAO,CAACM,IAAI,CAAC,CAACC,eAAiBA,aAAaX,IAAI,KAAKA,MAAMS,MAAM;IAC/F;IAEA,MAAMG,UAAU,MAAMd,YAAY,IAAI,EAAEI;IAExC,IAAI,CAACW,OAAO,GAAI,MAAMV,MAAMW,MAAM,CAAC;QAACT;KAAO,EAAEO;IAE7CC,SAASE,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ;IAEnC,uBAAuB;IACvBA,OAAOK,EAAE,GAAGL,OAAOM,GAAG;IACtBN,SAASjB,uBAAuBiB;IAEhC,OAAOA;AACT,EAAC"}
@@ -1,3 +1,3 @@
1
- import type { CreateGlobalVersion } from 'payload';
1
+ import { type CreateGlobalVersion } from 'payload';
2
2
  export declare const createGlobalVersion: CreateGlobalVersion;
3
3
  //# sourceMappingURL=createGlobalVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createGlobalVersion.d.ts","sourceRoot":"","sources":["../src/createGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,SAAS,CAAA;AAM5E,eAAO,MAAM,mBAAmB,EAAE,mBAuDjC,CAAA"}
1
+ {"version":3,"file":"createGlobalVersion.d.ts","sourceRoot":"","sources":["../src/createGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,SAAS,CAAA;AAOhB,eAAO,MAAM,mBAAmB,EAAE,mBAsEjC,CAAA"}
@@ -1,16 +1,25 @@
1
+ import { buildVersionGlobalFields } from 'payload';
2
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
1
3
  import { withSession } from './withSession.js';
2
- export const createGlobalVersion = async function createGlobalVersion({ autosave, createdAt, globalSlug, parent, req = {}, updatedAt, versionData }) {
4
+ export const createGlobalVersion = async function createGlobalVersion({ autosave, createdAt, globalSlug, parent, publishedLocale, req = {}, snapshot, updatedAt, versionData }) {
3
5
  const VersionModel = this.versions[globalSlug];
4
6
  const options = await withSession(this, req);
5
- const [doc] = await VersionModel.create([
6
- {
7
+ const data = sanitizeRelationshipIDs({
8
+ config: this.payload.config,
9
+ data: {
7
10
  autosave,
8
11
  createdAt,
9
12
  latest: true,
10
13
  parent,
14
+ publishedLocale,
15
+ snapshot,
11
16
  updatedAt,
12
17
  version: versionData
13
- }
18
+ },
19
+ fields: buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug))
20
+ });
21
+ const [doc] = await VersionModel.create([
22
+ data
14
23
  ], options, req);
15
24
  await VersionModel.updateMany({
16
25
  $and: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import type { CreateGlobalVersion, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { withSession } from './withSession.js'\n\nexport const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion(\n this: MongooseAdapter,\n { autosave, createdAt, globalSlug, parent, req = {} as PayloadRequest, updatedAt, versionData },\n) {\n const VersionModel = this.versions[globalSlug]\n const options = await withSession(this, req)\n\n const [doc] = await VersionModel.create(\n [\n {\n autosave,\n createdAt,\n latest: true,\n parent,\n updatedAt,\n version: versionData,\n },\n ],\n options,\n req,\n )\n\n await VersionModel.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: doc._id,\n },\n },\n {\n parent: {\n $eq: parent,\n },\n },\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n options,\n )\n\n const result: Document = JSON.parse(JSON.stringify(doc))\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":["withSession","createGlobalVersion","autosave","createdAt","globalSlug","parent","req","updatedAt","versionData","VersionModel","versions","options","doc","create","latest","version","updateMany","$and","_id","$ne","$eq","$unset","result","JSON","parse","stringify","verificationToken","_verificationToken","id"],"mappings":"AAIA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,SAAS,EAAEC,WAAW,EAAE;IAE/F,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACN,WAAW;IAC9C,MAAMO,UAAU,MAAMX,YAAY,IAAI,EAAEM;IAExC,MAAM,CAACM,IAAI,GAAG,MAAMH,aAAaI,MAAM,CACrC;QACE;YACEX;YACAC;YACAW,QAAQ;YACRT;YACAE;YACAQ,SAASP;QACX;KACD,EACDG,SACAL;IAGF,MAAMG,aAAaO,UAAU,CAC3B;QACEC,MAAM;YACJ;gBACEC,KAAK;oBACHC,KAAKP,IAAIM,GAAG;gBACd;YACF;YACA;gBACEb,QAAQ;oBACNe,KAAKf;gBACP;YACF;YACA;gBACES,QAAQ;oBACNM,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAEC,QAAQ;YAAEP,QAAQ;QAAE;IAAE,GACxBH;IAGF,MAAMW,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACb;IACnD,MAAMc,oBAAoBd,IAAIe,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOJ,GAAG;IACtB,IAAIQ,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import {\n buildVersionGlobalFields,\n type CreateGlobalVersion,\n type Document,\n type PayloadRequest,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion(\n this: MongooseAdapter,\n {\n autosave,\n createdAt,\n globalSlug,\n parent,\n publishedLocale,\n req = {} as PayloadRequest,\n snapshot,\n updatedAt,\n versionData,\n },\n) {\n const VersionModel = this.versions[globalSlug]\n const options = await withSession(this, req)\n\n const data = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: {\n autosave,\n createdAt,\n latest: true,\n parent,\n publishedLocale,\n snapshot,\n updatedAt,\n version: versionData,\n },\n fields: buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n ),\n })\n\n const [doc] = await VersionModel.create([data], options, req)\n\n await VersionModel.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: doc._id,\n },\n },\n {\n parent: {\n $eq: parent,\n },\n },\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n options,\n )\n\n const result: Document = JSON.parse(JSON.stringify(doc))\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":["buildVersionGlobalFields","sanitizeRelationshipIDs","withSession","createGlobalVersion","autosave","createdAt","globalSlug","parent","publishedLocale","req","snapshot","updatedAt","versionData","VersionModel","versions","options","data","config","payload","latest","version","fields","globals","find","global","slug","doc","create","updateMany","$and","_id","$ne","$eq","$unset","result","JSON","parse","stringify","verificationToken","_verificationToken","id"],"mappings":"AAAA,SACEA,wBAAwB,QAInB,UAAS;AAIhB,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EACEC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,eAAe,EACfC,MAAM,CAAC,CAAmB,EAC1BC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACZ;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACR,WAAW;IAC9C,MAAMS,UAAU,MAAMb,YAAY,IAAI,EAAEO;IAExC,MAAMO,OAAOf,wBAAwB;QACnCgB,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BD,MAAM;YACJZ;YACAC;YACAc,QAAQ;YACRZ;YACAC;YACAE;YACAC;YACAS,SAASR;QACX;QACAS,QAAQrB,yBACN,IAAI,CAACkB,OAAO,CAACD,MAAM,EACnB,IAAI,CAACC,OAAO,CAACD,MAAM,CAACK,OAAO,CAACC,IAAI,CAAC,CAACC,SAAWA,OAAOC,IAAI,KAAKnB;IAEjE;IAEA,MAAM,CAACoB,IAAI,GAAG,MAAMb,aAAac,MAAM,CAAC;QAACX;KAAK,EAAED,SAASN;IAEzD,MAAMI,aAAae,UAAU,CAC3B;QACEC,MAAM;YACJ;gBACEC,KAAK;oBACHC,KAAKL,IAAII,GAAG;gBACd;YACF;YACA;gBACEvB,QAAQ;oBACNyB,KAAKzB;gBACP;YACF;YACA;gBACEY,QAAQ;oBACNa,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAEC,QAAQ;YAAEd,QAAQ;QAAE;IAAE,GACxBJ;IAGF,MAAMmB,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACX;IACnD,MAAMY,oBAAoBZ,IAAIa,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOJ,GAAG;IACtB,IAAIQ,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../src/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,SAAS,CAAA;AAsBrE,eAAO,MAAM,eAAe,EAAE,eAgC7B,CAAA"}
1
+ {"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../src/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,SAAS,CAAA;AAqBrE,eAAO,MAAM,eAAe,EAAE,eAmC7B,CAAA"}
@@ -1,18 +1,17 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import { getPredefinedMigration } from 'payload';
3
+ import { getPredefinedMigration, writeMigrationIndex } from 'payload';
4
4
  import { fileURLToPath } from 'url';
5
5
  const migrationTemplate = ({ downSQL, imports, upSQL })=>`import {
6
- MigrateUpArgs,
7
6
  MigrateDownArgs,
7
+ MigrateUpArgs,
8
8
  } from '@payloadcms/db-mongodb'
9
- ${imports}
10
-
11
- export async function up({ payload }: MigrateUpArgs): Promise<void> {
9
+ ${imports ?? ''}
10
+ export async function up({ payload, req }: MigrateUpArgs): Promise<void> {
12
11
  ${upSQL ?? ` // Migration code`}
13
12
  }
14
13
 
15
- export async function down({ payload }: MigrateDownArgs): Promise<void> {
14
+ export async function down({ payload, req }: MigrateDownArgs): Promise<void> {
16
15
  ${downSQL ?? ` // Migration code`}
17
16
  }
18
17
  `;
@@ -38,6 +37,9 @@ export const createMigration = async function createMigration({ file, migrationN
38
37
  const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`;
39
38
  const filePath = `${dir}/${fileName}`;
40
39
  fs.writeFileSync(filePath, migrationFileContent);
40
+ writeMigrationIndex({
41
+ migrationsDir: payload.db.migrationDir
42
+ });
41
43
  payload.logger.info({
42
44
  msg: `Migration created at ${filePath}`
43
45
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { CreateMigration, MigrationTemplateArgs } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration } from 'payload'\nimport { fileURLToPath } from 'url'\n\nconst migrationTemplate = ({ downSQL, imports, upSQL }: MigrationTemplateArgs): string => `import {\n MigrateUpArgs,\n MigrateDownArgs,\n} from '@payloadcms/db-mongodb'\n${imports}\n\nexport async function up({ payload }: MigrateUpArgs): Promise<void> {\n${upSQL ?? ` // Migration code`}\n}\n\nexport async function down({ payload }: MigrateDownArgs): Promise<void> {\n${downSQL ?? ` // Migration code`}\n}\n`\n\nexport const createMigration: CreateMigration = async function createMigration({\n file,\n migrationName,\n payload,\n}) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n const migrationFileContent = migrationTemplate(predefinedMigration)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName?.replace(/\\W/g, '_')\n const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`\n const filePath = `${dir}/${fileName}`\n fs.writeFileSync(filePath, migrationFileContent)\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n}\n"],"names":["fs","path","getPredefinedMigration","fileURLToPath","migrationTemplate","downSQL","imports","upSQL","createMigration","file","migrationName","payload","filename","url","dirname","dir","db","migrationDir","existsSync","mkdirSync","predefinedMigration","migrationFileContent","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","writeFileSync","logger","info","msg"],"mappings":"AAEA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,QAAQ,UAAS;AAChD,SAASC,aAAa,QAAQ,MAAK;AAEnC,MAAMC,oBAAoB,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAyB,GAAa,CAAC;;;;AAI3F,EAAED,QAAQ;;;AAGV,EAAEC,SAAS,CAAC,mBAAmB,CAAC,CAAC;;;;AAIjC,EAAEF,WAAW,CAAC,mBAAmB,CAAC,CAAC;;AAEnC,CAAC;AAED,OAAO,MAAMG,kBAAmC,eAAeA,gBAAgB,EAC7EC,IAAI,EACJC,aAAa,EACbC,OAAO,EACR;IACC,MAAMC,WAAWT,cAAc,YAAYU,GAAG;IAC9C,MAAMC,UAAUb,KAAKa,OAAO,CAACF;IAE7B,MAAMG,MAAMJ,QAAQK,EAAE,CAACC,YAAY;IACnC,IAAI,CAACjB,GAAGkB,UAAU,CAACH,MAAM;QACvBf,GAAGmB,SAAS,CAACJ;IACf;IACA,MAAMK,sBAAsB,MAAMlB,uBAAuB;QACvDY;QACAL;QACAC;QACAC;IACF;IAEA,MAAMU,uBAAuBjB,kBAAkBgB;IAE/C,MAAM,CAACE,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IACzD,MAAMC,gBAAgBL,QAAQM,OAAO,CAAC,OAAO;IAC7C,MAAMC,gBAAgBN,OAAOG,KAAK,CAAC,IAAI,CAAC,EAAE,CAACE,OAAO,CAAC,OAAO;IAE1D,MAAME,YAAY,CAAC,EAAEH,cAAc,CAAC,EAAEE,cAAc,CAAC;IAErD,MAAME,gBAAgBrB,eAAekB,QAAQ,OAAO;IACpD,MAAMI,WAAWtB,gBAAgB,CAAC,EAAEoB,UAAU,CAAC,EAAEC,cAAc,GAAG,CAAC,GAAG,CAAC,EAAED,UAAU,aAAa,CAAC;IACjG,MAAMG,WAAW,CAAC,EAAElB,IAAI,CAAC,EAAEiB,SAAS,CAAC;IACrChC,GAAGkC,aAAa,CAACD,UAAUZ;IAC3BV,QAAQwB,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,qBAAqB,EAAEJ,SAAS,CAAC;IAAC;AAChE,EAAC"}
1
+ {"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { CreateMigration, MigrationTemplateArgs } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport { fileURLToPath } from 'url'\n\nconst migrationTemplate = ({ downSQL, imports, upSQL }: MigrationTemplateArgs): string => `import {\n MigrateDownArgs,\n MigrateUpArgs,\n} from '@payloadcms/db-mongodb'\n${imports ?? ''}\nexport async function up({ payload, req }: MigrateUpArgs): Promise<void> {\n${upSQL ?? ` // Migration code`}\n}\n\nexport async function down({ payload, req }: MigrateDownArgs): Promise<void> {\n${downSQL ?? ` // Migration code`}\n}\n`\n\nexport const createMigration: CreateMigration = async function createMigration({\n file,\n migrationName,\n payload,\n}) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n const migrationFileContent = migrationTemplate(predefinedMigration)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName?.replace(/\\W/g, '_')\n const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`\n const filePath = `${dir}/${fileName}`\n fs.writeFileSync(filePath, migrationFileContent)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","fileURLToPath","migrationTemplate","downSQL","imports","upSQL","createMigration","file","migrationName","payload","filename","url","dirname","dir","db","migrationDir","existsSync","mkdirSync","predefinedMigration","migrationFileContent","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","writeFileSync","migrationsDir","logger","info","msg"],"mappings":"AAEA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,UAAS;AACrE,SAASC,aAAa,QAAQ,MAAK;AAEnC,MAAMC,oBAAoB,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAyB,GAAa,CAAC;;;;AAI3F,EAAED,WAAW,GAAG;;AAEhB,EAAEC,SAAS,CAAC,mBAAmB,CAAC,CAAC;;;;AAIjC,EAAEF,WAAW,CAAC,mBAAmB,CAAC,CAAC;;AAEnC,CAAC;AAED,OAAO,MAAMG,kBAAmC,eAAeA,gBAAgB,EAC7EC,IAAI,EACJC,aAAa,EACbC,OAAO,EACR;IACC,MAAMC,WAAWT,cAAc,YAAYU,GAAG;IAC9C,MAAMC,UAAUd,KAAKc,OAAO,CAACF;IAE7B,MAAMG,MAAMJ,QAAQK,EAAE,CAACC,YAAY;IACnC,IAAI,CAAClB,GAAGmB,UAAU,CAACH,MAAM;QACvBhB,GAAGoB,SAAS,CAACJ;IACf;IACA,MAAMK,sBAAsB,MAAMnB,uBAAuB;QACvDa;QACAL;QACAC;QACAC;IACF;IAEA,MAAMU,uBAAuBjB,kBAAkBgB;IAE/C,MAAM,CAACE,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IACzD,MAAMC,gBAAgBL,QAAQM,OAAO,CAAC,OAAO;IAC7C,MAAMC,gBAAgBN,OAAOG,KAAK,CAAC,IAAI,CAAC,EAAE,CAACE,OAAO,CAAC,OAAO;IAE1D,MAAME,YAAY,CAAC,EAAEH,cAAc,CAAC,EAAEE,cAAc,CAAC;IAErD,MAAME,gBAAgBrB,eAAekB,QAAQ,OAAO;IACpD,MAAMI,WAAWtB,gBAAgB,CAAC,EAAEoB,UAAU,CAAC,EAAEC,cAAc,GAAG,CAAC,GAAG,CAAC,EAAED,UAAU,aAAa,CAAC;IACjG,MAAMG,WAAW,CAAC,EAAElB,IAAI,CAAC,EAAEiB,SAAS,CAAC;IACrCjC,GAAGmC,aAAa,CAACD,UAAUZ;IAE3BnB,oBAAoB;QAAEiC,eAAexB,QAAQK,EAAE,CAACC,YAAY;IAAC;IAE7DN,QAAQyB,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,qBAAqB,EAAEL,SAAS,CAAC;IAAC;AAChE,EAAC"}
@@ -1,3 +1,3 @@
1
- import type { CreateVersion } from 'payload';
1
+ import { type CreateVersion } from 'payload';
2
2
  export declare const createVersion: CreateVersion;
3
3
  //# sourceMappingURL=createVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA4B,MAAM,SAAS,CAAA;AAMtE,eAAO,MAAM,aAAa,EAAE,aA+D3B,CAAA"}
1
+ {"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,SAAS,CAAA;AAOhB,eAAO,MAAM,aAAa,EAAE,aAmF3B,CAAA"}
@@ -1,17 +1,43 @@
1
+ import mongoose from 'mongoose';
2
+ import { buildVersionCollectionFields } from 'payload';
3
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
1
4
  import { withSession } from './withSession.js';
2
- export const createVersion = async function createVersion({ autosave, collectionSlug, createdAt, parent, req = {}, updatedAt, versionData }) {
5
+ export const createVersion = async function createVersion({ autosave, collectionSlug, createdAt, parent, publishedLocale, req = {}, snapshot, updatedAt, versionData }) {
3
6
  const VersionModel = this.versions[collectionSlug];
4
7
  const options = await withSession(this, req);
5
- const [doc] = await VersionModel.create([
6
- {
8
+ const data = sanitizeRelationshipIDs({
9
+ config: this.payload.config,
10
+ data: {
7
11
  autosave,
8
12
  createdAt,
9
13
  latest: true,
10
14
  parent,
15
+ publishedLocale,
16
+ snapshot,
11
17
  updatedAt,
12
18
  version: versionData
13
- }
19
+ },
20
+ fields: buildVersionCollectionFields(this.payload.config, this.payload.collections[collectionSlug].config)
21
+ });
22
+ const [doc] = await VersionModel.create([
23
+ data
14
24
  ], options, req);
25
+ const parentQuery = {
26
+ $or: [
27
+ {
28
+ parent: {
29
+ $eq: data.parent
30
+ }
31
+ }
32
+ ]
33
+ };
34
+ if (data.parent instanceof mongoose.Types.ObjectId) {
35
+ parentQuery.$or.push({
36
+ parent: {
37
+ $eq: data.parent.toString()
38
+ }
39
+ });
40
+ }
15
41
  await VersionModel.updateMany({
16
42
  $and: [
17
43
  {
@@ -19,11 +45,7 @@ export const createVersion = async function createVersion({ autosave, collection
19
45
  $ne: doc._id
20
46
  }
21
47
  },
22
- {
23
- parent: {
24
- $eq: parent
25
- }
26
- },
48
+ parentQuery,
27
49
  {
28
50
  latest: {
29
51
  $eq: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import type { CreateVersion, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { withSession } from './withSession.js'\n\nexport const createVersion: CreateVersion = async function createVersion(\n this: MongooseAdapter,\n {\n autosave,\n collectionSlug,\n createdAt,\n parent,\n req = {} as PayloadRequest,\n updatedAt,\n versionData,\n },\n) {\n const VersionModel = this.versions[collectionSlug]\n const options = await withSession(this, req)\n\n const [doc] = await VersionModel.create(\n [\n {\n autosave,\n createdAt,\n latest: true,\n parent,\n updatedAt,\n version: versionData,\n },\n ],\n options,\n req,\n )\n\n await VersionModel.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: doc._id,\n },\n },\n {\n parent: {\n $eq: parent,\n },\n },\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n options,\n )\n\n const result: Document = JSON.parse(JSON.stringify(doc))\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":["withSession","createVersion","autosave","collectionSlug","createdAt","parent","req","updatedAt","versionData","VersionModel","versions","options","doc","create","latest","version","updateMany","$and","_id","$ne","$eq","$unset","result","JSON","parse","stringify","verificationToken","_verificationToken","id"],"mappings":"AAIA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EACEC,QAAQ,EACRC,cAAc,EACdC,SAAS,EACTC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,SAAS,EACTC,WAAW,EACZ;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACP,eAAe;IAClD,MAAMQ,UAAU,MAAMX,YAAY,IAAI,EAAEM;IAExC,MAAM,CAACM,IAAI,GAAG,MAAMH,aAAaI,MAAM,CACrC;QACE;YACEX;YACAE;YACAU,QAAQ;YACRT;YACAE;YACAQ,SAASP;QACX;KACD,EACDG,SACAL;IAGF,MAAMG,aAAaO,UAAU,CAC3B;QACEC,MAAM;YACJ;gBACEC,KAAK;oBACHC,KAAKP,IAAIM,GAAG;gBACd;YACF;YACA;gBACEb,QAAQ;oBACNe,KAAKf;gBACP;YACF;YACA;gBACES,QAAQ;oBACNM,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAEC,QAAQ;YAAEP,QAAQ;QAAE;IAAE,GACxBH;IAGF,MAAMW,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACb;IACnD,MAAMc,oBAAoBd,IAAIe,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOJ,GAAG;IACtB,IAAIQ,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import mongoose from 'mongoose'\nimport {\n buildVersionCollectionFields,\n type CreateVersion,\n type Document,\n type PayloadRequest,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const createVersion: CreateVersion = async function createVersion(\n this: MongooseAdapter,\n {\n autosave,\n collectionSlug,\n createdAt,\n parent,\n publishedLocale,\n req = {} as PayloadRequest,\n snapshot,\n updatedAt,\n versionData,\n },\n) {\n const VersionModel = this.versions[collectionSlug]\n const options = await withSession(this, req)\n\n const data = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: {\n autosave,\n createdAt,\n latest: true,\n parent,\n publishedLocale,\n snapshot,\n updatedAt,\n version: versionData,\n },\n fields: buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collectionSlug].config,\n ),\n })\n\n const [doc] = await VersionModel.create([data], options, req)\n\n const parentQuery = {\n $or: [\n {\n parent: {\n $eq: data.parent,\n },\n },\n ],\n }\n if (data.parent instanceof mongoose.Types.ObjectId) {\n parentQuery.$or.push({\n parent: {\n $eq: data.parent.toString(),\n },\n })\n }\n\n await VersionModel.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: doc._id,\n },\n },\n parentQuery,\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n options,\n )\n\n const result: Document = JSON.parse(JSON.stringify(doc))\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":["mongoose","buildVersionCollectionFields","sanitizeRelationshipIDs","withSession","createVersion","autosave","collectionSlug","createdAt","parent","publishedLocale","req","snapshot","updatedAt","versionData","VersionModel","versions","options","data","config","payload","latest","version","fields","collections","doc","create","parentQuery","$or","$eq","Types","ObjectId","push","toString","updateMany","$and","_id","$ne","$unset","result","JSON","parse","stringify","verificationToken","_verificationToken","id"],"mappings":"AAAA,OAAOA,cAAc,WAAU;AAC/B,SACEC,4BAA4B,QAIvB,UAAS;AAIhB,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EACEC,QAAQ,EACRC,cAAc,EACdC,SAAS,EACTC,MAAM,EACNC,eAAe,EACfC,MAAM,CAAC,CAAmB,EAC1BC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACZ;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACT,eAAe;IAClD,MAAMU,UAAU,MAAMb,YAAY,IAAI,EAAEO;IAExC,MAAMO,OAAOf,wBAAwB;QACnCgB,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BD,MAAM;YACJZ;YACAE;YACAa,QAAQ;YACRZ;YACAC;YACAE;YACAC;YACAS,SAASR;QACX;QACAS,QAAQrB,6BACN,IAAI,CAACkB,OAAO,CAACD,MAAM,EACnB,IAAI,CAACC,OAAO,CAACI,WAAW,CAACjB,eAAe,CAACY,MAAM;IAEnD;IAEA,MAAM,CAACM,IAAI,GAAG,MAAMV,aAAaW,MAAM,CAAC;QAACR;KAAK,EAAED,SAASN;IAEzD,MAAMgB,cAAc;QAClBC,KAAK;YACH;gBACEnB,QAAQ;oBACNoB,KAAKX,KAAKT,MAAM;gBAClB;YACF;SACD;IACH;IACA,IAAIS,KAAKT,MAAM,YAAYR,SAAS6B,KAAK,CAACC,QAAQ,EAAE;QAClDJ,YAAYC,GAAG,CAACI,IAAI,CAAC;YACnBvB,QAAQ;gBACNoB,KAAKX,KAAKT,MAAM,CAACwB,QAAQ;YAC3B;QACF;IACF;IAEA,MAAMlB,aAAamB,UAAU,CAC3B;QACEC,MAAM;YACJ;gBACEC,KAAK;oBACHC,KAAKZ,IAAIW,GAAG;gBACd;YACF;YACAT;YACA;gBACEN,QAAQ;oBACNQ,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAES,QAAQ;YAAEjB,QAAQ;QAAE;IAAE,GACxBJ;IAGF,MAAMsB,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACjB;IACnD,MAAMkB,oBAAoBlB,IAAImB,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOH,GAAG;IACtB,IAAIO,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,SAAS,CAAA;AAOlE,eAAO,MAAM,SAAS,EAAE,SAqBvB,CAAA"}
1
+ {"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,SAAS,CAAA;AAQlE,eAAO,MAAM,SAAS,EAAE,SA4BvB,CAAA"}
package/dist/deleteOne.js CHANGED
@@ -1,13 +1,21 @@
1
- import sanitizeInternalFields from './utilities/sanitizeInternalFields.js';
1
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
2
+ import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
2
3
  import { withSession } from './withSession.js';
3
- export const deleteOne = async function deleteOne({ collection, req = {}, where }) {
4
+ export const deleteOne = async function deleteOne({ collection, req = {}, select, where }) {
4
5
  const Model = this.collections[collection];
5
6
  const options = await withSession(this, req);
6
7
  const query = await Model.buildQuery({
7
8
  payload: this.payload,
8
9
  where
9
10
  });
10
- const doc = await Model.findOneAndDelete(query, options).lean();
11
+ const doc = await Model.findOneAndDelete(query, {
12
+ ...options,
13
+ projection: buildProjectionFromSelect({
14
+ adapter: this,
15
+ fields: this.payload.collections[collection].config.fields,
16
+ select
17
+ })
18
+ }).lean();
11
19
  let result = JSON.parse(JSON.stringify(doc));
12
20
  // custom id type reset
13
21
  result.id = result._id;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { DeleteOne, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport sanitizeInternalFields from './utilities/sanitizeInternalFields.js'\nimport { withSession } from './withSession.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: MongooseAdapter,\n { collection, req = {} as PayloadRequest, where },\n) {\n const Model = this.collections[collection]\n const options = await withSession(this, req)\n\n const query = await Model.buildQuery({\n payload: this.payload,\n where,\n })\n\n const doc = await Model.findOneAndDelete(query, options).lean()\n\n let result: Document = JSON.parse(JSON.stringify(doc))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["sanitizeInternalFields","withSession","deleteOne","collection","req","where","Model","collections","options","query","buildQuery","payload","doc","findOneAndDelete","lean","result","JSON","parse","stringify","id","_id"],"mappings":"AAIA,OAAOA,4BAA4B,wCAAuC;AAC1E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,KAAK,EAAE;IAEjD,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACJ,WAAW;IAC1C,MAAMK,UAAU,MAAMP,YAAY,IAAI,EAAEG;IAExC,MAAMK,QAAQ,MAAMH,MAAMI,UAAU,CAAC;QACnCC,SAAS,IAAI,CAACA,OAAO;QACrBN;IACF;IAEA,MAAMO,MAAM,MAAMN,MAAMO,gBAAgB,CAACJ,OAAOD,SAASM,IAAI;IAE7D,IAAIC,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACN;IAEjD,uBAAuB;IACvBG,OAAOI,EAAE,GAAGJ,OAAOK,GAAG;IACtBL,SAASf,uBAAuBe;IAEhC,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { DeleteOne, Document, PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { withSession } from './withSession.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: MongooseAdapter,\n { collection, req = {} as PayloadRequest, select, where },\n) {\n const Model = this.collections[collection]\n const options = await withSession(this, req)\n\n const query = await Model.buildQuery({\n payload: this.payload,\n where,\n })\n\n const doc = await Model.findOneAndDelete(query, {\n ...options,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields: this.payload.collections[collection].config.fields,\n select,\n }),\n }).lean()\n\n let result: Document = JSON.parse(JSON.stringify(doc))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["buildProjectionFromSelect","sanitizeInternalFields","withSession","deleteOne","collection","req","select","where","Model","collections","options","query","buildQuery","payload","doc","findOneAndDelete","projection","adapter","fields","config","lean","result","JSON","parse","stringify","id","_id"],"mappings":"AAIA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAEzD,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACL,WAAW;IAC1C,MAAMM,UAAU,MAAMR,YAAY,IAAI,EAAEG;IAExC,MAAMM,QAAQ,MAAMH,MAAMI,UAAU,CAAC;QACnCC,SAAS,IAAI,CAACA,OAAO;QACrBN;IACF;IAEA,MAAMO,MAAM,MAAMN,MAAMO,gBAAgB,CAACJ,OAAO;QAC9C,GAAGD,OAAO;QACVM,YAAYhB,0BAA0B;YACpCiB,SAAS,IAAI;YACbC,QAAQ,IAAI,CAACL,OAAO,CAACJ,WAAW,CAACL,WAAW,CAACe,MAAM,CAACD,MAAM;YAC1DZ;QACF;IACF,GAAGc,IAAI;IAEP,IAAIC,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACV;IAEjD,uBAAuB;IACvBO,OAAOI,EAAE,GAAGJ,OAAOK,GAAG;IACtBL,SAASpB,uBAAuBoB;IAEhC,OAAOA;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,SAAS,CAAA;AAUnD,eAAO,MAAM,IAAI,EAAE,IAyFlB,CAAA"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,SAAS,CAAA;AAYnD,eAAO,MAAM,IAAI,EAAE,IA8HlB,CAAA"}
package/dist/find.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { flattenWhereToOperators } from 'payload';
2
2
  import { buildSortParam } from './queries/buildSortParam.js';
3
- import sanitizeInternalFields from './utilities/sanitizeInternalFields.js';
3
+ import { buildJoinAggregation } from './utilities/buildJoinAggregation.js';
4
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
5
+ import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
4
6
  import { withSession } from './withSession.js';
5
- export const find = async function find({ collection, limit, locale, page, pagination, req = {}, sort: sortArg, where }) {
7
+ export const find = async function find({ collection, joins = {}, limit = 0, locale, page, pagination, projection, req = {}, select, sort: sortArg, where }) {
6
8
  const Model = this.collections[collection];
7
9
  const collectionConfig = this.payload.collections[collection].config;
8
10
  const options = await withSession(this, req);
@@ -35,9 +37,17 @@ export const find = async function find({ collection, limit, locale, page, pagin
35
37
  options,
36
38
  page,
37
39
  pagination,
40
+ projection,
38
41
  sort,
39
42
  useEstimatedCount
40
43
  };
44
+ if (select) {
45
+ paginationOptions.projection = buildProjectionFromSelect({
46
+ adapter: this,
47
+ fields: collectionConfig.fields,
48
+ select
49
+ });
50
+ }
41
51
  if (this.collation) {
42
52
  const defaultLocale = 'en';
43
53
  paginationOptions.collation = {
@@ -68,7 +78,21 @@ export const find = async function find({ collection, limit, locale, page, pagin
68
78
  paginationOptions.pagination = false;
69
79
  }
70
80
  }
71
- const result = await Model.paginate(query, paginationOptions);
81
+ let result;
82
+ const aggregate = await buildJoinAggregation({
83
+ adapter: this,
84
+ collection,
85
+ collectionConfig,
86
+ joins,
87
+ locale,
88
+ query
89
+ });
90
+ // build join aggregation
91
+ if (aggregate) {
92
+ result = await Model.aggregatePaginate(Model.aggregate(aggregate), paginationOptions);
93
+ } else {
94
+ result = await Model.paginate(query, paginationOptions);
95
+ }
72
96
  const docs = JSON.parse(JSON.stringify(result.docs));
73
97
  return {
74
98
  ...result,