@payloadcms/drizzle 3.0.0-beta.106 → 3.0.0-beta.108

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 (114) hide show
  1. package/dist/count.js +1 -1
  2. package/dist/count.js.map +1 -1
  3. package/dist/createGlobalVersion.d.ts +1 -1
  4. package/dist/createGlobalVersion.d.ts.map +1 -1
  5. package/dist/createGlobalVersion.js +4 -2
  6. package/dist/createGlobalVersion.js.map +1 -1
  7. package/dist/createVersion.d.ts +1 -1
  8. package/dist/createVersion.d.ts.map +1 -1
  9. package/dist/createVersion.js +9 -7
  10. package/dist/createVersion.js.map +1 -1
  11. package/dist/deleteOne.d.ts.map +1 -1
  12. package/dist/deleteOne.js +5 -3
  13. package/dist/deleteOne.js.map +1 -1
  14. package/dist/deleteVersions.js +1 -1
  15. package/dist/deleteVersions.js.map +1 -1
  16. package/dist/find/buildFindManyArgs.d.ts +9 -3
  17. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  18. package/dist/find/buildFindManyArgs.js +4 -1
  19. package/dist/find/buildFindManyArgs.js.map +1 -1
  20. package/dist/find/findMany.d.ts +1 -1
  21. package/dist/find/findMany.d.ts.map +1 -1
  22. package/dist/find/findMany.js +6 -3
  23. package/dist/find/findMany.js.map +1 -1
  24. package/dist/find/traverseFields.d.ts +6 -3
  25. package/dist/find/traverseFields.d.ts.map +1 -1
  26. package/dist/find/traverseFields.js +69 -2
  27. package/dist/find/traverseFields.js.map +1 -1
  28. package/dist/find.d.ts.map +1 -1
  29. package/dist/find.js +2 -1
  30. package/dist/find.js.map +1 -1
  31. package/dist/findGlobalVersions.js +1 -1
  32. package/dist/findGlobalVersions.js.map +1 -1
  33. package/dist/findOne.d.ts +1 -1
  34. package/dist/findOne.d.ts.map +1 -1
  35. package/dist/findOne.js +2 -1
  36. package/dist/findOne.js.map +1 -1
  37. package/dist/findVersions.js +1 -1
  38. package/dist/findVersions.js.map +1 -1
  39. package/dist/postgres/countDistinct.d.ts.map +1 -1
  40. package/dist/postgres/countDistinct.js +3 -3
  41. package/dist/postgres/countDistinct.js.map +1 -1
  42. package/dist/postgres/init.js +2 -2
  43. package/dist/postgres/init.js.map +1 -1
  44. package/dist/postgres/schema/build.js +4 -3
  45. package/dist/postgres/schema/build.js.map +1 -1
  46. package/dist/postgres/schema/traverseFields.d.ts.map +1 -1
  47. package/dist/postgres/schema/traverseFields.js +23 -2
  48. package/dist/postgres/schema/traverseFields.js.map +1 -1
  49. package/dist/postgres/types.d.ts +1 -0
  50. package/dist/postgres/types.d.ts.map +1 -1
  51. package/dist/postgres/types.js.map +1 -1
  52. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  53. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  54. package/dist/queries/buildAndOrConditions.js +2 -2
  55. package/dist/queries/buildAndOrConditions.js.map +1 -1
  56. package/dist/queries/buildOrderBy.d.ts +18 -0
  57. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  58. package/dist/queries/buildOrderBy.js +51 -0
  59. package/dist/queries/buildOrderBy.js.map +1 -0
  60. package/dist/queries/buildQuery.d.ts +4 -4
  61. package/dist/queries/buildQuery.d.ts.map +1 -1
  62. package/dist/queries/buildQuery.js +12 -47
  63. package/dist/queries/buildQuery.js.map +1 -1
  64. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  65. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  66. package/dist/queries/getTableColumnFromPath.js +45 -11
  67. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  68. package/dist/queries/parseParams.d.ts +1 -1
  69. package/dist/queries/parseParams.d.ts.map +1 -1
  70. package/dist/queries/parseParams.js +30 -4
  71. package/dist/queries/parseParams.js.map +1 -1
  72. package/dist/queries/sanitizeQueryValue.d.ts +11 -1
  73. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  74. package/dist/queries/sanitizeQueryValue.js +54 -14
  75. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  76. package/dist/queryDrafts.js +1 -1
  77. package/dist/queryDrafts.js.map +1 -1
  78. package/dist/transform/read/index.d.ts +3 -2
  79. package/dist/transform/read/index.d.ts.map +1 -1
  80. package/dist/transform/read/index.js +2 -1
  81. package/dist/transform/read/index.js.map +1 -1
  82. package/dist/transform/read/traverseFields.d.ts +6 -2
  83. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  84. package/dist/transform/read/traverseFields.js +39 -2
  85. package/dist/transform/read/traverseFields.js.map +1 -1
  86. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  87. package/dist/transform/write/traverseFields.js +7 -1
  88. package/dist/transform/write/traverseFields.js.map +1 -1
  89. package/dist/update.d.ts.map +1 -1
  90. package/dist/update.js +3 -2
  91. package/dist/update.js.map +1 -1
  92. package/dist/updateGlobalVersion.js +2 -2
  93. package/dist/updateGlobalVersion.js.map +1 -1
  94. package/dist/updateVersion.js +2 -2
  95. package/dist/updateVersion.js.map +1 -1
  96. package/dist/upsertRow/index.d.ts +1 -1
  97. package/dist/upsertRow/index.d.ts.map +1 -1
  98. package/dist/upsertRow/index.js +4 -2
  99. package/dist/upsertRow/index.js.map +1 -1
  100. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  101. package/dist/upsertRow/insertArrays.js +4 -1
  102. package/dist/upsertRow/insertArrays.js.map +1 -1
  103. package/dist/upsertRow/types.d.ts +4 -1
  104. package/dist/upsertRow/types.d.ts.map +1 -1
  105. package/dist/upsertRow/types.js.map +1 -1
  106. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  107. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  108. package/dist/utilities/getCollectionIdType.js +11 -0
  109. package/dist/utilities/getCollectionIdType.js.map +1 -0
  110. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  111. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  112. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  113. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  114. package/package.json +3 -3
package/dist/count.js CHANGED
@@ -4,7 +4,7 @@ export const count = async function count({ collection, locale, req, where: wher
4
4
  const collectionConfig = this.payload.collections[collection].config;
5
5
  const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
6
6
  const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
7
- const { joins, where } = await buildQuery({
7
+ const { joins, where } = buildQuery({
8
8
  adapter: this,
9
9
  fields: collectionConfig.fields,
10
10
  locale,
package/dist/count.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/count.ts"],"sourcesContent":["import type { Count, SanitizedCollectionConfig } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\n\nexport const count: Count = async function count(\n this: DrizzleAdapter,\n { collection, locale, req, where: whereArg },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n\n const { joins, where } = await buildQuery({\n adapter: this,\n fields: collectionConfig.fields,\n locale,\n tableName,\n where: whereArg,\n })\n\n const countResult = await this.countDistinct({\n db,\n joins,\n tableName,\n where,\n })\n\n return { totalDocs: countResult }\n}\n"],"names":["toSnakeCase","buildQuery","count","collection","locale","req","where","whereArg","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","db","sessions","transactionID","drizzle","joins","adapter","fields","countResult","countDistinct","totalDocs"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAEhD,OAAO,MAAMC,QAAe,eAAeA,MAEzC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE5C,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACP,WAAW,CAACQ,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACd,YAAYQ,iBAAiBO,IAAI;IAEzE,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMZ,KAAKa,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IAEtE,MAAM,EAAEC,KAAK,EAAEd,KAAK,EAAE,GAAG,MAAML,WAAW;QACxCoB,SAAS,IAAI;QACbC,QAAQd,iBAAiBc,MAAM;QAC/BlB;QACAQ;QACAN,OAAOC;IACT;IAEA,MAAMgB,cAAc,MAAM,IAAI,CAACC,aAAa,CAAC;QAC3CR;QACAI;QACAR;QACAN;IACF;IAEA,OAAO;QAAEmB,WAAWF;IAAY;AAClC,EAAC"}
1
+ {"version":3,"sources":["../src/count.ts"],"sourcesContent":["import type { Count, SanitizedCollectionConfig } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\n\nexport const count: Count = async function count(\n this: DrizzleAdapter,\n { collection, locale, req, where: whereArg },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n\n const { joins, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.fields,\n locale,\n tableName,\n where: whereArg,\n })\n\n const countResult = await this.countDistinct({\n db,\n joins,\n tableName,\n where,\n })\n\n return { totalDocs: countResult }\n}\n"],"names":["toSnakeCase","buildQuery","count","collection","locale","req","where","whereArg","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","db","sessions","transactionID","drizzle","joins","adapter","fields","countResult","countDistinct","totalDocs"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAEhD,OAAO,MAAMC,QAAe,eAAeA,MAEzC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE5C,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACP,WAAW,CAACQ,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACd,YAAYQ,iBAAiBO,IAAI;IAEzE,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMZ,KAAKa,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IAEtE,MAAM,EAAEC,KAAK,EAAEd,KAAK,EAAE,GAAGL,WAAW;QAClCoB,SAAS,IAAI;QACbC,QAAQd,iBAAiBc,MAAM;QAC/BlB;QACAQ;QACAN,OAAOC;IACT;IAEA,MAAMgB,cAAc,MAAM,IAAI,CAACC,aAAa,CAAC;QAC3CR;QACAI;QACAR;QACAN;IACF;IAEA,OAAO;QAAEmB,WAAWF;IAAY;AAClC,EAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { CreateGlobalVersionArgs, TypeWithID, TypeWithVersion } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function createGlobalVersion<T extends TypeWithID>(this: DrizzleAdapter, { autosave, globalSlug, req, versionData }: CreateGlobalVersionArgs): Promise<TypeWithVersion<T>>;
3
+ export declare function createGlobalVersion<T extends TypeWithID>(this: DrizzleAdapter, { autosave, globalSlug, publishedLocale, req, snapshot, versionData, }: CreateGlobalVersionArgs): Promise<TypeWithVersion<T>>;
4
4
  //# 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,uBAAuB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAMnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EAAE,QAAQ,EAAE,UAAU,EAAE,GAA0B,EAAE,WAAW,EAAE,EAAE,uBAAuB,+BAkC3F"}
1
+ {"version":3,"file":"createGlobalVersion.d.ts","sourceRoot":"","sources":["../src/createGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAMnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EACE,QAAQ,EACR,UAAU,EACV,eAAe,EACf,GAA0B,EAC1B,QAAQ,EACR,WAAW,GACZ,EAAE,uBAAuB,+BAoC3B"}
@@ -2,7 +2,7 @@ import { sql } from 'drizzle-orm';
2
2
  import { buildVersionGlobalFields } from 'payload';
3
3
  import toSnakeCase from 'to-snake-case';
4
4
  import { upsertRow } from './upsertRow/index.js';
5
- export async function createGlobalVersion({ autosave, globalSlug, req = {}, versionData }) {
5
+ export async function createGlobalVersion({ autosave, globalSlug, publishedLocale, req = {}, snapshot, versionData }) {
6
6
  const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
7
7
  const global = this.payload.globals.config.find(({ slug })=>slug === globalSlug);
8
8
  const tableName = this.tableNameMap.get(`_${toSnakeCase(global.slug)}${this.versionsSuffix}`);
@@ -11,10 +11,12 @@ export async function createGlobalVersion({ autosave, globalSlug, req = {}, vers
11
11
  data: {
12
12
  autosave,
13
13
  latest: true,
14
+ publishedLocale,
15
+ snapshot,
14
16
  version: versionData
15
17
  },
16
18
  db,
17
- fields: buildVersionGlobalFields(global),
19
+ fields: buildVersionGlobalFields(this.payload.config, global),
18
20
  operation: 'create',
19
21
  req,
20
22
  tableName
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import type { CreateGlobalVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n { autosave, globalSlug, req = {} as PayloadRequest, versionData }: CreateGlobalVersionArgs,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const global = this.payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n const tableName = this.tableNameMap.get(`_${toSnakeCase(global.slug)}${this.versionsSuffix}`)\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data: {\n autosave,\n latest: true,\n version: versionData,\n },\n db,\n fields: buildVersionGlobalFields(global),\n operation: 'create',\n req,\n tableName,\n })\n\n const table = this.tables[tableName]\n if (global.versions.drafts) {\n await this.execute({\n db,\n sql: sql`\n UPDATE ${table}\n SET latest = false\n WHERE ${table.id} != ${result.id};\n `,\n })\n }\n\n return result\n}\n"],"names":["sql","buildVersionGlobalFields","toSnakeCase","upsertRow","createGlobalVersion","autosave","globalSlug","req","versionData","db","sessions","transactionID","drizzle","global","payload","globals","config","find","slug","tableName","tableNameMap","get","versionsSuffix","result","adapter","data","latest","version","fields","operation","table","tables","versions","drafts","execute","id"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,oBAEpB,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,WAAW,EAA2B;IAE1F,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMH,KAAKI,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,SAAS,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASZ;IAEvE,MAAMa,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,EAAEnB,YAAYW,OAAOK,IAAI,EAAE,EAAE,IAAI,CAACI,cAAc,CAAC,CAAC;IAE5F,MAAMC,SAAS,MAAMpB,UAA8B;QACjDqB,SAAS,IAAI;QACbC,MAAM;YACJpB;YACAqB,QAAQ;YACRC,SAASnB;QACX;QACAC;QACAmB,QAAQ3B,yBAAyBY;QACjCgB,WAAW;QACXtB;QACAY;IACF;IAEA,MAAMW,QAAQ,IAAI,CAACC,MAAM,CAACZ,UAAU;IACpC,IAAIN,OAAOmB,QAAQ,CAACC,MAAM,EAAE;QAC1B,MAAM,IAAI,CAACC,OAAO,CAAC;YACjBzB;YACAT,KAAKA,GAAG,CAAC;iBACE,EAAE8B,MAAM;;gBAET,EAAEA,MAAMK,EAAE,CAAC,IAAI,EAAEZ,OAAOY,EAAE,CAAC;QACnC,CAAC;QACL;IACF;IAEA,OAAOZ;AACT"}
1
+ {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import type { CreateGlobalVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n autosave,\n globalSlug,\n publishedLocale,\n req = {} as PayloadRequest,\n snapshot,\n versionData,\n }: CreateGlobalVersionArgs,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const global = this.payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n const tableName = this.tableNameMap.get(`_${toSnakeCase(global.slug)}${this.versionsSuffix}`)\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data: {\n autosave,\n latest: true,\n publishedLocale,\n snapshot,\n version: versionData,\n },\n db,\n fields: buildVersionGlobalFields(this.payload.config, global),\n operation: 'create',\n req,\n tableName,\n })\n\n const table = this.tables[tableName]\n if (global.versions.drafts) {\n await this.execute({\n db,\n sql: sql`\n UPDATE ${table}\n SET latest = false\n WHERE ${table.id} != ${result.id};\n `,\n })\n }\n\n return result\n}\n"],"names":["sql","buildVersionGlobalFields","toSnakeCase","upsertRow","createGlobalVersion","autosave","globalSlug","publishedLocale","req","snapshot","versionData","db","sessions","transactionID","drizzle","global","payload","globals","config","find","slug","tableName","tableNameMap","get","versionsSuffix","result","adapter","data","latest","version","fields","operation","table","tables","versions","drafts","execute","id"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,oBAEpB,EACEC,QAAQ,EACRC,UAAU,EACVC,eAAe,EACfC,MAAM,CAAC,CAAmB,EAC1BC,QAAQ,EACRC,WAAW,EACa;IAE1B,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMJ,KAAKK,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,SAAS,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASd;IAEvE,MAAMe,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,EAAErB,YAAYa,OAAOK,IAAI,EAAE,EAAE,IAAI,CAACI,cAAc,CAAC,CAAC;IAE5F,MAAMC,SAAS,MAAMtB,UAA8B;QACjDuB,SAAS,IAAI;QACbC,MAAM;YACJtB;YACAuB,QAAQ;YACRrB;YACAE;YACAoB,SAASnB;QACX;QACAC;QACAmB,QAAQ7B,yBAAyB,IAAI,CAACe,OAAO,CAACE,MAAM,EAAEH;QACtDgB,WAAW;QACXvB;QACAa;IACF;IAEA,MAAMW,QAAQ,IAAI,CAACC,MAAM,CAACZ,UAAU;IACpC,IAAIN,OAAOmB,QAAQ,CAACC,MAAM,EAAE;QAC1B,MAAM,IAAI,CAACC,OAAO,CAAC;YACjBzB;YACAX,KAAKA,GAAG,CAAC;iBACE,EAAEgC,MAAM;;gBAET,EAAEA,MAAMK,EAAE,CAAC,IAAI,EAAEZ,OAAOY,EAAE,CAAC;QACnC,CAAC;QACL;IACF;IAEA,OAAOZ;AACT"}
@@ -1,4 +1,4 @@
1
1
  import type { CreateVersionArgs, TypeWithID, TypeWithVersion } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function createVersion<T extends TypeWithID>(this: DrizzleAdapter, { autosave, collectionSlug, parent, req, versionData, }: CreateVersionArgs<T>): Promise<TypeWithVersion<T>>;
3
+ export declare function createVersion<T extends TypeWithID>(this: DrizzleAdapter, { autosave, collectionSlug, parent, publishedLocale, req, snapshot, versionData, }: CreateVersionArgs<T>): Promise<TypeWithVersion<T>>;
4
4
  //# 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,iBAAiB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,QAAQ,EACR,cAAc,EACd,MAAM,EACN,GAA0B,EAC1B,WAAW,GACZ,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAiDxB"}
1
+ {"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,QAAQ,EACR,cAAc,EACd,MAAM,EACN,eAAe,EACf,GAA0B,EAC1B,QAAQ,EACR,WAAW,GACZ,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAmDxB"}
@@ -2,7 +2,7 @@ import { sql } from 'drizzle-orm';
2
2
  import { buildVersionCollectionFields } from 'payload';
3
3
  import toSnakeCase from 'to-snake-case';
4
4
  import { upsertRow } from './upsertRow/index.js';
5
- export async function createVersion({ autosave, collectionSlug, parent, req = {}, versionData }) {
5
+ export async function createVersion({ autosave, collectionSlug, parent, publishedLocale, req = {}, snapshot, versionData }) {
6
6
  const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
7
7
  const collection = this.payload.collections[collectionSlug].config;
8
8
  const defaultTableName = toSnakeCase(collection.slug);
@@ -17,6 +17,8 @@ export async function createVersion({ autosave, collectionSlug, parent, req = {}
17
17
  autosave,
18
18
  latest: true,
19
19
  parent,
20
+ publishedLocale,
21
+ snapshot,
20
22
  version
21
23
  };
22
24
  if ('createdAt' in version) {
@@ -26,7 +28,7 @@ export async function createVersion({ autosave, collectionSlug, parent, req = {}
26
28
  adapter: this,
27
29
  data,
28
30
  db,
29
- fields: buildVersionCollectionFields(collection),
31
+ fields: buildVersionCollectionFields(this.payload.config, collection),
30
32
  operation: 'create',
31
33
  req,
32
34
  tableName
@@ -36,11 +38,11 @@ export async function createVersion({ autosave, collectionSlug, parent, req = {}
36
38
  await this.execute({
37
39
  db,
38
40
  sql: sql`
39
- UPDATE ${table}
40
- SET latest = false
41
- WHERE ${table.id} != ${result.id}
42
- AND ${table.parent} = ${parent}
43
- `
41
+ UPDATE ${table}
42
+ SET latest = false
43
+ WHERE ${table.id} != ${result.id}
44
+ AND ${table.parent} = ${parent}
45
+ `
44
46
  });
45
47
  }
46
48
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import type { CreateVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n autosave,\n collectionSlug,\n parent,\n req = {} as PayloadRequest,\n versionData,\n }: CreateVersionArgs<T>,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const defaultTableName = toSnakeCase(collection.slug)\n\n const tableName = this.tableNameMap.get(`_${defaultTableName}${this.versionsSuffix}`)\n\n const version = { ...versionData }\n if (version.id) {\n delete version.id\n }\n\n const data: Record<string, unknown> = {\n autosave,\n latest: true,\n parent,\n version,\n }\n\n if ('createdAt' in version) {\n data.createdAt = version.createdAt\n }\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data,\n db,\n fields: buildVersionCollectionFields(collection),\n operation: 'create',\n req,\n tableName,\n })\n\n const table = this.tables[tableName]\n\n if (collection.versions.drafts) {\n await this.execute({\n db,\n sql: sql`\n UPDATE ${table}\n SET latest = false\n WHERE ${table.id} != ${result.id}\n AND ${table.parent} = ${parent}\n `,\n })\n }\n\n return result\n}\n"],"names":["sql","buildVersionCollectionFields","toSnakeCase","upsertRow","createVersion","autosave","collectionSlug","parent","req","versionData","db","sessions","transactionID","drizzle","collection","payload","collections","config","defaultTableName","slug","tableName","tableNameMap","get","versionsSuffix","version","id","data","latest","createdAt","result","adapter","fields","operation","table","tables","versions","drafts","execute"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,cAEpB,EACEC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,WAAW,EACU;IAEvB,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMH,KAAKI,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,eAAe,CAACW,MAAM;IAClE,MAAMC,mBAAmBhB,YAAYY,WAAWK,IAAI;IAEpD,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,EAAEJ,iBAAiB,EAAE,IAAI,CAACK,cAAc,CAAC,CAAC;IAEpF,MAAMC,UAAU;QAAE,GAAGf,WAAW;IAAC;IACjC,IAAIe,QAAQC,EAAE,EAAE;QACd,OAAOD,QAAQC,EAAE;IACnB;IAEA,MAAMC,OAAgC;QACpCrB;QACAsB,QAAQ;QACRpB;QACAiB;IACF;IAEA,IAAI,eAAeA,SAAS;QAC1BE,KAAKE,SAAS,GAAGJ,QAAQI,SAAS;IACpC;IAEA,MAAMC,SAAS,MAAM1B,UAA8B;QACjD2B,SAAS,IAAI;QACbJ;QACAhB;QACAqB,QAAQ9B,6BAA6Ba;QACrCkB,WAAW;QACXxB;QACAY;IACF;IAEA,MAAMa,QAAQ,IAAI,CAACC,MAAM,CAACd,UAAU;IAEpC,IAAIN,WAAWqB,QAAQ,CAACC,MAAM,EAAE;QAC9B,MAAM,IAAI,CAACC,OAAO,CAAC;YACjB3B;YACAV,KAAKA,GAAG,CAAC;aACF,EAAEiC,MAAM;;YAET,EAAEA,MAAMR,EAAE,CAAC,IAAI,EAAEI,OAAOJ,EAAE,CAAC;YAC3B,EAAEQ,MAAM1B,MAAM,CAAC,GAAG,EAAEA,OAAO;IACnC,CAAC;QACD;IACF;IAEA,OAAOsB;AACT"}
1
+ {"version":3,"sources":["../src/createVersion.ts"],"sourcesContent":["import type { CreateVersionArgs, PayloadRequest, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function createVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n autosave,\n collectionSlug,\n parent,\n publishedLocale,\n req = {} as PayloadRequest,\n snapshot,\n versionData,\n }: CreateVersionArgs<T>,\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const defaultTableName = toSnakeCase(collection.slug)\n\n const tableName = this.tableNameMap.get(`_${defaultTableName}${this.versionsSuffix}`)\n\n const version = { ...versionData }\n if (version.id) {\n delete version.id\n }\n\n const data: Record<string, unknown> = {\n autosave,\n latest: true,\n parent,\n publishedLocale,\n snapshot,\n version,\n }\n\n if ('createdAt' in version) {\n data.createdAt = version.createdAt\n }\n\n const result = await upsertRow<TypeWithVersion<T>>({\n adapter: this,\n data,\n db,\n fields: buildVersionCollectionFields(this.payload.config, collection),\n operation: 'create',\n req,\n tableName,\n })\n\n const table = this.tables[tableName]\n\n if (collection.versions.drafts) {\n await this.execute({\n db,\n sql: sql`\n UPDATE ${table}\n SET latest = false\n WHERE ${table.id} != ${result.id}\n AND ${table.parent} = ${parent}\n `,\n })\n }\n\n return result\n}\n"],"names":["sql","buildVersionCollectionFields","toSnakeCase","upsertRow","createVersion","autosave","collectionSlug","parent","publishedLocale","req","snapshot","versionData","db","sessions","transactionID","drizzle","collection","payload","collections","config","defaultTableName","slug","tableName","tableNameMap","get","versionsSuffix","version","id","data","latest","createdAt","result","adapter","fields","operation","table","tables","versions","drafts","execute"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,cAEpB,EACEC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,eAAe,EACfC,MAAM,CAAC,CAAmB,EAC1BC,QAAQ,EACRC,WAAW,EACU;IAEvB,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMJ,KAAKK,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,mBAAmBlB,YAAYc,WAAWK,IAAI;IAEpD,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,EAAEJ,iBAAiB,EAAE,IAAI,CAACK,cAAc,CAAC,CAAC;IAEpF,MAAMC,UAAU;QAAE,GAAGf,WAAW;IAAC;IACjC,IAAIe,QAAQC,EAAE,EAAE;QACd,OAAOD,QAAQC,EAAE;IACnB;IAEA,MAAMC,OAAgC;QACpCvB;QACAwB,QAAQ;QACRtB;QACAC;QACAE;QACAgB;IACF;IAEA,IAAI,eAAeA,SAAS;QAC1BE,KAAKE,SAAS,GAAGJ,QAAQI,SAAS;IACpC;IAEA,MAAMC,SAAS,MAAM5B,UAA8B;QACjD6B,SAAS,IAAI;QACbJ;QACAhB;QACAqB,QAAQhC,6BAA6B,IAAI,CAACgB,OAAO,CAACE,MAAM,EAAEH;QAC1DkB,WAAW;QACXzB;QACAa;IACF;IAEA,MAAMa,QAAQ,IAAI,CAACC,MAAM,CAACd,UAAU;IAEpC,IAAIN,WAAWqB,QAAQ,CAACC,MAAM,EAAE;QAC9B,MAAM,IAAI,CAACC,OAAO,CAAC;YACjB3B;YACAZ,KAAKA,GAAG,CAAC;eACA,EAAEmC,MAAM;;cAET,EAAEA,MAAMR,EAAE,CAAC,IAAI,EAAEI,OAAOJ,EAAE,CAAC;cAC3B,EAAEQ,MAAM5B,MAAM,CAAC,GAAG,EAAEA,OAAO;MACnC,CAAC;QACH;IACF;IAEA,OAAOwB;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,SAAS,CAAA;AAYxD,eAAO,MAAM,SAAS,EAAE,SA4DvB,CAAA"}
1
+ {"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../src/deleteOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,SAAS,CAAA;AAYxD,eAAO,MAAM,SAAS,EAAE,SA8DvB,CAAA"}
package/dist/deleteOne.js CHANGED
@@ -4,12 +4,12 @@ import { buildFindManyArgs } from './find/buildFindManyArgs.js';
4
4
  import buildQuery from './queries/buildQuery.js';
5
5
  import { selectDistinct } from './queries/selectDistinct.js';
6
6
  import { transform } from './transform/read/index.js';
7
- export const deleteOne = async function deleteOne({ collection: collectionSlug, req = {}, where: whereArg }) {
7
+ export const deleteOne = async function deleteOne({ collection: collectionSlug, joins: joinQuery, req = {}, where: whereArg }) {
8
8
  const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
9
9
  const collection = this.payload.collections[collectionSlug].config;
10
10
  const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
11
11
  let docToDelete;
12
- const { joins, selectFields, where } = await buildQuery({
12
+ const { joins, selectFields, where } = buildQuery({
13
13
  adapter: this,
14
14
  fields: collection.fields,
15
15
  locale: req.locale,
@@ -41,6 +41,7 @@ export const deleteOne = async function deleteOne({ collection: collectionSlug,
41
41
  adapter: this,
42
42
  depth: 0,
43
43
  fields: collection.fields,
44
+ joinQuery,
44
45
  tableName
45
46
  });
46
47
  findManyArgs.where = where;
@@ -50,7 +51,8 @@ export const deleteOne = async function deleteOne({ collection: collectionSlug,
50
51
  adapter: this,
51
52
  config: this.payload.config,
52
53
  data: docToDelete,
53
- fields: collection.fields
54
+ fields: collection.fields,
55
+ joinQuery
54
56
  });
55
57
  await this.deleteWhere({
56
58
  db,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { DeleteOne, PayloadRequest } from 'payload'\n\nimport { eq } from 'drizzle-orm'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildFindManyArgs } from './find/buildFindManyArgs.js'\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { transform } from './transform/read/index.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: DrizzleAdapter,\n { collection: collectionSlug, req = {} as PayloadRequest, where: whereArg },\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n\n let docToDelete: Record<string, unknown>\n\n const { joins, selectFields, where } = await buildQuery({\n adapter: this,\n fields: collection.fields,\n locale: req.locale,\n tableName,\n where: whereArg,\n })\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n docToDelete = await db.query[tableName].findFirst({\n where: eq(this.tables[tableName].id, selectDistinctResult[0].id),\n })\n } else {\n const findManyArgs = buildFindManyArgs({\n adapter: this,\n depth: 0,\n fields: collection.fields,\n tableName,\n })\n\n findManyArgs.where = where\n\n docToDelete = await db.query[tableName].findFirst(findManyArgs)\n }\n\n const result = transform({\n adapter: this,\n config: this.payload.config,\n data: docToDelete,\n fields: collection.fields,\n })\n\n await this.deleteWhere({\n db,\n tableName,\n where: eq(this.tables[tableName].id, docToDelete.id),\n })\n\n return result\n}\n"],"names":["eq","toSnakeCase","buildFindManyArgs","buildQuery","selectDistinct","transform","deleteOne","collection","collectionSlug","req","where","whereArg","db","sessions","transactionID","drizzle","payload","collections","config","tableName","tableNameMap","get","slug","docToDelete","joins","selectFields","adapter","fields","locale","selectDistinctResult","chainedMethods","args","method","id","query","findFirst","tables","findManyArgs","depth","result","data","deleteWhere"],"mappings":"AAEA,SAASA,EAAE,QAAQ,cAAa;AAChC,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,4BAA2B;AAErD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,YAAYC,cAAc,EAAEC,MAAM,CAAC,CAAmB,EAAEC,OAAOC,QAAQ,EAAE;IAE3E,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMJ,KAAKK,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMR,aAAa,IAAI,CAACS,OAAO,CAACC,WAAW,CAACT,eAAe,CAACU,MAAM;IAElE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACpB,YAAYM,WAAWe,IAAI;IAEnE,IAAIC;IAEJ,MAAM,EAAEC,KAAK,EAAEC,YAAY,EAAEf,KAAK,EAAE,GAAG,MAAMP,WAAW;QACtDuB,SAAS,IAAI;QACbC,QAAQpB,WAAWoB,MAAM;QACzBC,QAAQnB,IAAImB,MAAM;QAClBT;QACAT,OAAOC;IACT;IAEA,MAAMkB,uBAAuB,MAAMzB,eAAe;QAChDsB,SAAS,IAAI;QACbI,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDpB;QACAY;QACAC;QACAN;QACAT;IACF;IAEA,IAAImB,sBAAsB,CAAC,EAAE,EAAEI,IAAI;QACjCV,cAAc,MAAMX,GAAGsB,KAAK,CAACf,UAAU,CAACgB,SAAS,CAAC;YAChDzB,OAAOV,GAAG,IAAI,CAACoC,MAAM,CAACjB,UAAU,CAACc,EAAE,EAAEJ,oBAAoB,CAAC,EAAE,CAACI,EAAE;QACjE;IACF,OAAO;QACL,MAAMI,eAAenC,kBAAkB;YACrCwB,SAAS,IAAI;YACbY,OAAO;YACPX,QAAQpB,WAAWoB,MAAM;YACzBR;QACF;QAEAkB,aAAa3B,KAAK,GAAGA;QAErBa,cAAc,MAAMX,GAAGsB,KAAK,CAACf,UAAU,CAACgB,SAAS,CAACE;IACpD;IAEA,MAAME,SAASlC,UAAU;QACvBqB,SAAS,IAAI;QACbR,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;QAC3BsB,MAAMjB;QACNI,QAAQpB,WAAWoB,MAAM;IAC3B;IAEA,MAAM,IAAI,CAACc,WAAW,CAAC;QACrB7B;QACAO;QACAT,OAAOV,GAAG,IAAI,CAACoC,MAAM,CAACjB,UAAU,CAACc,EAAE,EAAEV,YAAYU,EAAE;IACrD;IAEA,OAAOM;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/deleteOne.ts"],"sourcesContent":["import type { DeleteOne, PayloadRequest } from 'payload'\n\nimport { eq } from 'drizzle-orm'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildFindManyArgs } from './find/buildFindManyArgs.js'\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { transform } from './transform/read/index.js'\n\nexport const deleteOne: DeleteOne = async function deleteOne(\n this: DrizzleAdapter,\n { collection: collectionSlug, joins: joinQuery, req = {} as PayloadRequest, where: whereArg },\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n\n let docToDelete: Record<string, unknown>\n\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.fields,\n locale: req.locale,\n tableName,\n where: whereArg,\n })\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n docToDelete = await db.query[tableName].findFirst({\n where: eq(this.tables[tableName].id, selectDistinctResult[0].id),\n })\n } else {\n const findManyArgs = buildFindManyArgs({\n adapter: this,\n depth: 0,\n fields: collection.fields,\n joinQuery,\n tableName,\n })\n\n findManyArgs.where = where\n\n docToDelete = await db.query[tableName].findFirst(findManyArgs)\n }\n\n const result = transform({\n adapter: this,\n config: this.payload.config,\n data: docToDelete,\n fields: collection.fields,\n joinQuery,\n })\n\n await this.deleteWhere({\n db,\n tableName,\n where: eq(this.tables[tableName].id, docToDelete.id),\n })\n\n return result\n}\n"],"names":["eq","toSnakeCase","buildFindManyArgs","buildQuery","selectDistinct","transform","deleteOne","collection","collectionSlug","joins","joinQuery","req","where","whereArg","db","sessions","transactionID","drizzle","payload","collections","config","tableName","tableNameMap","get","slug","docToDelete","selectFields","adapter","fields","locale","selectDistinctResult","chainedMethods","args","method","id","query","findFirst","tables","findManyArgs","depth","result","data","deleteWhere"],"mappings":"AAEA,SAASA,EAAE,QAAQ,cAAa;AAChC,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,4BAA2B;AAErD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,YAAYC,cAAc,EAAEC,OAAOC,SAAS,EAAEC,MAAM,CAAC,CAAmB,EAAEC,OAAOC,QAAQ,EAAE;IAE7F,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMJ,KAAKK,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMV,aAAa,IAAI,CAACW,OAAO,CAACC,WAAW,CAACX,eAAe,CAACY,MAAM;IAElE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACtB,YAAYM,WAAWiB,IAAI;IAEnE,IAAIC;IAEJ,MAAM,EAAEhB,KAAK,EAAEiB,YAAY,EAAEd,KAAK,EAAE,GAAGT,WAAW;QAChDwB,SAAS,IAAI;QACbC,QAAQrB,WAAWqB,MAAM;QACzBC,QAAQlB,IAAIkB,MAAM;QAClBR;QACAT,OAAOC;IACT;IAEA,MAAMiB,uBAAuB,MAAM1B,eAAe;QAChDuB,SAAS,IAAI;QACbI,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDnB;QACAL;QACAiB;QACAL;QACAT;IACF;IAEA,IAAIkB,sBAAsB,CAAC,EAAE,EAAEI,IAAI;QACjCT,cAAc,MAAMX,GAAGqB,KAAK,CAACd,UAAU,CAACe,SAAS,CAAC;YAChDxB,OAAOZ,GAAG,IAAI,CAACqC,MAAM,CAAChB,UAAU,CAACa,EAAE,EAAEJ,oBAAoB,CAAC,EAAE,CAACI,EAAE;QACjE;IACF,OAAO;QACL,MAAMI,eAAepC,kBAAkB;YACrCyB,SAAS,IAAI;YACbY,OAAO;YACPX,QAAQrB,WAAWqB,MAAM;YACzBlB;YACAW;QACF;QAEAiB,aAAa1B,KAAK,GAAGA;QAErBa,cAAc,MAAMX,GAAGqB,KAAK,CAACd,UAAU,CAACe,SAAS,CAACE;IACpD;IAEA,MAAME,SAASnC,UAAU;QACvBsB,SAAS,IAAI;QACbP,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;QAC3BqB,MAAMhB;QACNG,QAAQrB,WAAWqB,MAAM;QACzBlB;IACF;IAEA,MAAM,IAAI,CAACgC,WAAW,CAAC;QACrB5B;QACAO;QACAT,OAAOZ,GAAG,IAAI,CAACqC,MAAM,CAAChB,UAAU,CAACa,EAAE,EAAET,YAAYS,EAAE;IACrD;IAEA,OAAOM;AACT,EAAC"}
@@ -6,7 +6,7 @@ export const deleteVersions = async function deleteVersion({ collection, locale,
6
6
  const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
7
7
  const collectionConfig = this.payload.collections[collection].config;
8
8
  const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
9
- const fields = buildVersionCollectionFields(collectionConfig);
9
+ const fields = buildVersionCollectionFields(this.payload.config, collectionConfig);
10
10
  const { docs } = await findMany({
11
11
  adapter: this,
12
12
  fields,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deleteVersions.ts"],"sourcesContent":["import type { DeleteVersions, PayloadRequest, SanitizedCollectionConfig } from 'payload'\n\nimport { inArray } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const deleteVersions: DeleteVersions = async function deleteVersion(\n this: DrizzleAdapter,\n { collection, locale, req = {} as PayloadRequest, where: where },\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(collectionConfig)\n\n const { docs } = await findMany({\n adapter: this,\n fields,\n limit: 0,\n locale,\n page: 1,\n pagination: false,\n req,\n tableName,\n where,\n })\n\n const ids = []\n\n docs.forEach((doc) => {\n ids.push(doc.id)\n })\n\n if (ids.length > 0) {\n await this.deleteWhere({\n db,\n tableName,\n where: inArray(this.tables[tableName].id, ids),\n })\n }\n\n return docs\n}\n"],"names":["inArray","buildVersionCollectionFields","toSnakeCase","findMany","deleteVersions","deleteVersion","collection","locale","req","where","db","sessions","transactionID","drizzle","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","docs","adapter","limit","page","pagination","ids","forEach","doc","push","id","length","deleteWhere","tables"],"mappings":"AAEA,SAASA,OAAO,QAAQ,cAAa;AACrC,SAASC,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,iBAAiC,eAAeC,cAE3D,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,OAAOA,KAAK,EAAE;IAEhE,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMH,KAAKI,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAElB,YAAYY,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAGhE,MAAMC,SAAStB,6BAA6Ba;IAE5C,MAAM,EAAEU,IAAI,EAAE,GAAG,MAAMrB,SAAS;QAC9BsB,SAAS,IAAI;QACbF;QACAG,OAAO;QACPnB;QACAoB,MAAM;QACNC,YAAY;QACZpB;QACAU;QACAT;IACF;IAEA,MAAMoB,MAAM,EAAE;IAEdL,KAAKM,OAAO,CAAC,CAACC;QACZF,IAAIG,IAAI,CAACD,IAAIE,EAAE;IACjB;IAEA,IAAIJ,IAAIK,MAAM,GAAG,GAAG;QAClB,MAAM,IAAI,CAACC,WAAW,CAAC;YACrBzB;YACAQ;YACAT,OAAOT,QAAQ,IAAI,CAACoC,MAAM,CAAClB,UAAU,CAACe,EAAE,EAAEJ;QAC5C;IACF;IAEA,OAAOL;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/deleteVersions.ts"],"sourcesContent":["import type { DeleteVersions, PayloadRequest, SanitizedCollectionConfig } from 'payload'\n\nimport { inArray } from 'drizzle-orm'\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const deleteVersions: DeleteVersions = async function deleteVersion(\n this: DrizzleAdapter,\n { collection, locale, req = {} as PayloadRequest, where: where },\n) {\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig)\n\n const { docs } = await findMany({\n adapter: this,\n fields,\n limit: 0,\n locale,\n page: 1,\n pagination: false,\n req,\n tableName,\n where,\n })\n\n const ids = []\n\n docs.forEach((doc) => {\n ids.push(doc.id)\n })\n\n if (ids.length > 0) {\n await this.deleteWhere({\n db,\n tableName,\n where: inArray(this.tables[tableName].id, ids),\n })\n }\n\n return docs\n}\n"],"names":["inArray","buildVersionCollectionFields","toSnakeCase","findMany","deleteVersions","deleteVersion","collection","locale","req","where","db","sessions","transactionID","drizzle","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","docs","adapter","limit","page","pagination","ids","forEach","doc","push","id","length","deleteWhere","tables"],"mappings":"AAEA,SAASA,OAAO,QAAQ,cAAa;AACrC,SAASC,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,iBAAiC,eAAeC,cAE3D,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,OAAOA,KAAK,EAAE;IAEhE,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMH,KAAKI,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IACtE,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAElB,YAAYY,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAGhE,MAAMC,SAAStB,6BAA6B,IAAI,CAACc,OAAO,CAACE,MAAM,EAAEH;IAEjE,MAAM,EAAEU,IAAI,EAAE,GAAG,MAAMrB,SAAS;QAC9BsB,SAAS,IAAI;QACbF;QACAG,OAAO;QACPnB;QACAoB,MAAM;QACNC,YAAY;QACZpB;QACAU;QACAT;IACF;IAEA,MAAMoB,MAAM,EAAE;IAEdL,KAAKM,OAAO,CAAC,CAACC;QACZF,IAAIG,IAAI,CAACD,IAAIE,EAAE;IACjB;IAEA,IAAIJ,IAAIK,MAAM,GAAG,GAAG;QAClB,MAAM,IAAI,CAACC,WAAW,CAAC;YACrBzB;YACAQ;YACAT,OAAOT,QAAQ,IAAI,CAACoC,MAAM,CAAClB,UAAU,CAACe,EAAE,EAAEJ;QAC5C;IACF;IAEA,OAAOL;AACT,EAAC"}
@@ -1,10 +1,16 @@
1
1
  import type { DBQueryConfig } from 'drizzle-orm';
2
- import type { Field } from 'payload';
3
- import type { DrizzleAdapter } from '../types.js';
2
+ import type { Field, JoinQuery } from 'payload';
3
+ import type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js';
4
4
  type BuildFindQueryArgs = {
5
5
  adapter: DrizzleAdapter;
6
6
  depth: number;
7
7
  fields: Field[];
8
+ joinQuery?: JoinQuery;
9
+ /**
10
+ * The joins array will be mutated by pushing any joins needed for the where queries of join field joins
11
+ */
12
+ joins?: BuildQueryJoinAliases;
13
+ locale?: string;
8
14
  tableName: string;
9
15
  };
10
16
  export type Result = {
@@ -12,6 +18,6 @@ export type Result = {
12
18
  _locales?: DBQueryConfig<'many', true, any, any>;
13
19
  } & DBQueryConfig<'many', true, any, any>;
14
20
  } & DBQueryConfig<'many', true, any, any>;
15
- export declare const buildFindManyArgs: ({ adapter, depth, fields, tableName, }: BuildFindQueryArgs) => Record<string, unknown>;
21
+ export declare const buildFindManyArgs: ({ adapter, depth, fields, joinQuery, joins, locale, tableName, }: BuildFindQueryArgs) => Record<string, unknown>;
16
22
  export {};
17
23
  //# sourceMappingURL=buildFindManyArgs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildFindManyArgs.d.ts","sourceRoot":"","sources":["../../src/find/buildFindManyArgs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;KACjD,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAC1C,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAIzC,eAAO,MAAM,iBAAiB,2CAK3B,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA6D7C,CAAA"}
1
+ {"version":3,"file":"buildFindManyArgs.d.ts","sourceRoot":"","sources":["../../src/find/buildFindManyArgs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIxE,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;KACjD,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAC1C,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAIzC,eAAO,MAAM,iBAAiB,qEAQ3B,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAgE7C,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { traverseFields } from './traverseFields.js';
2
2
  // Generate the Drizzle query for findMany based on
3
3
  // a collection field structure
4
- export const buildFindManyArgs = ({ adapter, depth, fields, tableName })=>{
4
+ export const buildFindManyArgs = ({ adapter, depth, fields, joinQuery, joins = [], locale, tableName })=>{
5
5
  const result = {
6
6
  with: {}
7
7
  };
@@ -55,6 +55,9 @@ export const buildFindManyArgs = ({ adapter, depth, fields, tableName })=>{
55
55
  currentTableName: tableName,
56
56
  depth,
57
57
  fields,
58
+ joinQuery,
59
+ joins,
60
+ locale,
58
61
  path: '',
59
62
  tablePath: '',
60
63
  topLevelArgs: result,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/buildFindManyArgs.ts"],"sourcesContent":["import type { DBQueryConfig } from 'drizzle-orm'\nimport type { Field } from 'payload'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype BuildFindQueryArgs = {\n adapter: DrizzleAdapter\n depth: number\n fields: Field[]\n tableName: string\n}\n\nexport type Result = {\n with?: {\n _locales?: DBQueryConfig<'many', true, any, any>\n } & DBQueryConfig<'many', true, any, any>\n} & DBQueryConfig<'many', true, any, any>\n\n// Generate the Drizzle query for findMany based on\n// a collection field structure\nexport const buildFindManyArgs = ({\n adapter,\n depth,\n fields,\n tableName,\n}: BuildFindQueryArgs): Record<string, unknown> => {\n const result: Result = {\n with: {},\n }\n\n const _locales: Result = {\n columns: {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n\n if (adapter.tables[`${tableName}_texts`]) {\n result.with._texts = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}_numbers`]) {\n result.with._numbers = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.relationshipsSuffix}`]) {\n result.with._rels = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n result.with._locales = _locales\n }\n\n traverseFields({\n _locales,\n adapter,\n currentArgs: result,\n currentTableName: tableName,\n depth,\n fields,\n path: '',\n tablePath: '',\n topLevelArgs: result,\n topLevelTableName: tableName,\n })\n\n return result\n}\n"],"names":["traverseFields","buildFindManyArgs","adapter","depth","fields","tableName","result","with","_locales","columns","id","_parentID","tables","_texts","parent","orderBy","order","asc","ASC","_numbers","relationshipsSuffix","_rels","localesSuffix","currentArgs","currentTableName","path","tablePath","topLevelArgs","topLevelTableName"],"mappings":"AAKA,SAASA,cAAc,QAAQ,sBAAqB;AAepD,mDAAmD;AACnD,+BAA+B;AAC/B,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,OAAO,EACPC,KAAK,EACLC,MAAM,EACNC,SAAS,EACU;IACnB,MAAMC,SAAiB;QACrBC,MAAM,CAAC;IACT;IAEA,MAAMC,WAAmB;QACvBC,SAAS;YACPC,IAAI;YACJC,WAAW;QACb;QACAJ,MAAM,CAAC;IACT;IAEA,IAAIL,QAAQU,MAAM,CAAC,CAAC,EAAEP,UAAU,MAAM,CAAC,CAAC,EAAE;QACxCC,OAAOC,IAAI,CAACM,MAAM,GAAG;YACnBJ,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAId,QAAQU,MAAM,CAAC,CAAC,EAAEP,UAAU,QAAQ,CAAC,CAAC,EAAE;QAC1CC,OAAOC,IAAI,CAACY,QAAQ,GAAG;YACrBV,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAId,QAAQU,MAAM,CAAC,CAAC,EAAEP,UAAU,EAAEH,QAAQkB,mBAAmB,CAAC,CAAC,CAAC,EAAE;QAChEd,OAAOC,IAAI,CAACc,KAAK,GAAG;YAClBZ,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAId,QAAQU,MAAM,CAAC,CAAC,EAAEP,UAAU,EAAEH,QAAQoB,aAAa,CAAC,CAAC,CAAC,EAAE;QAC1DhB,OAAOC,IAAI,CAACC,QAAQ,GAAGA;IACzB;IAEAR,eAAe;QACbQ;QACAN;QACAqB,aAAajB;QACbkB,kBAAkBnB;QAClBF;QACAC;QACAqB,MAAM;QACNC,WAAW;QACXC,cAAcrB;QACdsB,mBAAmBvB;IACrB;IAEA,OAAOC;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/find/buildFindManyArgs.ts"],"sourcesContent":["import type { DBQueryConfig } from 'drizzle-orm'\nimport type { Field, JoinQuery } from 'payload'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype BuildFindQueryArgs = {\n adapter: DrizzleAdapter\n depth: number\n fields: Field[]\n joinQuery?: JoinQuery\n /**\n * The joins array will be mutated by pushing any joins needed for the where queries of join field joins\n */\n joins?: BuildQueryJoinAliases\n locale?: string\n tableName: string\n}\n\nexport type Result = {\n with?: {\n _locales?: DBQueryConfig<'many', true, any, any>\n } & DBQueryConfig<'many', true, any, any>\n} & DBQueryConfig<'many', true, any, any>\n\n// Generate the Drizzle query for findMany based on\n// a collection field structure\nexport const buildFindManyArgs = ({\n adapter,\n depth,\n fields,\n joinQuery,\n joins = [],\n locale,\n tableName,\n}: BuildFindQueryArgs): Record<string, unknown> => {\n const result: Result = {\n with: {},\n }\n\n const _locales: Result = {\n columns: {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n\n if (adapter.tables[`${tableName}_texts`]) {\n result.with._texts = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}_numbers`]) {\n result.with._numbers = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.relationshipsSuffix}`]) {\n result.with._rels = {\n columns: {\n id: false,\n parent: false,\n },\n orderBy: ({ order }, { asc: ASC }) => [ASC(order)],\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n result.with._locales = _locales\n }\n\n traverseFields({\n _locales,\n adapter,\n currentArgs: result,\n currentTableName: tableName,\n depth,\n fields,\n joinQuery,\n joins,\n locale,\n path: '',\n tablePath: '',\n topLevelArgs: result,\n topLevelTableName: tableName,\n })\n\n return result\n}\n"],"names":["traverseFields","buildFindManyArgs","adapter","depth","fields","joinQuery","joins","locale","tableName","result","with","_locales","columns","id","_parentID","tables","_texts","parent","orderBy","order","asc","ASC","_numbers","relationshipsSuffix","_rels","localesSuffix","currentArgs","currentTableName","path","tablePath","topLevelArgs","topLevelTableName"],"mappings":"AAKA,SAASA,cAAc,QAAQ,sBAAqB;AAqBpD,mDAAmD;AACnD,+BAA+B;AAC/B,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,OAAO,EACPC,KAAK,EACLC,MAAM,EACNC,SAAS,EACTC,QAAQ,EAAE,EACVC,MAAM,EACNC,SAAS,EACU;IACnB,MAAMC,SAAiB;QACrBC,MAAM,CAAC;IACT;IAEA,MAAMC,WAAmB;QACvBC,SAAS;YACPC,IAAI;YACJC,WAAW;QACb;QACAJ,MAAM,CAAC;IACT;IAEA,IAAIR,QAAQa,MAAM,CAAC,CAAC,EAAEP,UAAU,MAAM,CAAC,CAAC,EAAE;QACxCC,OAAOC,IAAI,CAACM,MAAM,GAAG;YACnBJ,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAIjB,QAAQa,MAAM,CAAC,CAAC,EAAEP,UAAU,QAAQ,CAAC,CAAC,EAAE;QAC1CC,OAAOC,IAAI,CAACY,QAAQ,GAAG;YACrBV,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAIjB,QAAQa,MAAM,CAAC,CAAC,EAAEP,UAAU,EAAEN,QAAQqB,mBAAmB,CAAC,CAAC,CAAC,EAAE;QAChEd,OAAOC,IAAI,CAACc,KAAK,GAAG;YAClBZ,SAAS;gBACPC,IAAI;gBACJI,QAAQ;YACV;YACAC,SAAS,CAAC,EAAEC,KAAK,EAAE,EAAE,EAAEC,KAAKC,GAAG,EAAE,GAAK;oBAACA,IAAIF;iBAAO;QACpD;IACF;IAEA,IAAIjB,QAAQa,MAAM,CAAC,CAAC,EAAEP,UAAU,EAAEN,QAAQuB,aAAa,CAAC,CAAC,CAAC,EAAE;QAC1DhB,OAAOC,IAAI,CAACC,QAAQ,GAAGA;IACzB;IAEAX,eAAe;QACbW;QACAT;QACAwB,aAAajB;QACbkB,kBAAkBnB;QAClBL;QACAC;QACAC;QACAC;QACAC;QACAqB,MAAM;QACNC,WAAW;QACXC,cAAcrB;QACdsB,mBAAmBvB;IACrB;IAEA,OAAOC;AACT,EAAC"}
@@ -5,7 +5,7 @@ type Args = {
5
5
  fields: Field[];
6
6
  tableName: string;
7
7
  } & Omit<FindArgs, 'collection'>;
8
- export declare const findMany: ({ adapter, fields, limit: limitArg, locale, page, pagination, req, skip, sort, tableName, where: whereArg, }: Args) => Promise<{
8
+ export declare const findMany: ({ adapter, fields, joins: joinQuery, limit: limitArg, locale, page, pagination, req, skip, sort, tableName, where: whereArg, }: Args) => Promise<{
9
9
  docs: any;
10
10
  hasNextPage: boolean;
11
11
  hasPrevPage: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"findMany.d.ts","sourceRoot":"","sources":["../../src/find/findMany.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAA8B,MAAM,SAAS,CAAA;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQjD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AAEhC,eAAO,MAAM,QAAQ,iHAYlB,IAAI;;;;;;;;;;;EA0IN,CAAA"}
1
+ {"version":3,"file":"findMany.d.ts","sourceRoot":"","sources":["../../src/find/findMany.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAA8B,MAAM,SAAS,CAAA;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQjD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AAEhC,eAAO,MAAM,QAAQ,mIAalB,IAAI;;;;;;;;;;;EA6IN,CAAA"}
@@ -3,7 +3,7 @@ import buildQuery from '../queries/buildQuery.js';
3
3
  import { selectDistinct } from '../queries/selectDistinct.js';
4
4
  import { transform } from '../transform/read/index.js';
5
5
  import { buildFindManyArgs } from './buildFindManyArgs.js';
6
- export const findMany = async function find({ adapter, fields, limit: limitArg, locale, page = 1, pagination, req = {}, skip, sort, tableName, where: whereArg }) {
6
+ export const findMany = async function find({ adapter, fields, joins: joinQuery, limit: limitArg, locale, page = 1, pagination, req = {}, skip, sort, tableName, where: whereArg }) {
7
7
  const db = adapter.sessions[await req.transactionID]?.db || adapter.drizzle;
8
8
  let limit = limitArg;
9
9
  let totalDocs;
@@ -15,7 +15,7 @@ export const findMany = async function find({ adapter, fields, limit: limitArg,
15
15
  if (limit === 0) {
16
16
  limit = undefined;
17
17
  }
18
- const { joins, orderBy, selectFields, where } = await buildQuery({
18
+ const { joins, orderBy, selectFields, where } = buildQuery({
19
19
  adapter,
20
20
  fields,
21
21
  locale,
@@ -38,6 +38,8 @@ export const findMany = async function find({ adapter, fields, limit: limitArg,
38
38
  adapter,
39
39
  depth: 0,
40
40
  fields,
41
+ joinQuery,
42
+ joins,
41
43
  tableName
42
44
  });
43
45
  selectDistinctMethods.push({
@@ -121,7 +123,8 @@ export const findMany = async function find({ adapter, fields, limit: limitArg,
121
123
  adapter,
122
124
  config: adapter.payload.config,
123
125
  data,
124
- fields
126
+ fields,
127
+ joinQuery
125
128
  });
126
129
  });
127
130
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/findMany.ts"],"sourcesContent":["import type { Field, FindArgs, PayloadRequest, TypeWithID } from 'payload'\n\nimport { inArray } from 'drizzle-orm'\n\nimport type { DrizzleAdapter } from '../types.js'\nimport type { ChainedMethods } from './chainMethods.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { selectDistinct } from '../queries/selectDistinct.js'\nimport { transform } from '../transform/read/index.js'\nimport { buildFindManyArgs } from './buildFindManyArgs.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: Field[]\n tableName: string\n} & Omit<FindArgs, 'collection'>\n\nexport const findMany = async function find({\n adapter,\n fields,\n limit: limitArg,\n locale,\n page = 1,\n pagination,\n req = {} as PayloadRequest,\n skip,\n sort,\n tableName,\n where: whereArg,\n}: Args) {\n const db = adapter.sessions[await req.transactionID]?.db || adapter.drizzle\n let limit = limitArg\n let totalDocs: number\n let totalPages: number\n let hasPrevPage: boolean\n let hasNextPage: boolean\n let pagingCounter: number\n const offset = skip || (page - 1) * limit\n\n if (limit === 0) {\n limit = undefined\n }\n\n const { joins, orderBy, selectFields, where } = await buildQuery({\n adapter,\n fields,\n locale,\n sort,\n tableName,\n where: whereArg,\n })\n\n const orderedIDMap: Record<number | string, number> = {}\n let orderedIDs: (number | string)[]\n\n const selectDistinctMethods: ChainedMethods = []\n\n if (orderBy?.order && orderBy?.column) {\n selectDistinctMethods.push({\n args: [orderBy.order(orderBy.column)],\n method: 'orderBy',\n })\n }\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n tableName,\n })\n\n selectDistinctMethods.push({ args: [offset], method: 'offset' })\n selectDistinctMethods.push({ args: [limit], method: 'limit' })\n\n const selectDistinctResult = await selectDistinct({\n adapter,\n chainedMethods: selectDistinctMethods,\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult) {\n if (selectDistinctResult.length === 0) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit,\n nextPage: null,\n page: 1,\n pagingCounter: 0,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n }\n } else {\n // set the id in an object for sorting later\n selectDistinctResult.forEach(({ id }, i) => {\n orderedIDMap[id] = i\n })\n orderedIDs = Object.keys(orderedIDMap)\n findManyArgs.where = inArray(adapter.tables[tableName].id, orderedIDs)\n }\n } else {\n findManyArgs.limit = limit\n findManyArgs.offset = offset\n findManyArgs.orderBy = orderBy.order(orderBy.column)\n\n if (where) {\n findManyArgs.where = where\n }\n }\n\n const findPromise = db.query[tableName].findMany(findManyArgs)\n\n if (pagination !== false && (orderedIDs ? orderedIDs?.length <= limit : true)) {\n totalDocs = await adapter.countDistinct({\n db,\n joins,\n tableName,\n where,\n })\n\n totalPages = typeof limit === 'number' && limit !== 0 ? Math.ceil(totalDocs / limit) : 1\n hasPrevPage = page > 1\n hasNextPage = totalPages > page\n pagingCounter = (page - 1) * limit + 1\n }\n\n const rawDocs = await findPromise\n // sort rawDocs from selectQuery\n if (Object.keys(orderedIDMap).length > 0) {\n rawDocs.sort((a, b) => orderedIDMap[a.id] - orderedIDMap[b.id])\n }\n\n if (pagination === false || !totalDocs) {\n totalDocs = rawDocs.length\n totalPages = 1\n pagingCounter = 1\n hasPrevPage = false\n hasNextPage = false\n }\n\n const docs = rawDocs.map((data: TypeWithID) => {\n return transform({\n adapter,\n config: adapter.payload.config,\n data,\n fields,\n })\n })\n\n return {\n docs,\n hasNextPage,\n hasPrevPage,\n limit: limitArg,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n }\n}\n"],"names":["inArray","buildQuery","selectDistinct","transform","buildFindManyArgs","findMany","find","adapter","fields","limit","limitArg","locale","page","pagination","req","skip","sort","tableName","where","whereArg","db","sessions","transactionID","drizzle","totalDocs","totalPages","hasPrevPage","hasNextPage","pagingCounter","offset","undefined","joins","orderBy","selectFields","orderedIDMap","orderedIDs","selectDistinctMethods","order","column","push","args","method","findManyArgs","depth","selectDistinctResult","chainedMethods","length","docs","nextPage","prevPage","forEach","id","i","Object","keys","tables","findPromise","query","countDistinct","Math","ceil","rawDocs","a","b","map","data","config","payload"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/find/findMany.ts"],"sourcesContent":["import type { Field, FindArgs, PayloadRequest, TypeWithID } from 'payload'\n\nimport { inArray } from 'drizzle-orm'\n\nimport type { DrizzleAdapter } from '../types.js'\nimport type { ChainedMethods } from './chainMethods.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { selectDistinct } from '../queries/selectDistinct.js'\nimport { transform } from '../transform/read/index.js'\nimport { buildFindManyArgs } from './buildFindManyArgs.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: Field[]\n tableName: string\n} & Omit<FindArgs, 'collection'>\n\nexport const findMany = async function find({\n adapter,\n fields,\n joins: joinQuery,\n limit: limitArg,\n locale,\n page = 1,\n pagination,\n req = {} as PayloadRequest,\n skip,\n sort,\n tableName,\n where: whereArg,\n}: Args) {\n const db = adapter.sessions[await req.transactionID]?.db || adapter.drizzle\n let limit = limitArg\n let totalDocs: number\n let totalPages: number\n let hasPrevPage: boolean\n let hasNextPage: boolean\n let pagingCounter: number\n const offset = skip || (page - 1) * limit\n\n if (limit === 0) {\n limit = undefined\n }\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter,\n fields,\n locale,\n sort,\n tableName,\n where: whereArg,\n })\n\n const orderedIDMap: Record<number | string, number> = {}\n let orderedIDs: (number | string)[]\n\n const selectDistinctMethods: ChainedMethods = []\n\n if (orderBy?.order && orderBy?.column) {\n selectDistinctMethods.push({\n args: [orderBy.order(orderBy.column)],\n method: 'orderBy',\n })\n }\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n joinQuery,\n joins,\n tableName,\n })\n\n selectDistinctMethods.push({ args: [offset], method: 'offset' })\n selectDistinctMethods.push({ args: [limit], method: 'limit' })\n\n const selectDistinctResult = await selectDistinct({\n adapter,\n chainedMethods: selectDistinctMethods,\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult) {\n if (selectDistinctResult.length === 0) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit,\n nextPage: null,\n page: 1,\n pagingCounter: 0,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n }\n } else {\n // set the id in an object for sorting later\n selectDistinctResult.forEach(({ id }, i) => {\n orderedIDMap[id] = i\n })\n orderedIDs = Object.keys(orderedIDMap)\n findManyArgs.where = inArray(adapter.tables[tableName].id, orderedIDs)\n }\n } else {\n findManyArgs.limit = limit\n findManyArgs.offset = offset\n findManyArgs.orderBy = orderBy.order(orderBy.column)\n\n if (where) {\n findManyArgs.where = where\n }\n }\n\n const findPromise = db.query[tableName].findMany(findManyArgs)\n\n if (pagination !== false && (orderedIDs ? orderedIDs?.length <= limit : true)) {\n totalDocs = await adapter.countDistinct({\n db,\n joins,\n tableName,\n where,\n })\n\n totalPages = typeof limit === 'number' && limit !== 0 ? Math.ceil(totalDocs / limit) : 1\n hasPrevPage = page > 1\n hasNextPage = totalPages > page\n pagingCounter = (page - 1) * limit + 1\n }\n\n const rawDocs = await findPromise\n // sort rawDocs from selectQuery\n if (Object.keys(orderedIDMap).length > 0) {\n rawDocs.sort((a, b) => orderedIDMap[a.id] - orderedIDMap[b.id])\n }\n\n if (pagination === false || !totalDocs) {\n totalDocs = rawDocs.length\n totalPages = 1\n pagingCounter = 1\n hasPrevPage = false\n hasNextPage = false\n }\n\n const docs = rawDocs.map((data: TypeWithID) => {\n return transform({\n adapter,\n config: adapter.payload.config,\n data,\n fields,\n joinQuery,\n })\n })\n\n return {\n docs,\n hasNextPage,\n hasPrevPage,\n limit: limitArg,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n }\n}\n"],"names":["inArray","buildQuery","selectDistinct","transform","buildFindManyArgs","findMany","find","adapter","fields","joins","joinQuery","limit","limitArg","locale","page","pagination","req","skip","sort","tableName","where","whereArg","db","sessions","transactionID","drizzle","totalDocs","totalPages","hasPrevPage","hasNextPage","pagingCounter","offset","undefined","orderBy","selectFields","orderedIDMap","orderedIDs","selectDistinctMethods","order","column","push","args","method","findManyArgs","depth","selectDistinctResult","chainedMethods","length","docs","nextPage","prevPage","forEach","id","i","Object","keys","tables","findPromise","query","countDistinct","Math","ceil","rawDocs","a","b","map","data","config","payload"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Field } from 'payload';
2
- import type { DrizzleAdapter } from '../types.js';
1
+ import type { Field, JoinQuery } from 'payload';
2
+ import type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js';
3
3
  import type { Result } from './buildFindManyArgs.js';
4
4
  type TraverseFieldArgs = {
5
5
  _locales: Result;
@@ -8,11 +8,14 @@ type TraverseFieldArgs = {
8
8
  currentTableName: string;
9
9
  depth?: number;
10
10
  fields: Field[];
11
+ joinQuery: JoinQuery;
12
+ joins?: BuildQueryJoinAliases;
13
+ locale?: string;
11
14
  path: string;
12
15
  tablePath: string;
13
16
  topLevelArgs: Record<string, unknown>;
14
17
  topLevelTableName: string;
15
18
  };
16
- export declare const traverseFields: ({ _locales, adapter, currentArgs, currentTableName, depth, fields, path, tablePath, topLevelArgs, topLevelTableName, }: TraverseFieldArgs) => Record<string, unknown>;
19
+ export declare const traverseFields: ({ _locales, adapter, currentArgs, currentTableName, depth, fields, joinQuery, joins, locale, path, tablePath, topLevelArgs, topLevelTableName, }: TraverseFieldArgs) => Record<string, unknown>;
17
20
  export {};
18
21
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,2HAWxB,iBAAiB,4BAsLnB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAK/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAKpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,qJAcxB,iBAAiB,4BA+PnB,CAAA"}
@@ -1,7 +1,12 @@
1
- import { fieldAffectsData, tabHasName } from 'payload/shared';
1
+ import { fieldAffectsData, fieldIsVirtual, tabHasName } from 'payload/shared';
2
2
  import toSnakeCase from 'to-snake-case';
3
- export const traverseFields = ({ _locales, adapter, currentArgs, currentTableName, depth, fields, path, tablePath, topLevelArgs, topLevelTableName })=>{
3
+ import { buildOrderBy } from '../queries/buildOrderBy.js';
4
+ import buildQuery from '../queries/buildQuery.js';
5
+ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableName, depth, fields, joinQuery = {}, joins, locale, path, tablePath, topLevelArgs, topLevelTableName })=>{
4
6
  fields.forEach((field)=>{
7
+ if (fieldIsVirtual(field)) {
8
+ return;
9
+ }
5
10
  // handle simple relationship
6
11
  if (depth > 0 && (field.type === 'upload' || field.type === 'relationship') && !field.hasMany && typeof field.relationTo === 'string') {
7
12
  if (field.localized) {
@@ -18,6 +23,8 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
18
23
  currentTableName,
19
24
  depth,
20
25
  fields: field.fields,
26
+ joinQuery,
27
+ joins,
21
28
  path,
22
29
  tablePath,
23
30
  topLevelArgs,
@@ -36,6 +43,8 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
36
43
  currentTableName,
37
44
  depth,
38
45
  fields: tab.fields,
46
+ joinQuery,
47
+ joins,
39
48
  path: tabPath,
40
49
  tablePath: tabTablePath,
41
50
  topLevelArgs,
@@ -76,6 +85,7 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
76
85
  currentTableName: arrayTableName,
77
86
  depth,
78
87
  fields: field.fields,
88
+ joinQuery,
79
89
  path: '',
80
90
  tablePath: '',
81
91
  topLevelArgs,
@@ -127,6 +137,7 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
127
137
  currentTableName: tableName,
128
138
  depth,
129
139
  fields: block.fields,
140
+ joinQuery,
130
141
  path: '',
131
142
  tablePath: '',
132
143
  topLevelArgs,
@@ -144,6 +155,8 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
144
155
  currentTableName,
145
156
  depth,
146
157
  fields: field.fields,
158
+ joinQuery,
159
+ joins,
147
160
  path: `${path}${field.name}_`,
148
161
  tablePath: `${tablePath}${toSnakeCase(field.name)}_`,
149
162
  topLevelArgs,
@@ -151,6 +164,60 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
151
164
  });
152
165
  break;
153
166
  }
167
+ case 'join':
168
+ {
169
+ // when `joinsQuery` is false, do not join
170
+ if (joinQuery === false) {
171
+ break;
172
+ }
173
+ const { limit: limitArg = 10, sort, where } = joinQuery[`${path.replaceAll('_', '.')}${field.name}`] || {};
174
+ let limit = limitArg;
175
+ if (limit !== 0) {
176
+ // get an additional document and slice it later to determine if there is a next page
177
+ limit += 1;
178
+ }
179
+ const fields = adapter.payload.collections[field.collection].config.fields;
180
+ const joinTableName = `${adapter.tableNameMap.get(toSnakeCase(field.collection))}${field.localized && adapter.payload.config.localization ? adapter.localesSuffix : ''}`;
181
+ const selectFields = {};
182
+ const orderBy = buildOrderBy({
183
+ adapter,
184
+ fields,
185
+ joins: [],
186
+ locale,
187
+ selectFields,
188
+ sort,
189
+ tableName: joinTableName
190
+ });
191
+ const withJoin = {
192
+ columns: selectFields,
193
+ orderBy: ()=>[
194
+ orderBy.order(orderBy.column)
195
+ ]
196
+ };
197
+ if (limit) {
198
+ withJoin.limit = limit;
199
+ }
200
+ if (field.localized) {
201
+ withJoin.columns._locale = true;
202
+ withJoin.columns._parentID = true;
203
+ } else {
204
+ withJoin.columns.id = true;
205
+ }
206
+ if (where) {
207
+ const { where: joinWhere } = buildQuery({
208
+ adapter,
209
+ fields,
210
+ joins,
211
+ locale,
212
+ sort,
213
+ tableName: joinTableName,
214
+ where
215
+ });
216
+ withJoin.where = ()=>joinWhere;
217
+ }
218
+ currentArgs.with[`${path.replaceAll('.', '_')}${field.name}`] = withJoin;
219
+ break;
220
+ }
154
221
  default:
155
222
  {
156
223
  break;