@payloadcms/drizzle 3.0.0-beta.127 → 3.0.0-beta.128

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 (38) hide show
  1. package/dist/countGlobalVersions.d.ts +3 -0
  2. package/dist/countGlobalVersions.d.ts.map +1 -0
  3. package/dist/countGlobalVersions.js +27 -0
  4. package/dist/countGlobalVersions.js.map +1 -0
  5. package/dist/countVersions.d.ts +3 -0
  6. package/dist/countVersions.d.ts.map +1 -0
  7. package/dist/countVersions.js +27 -0
  8. package/dist/countVersions.js.map +1 -0
  9. package/dist/exports/postgres.d.ts +0 -1
  10. package/dist/exports/postgres.d.ts.map +1 -1
  11. package/dist/exports/postgres.js +0 -1
  12. package/dist/exports/postgres.js.map +1 -1
  13. package/dist/find/traverseFields.js +51 -51
  14. package/dist/find/traverseFields.js.map +1 -1
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/postgres/createJSONQuery/index.d.ts +2 -9
  20. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  21. package/dist/postgres/createJSONQuery/index.js +34 -46
  22. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  23. package/dist/postgres/schema/traverseFields.js +246 -246
  24. package/dist/postgres/schema/traverseFields.js.map +1 -1
  25. package/dist/queries/getTableColumnFromPath.js +170 -170
  26. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  27. package/dist/queries/parseParams.d.ts.map +1 -1
  28. package/dist/queries/parseParams.js +16 -10
  29. package/dist/queries/parseParams.js.map +1 -1
  30. package/dist/transform/read/traverseFields.js +15 -15
  31. package/dist/transform/read/traverseFields.js.map +1 -1
  32. package/dist/types.d.ts +3 -2
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js.map +1 -1
  35. package/dist/upsertRow/index.js +2 -2
  36. package/dist/upsertRow/index.js.map +1 -1
  37. package/license.md +22 -0
  38. package/package.json +11 -4
@@ -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":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,SAAS,CAAA;AASzE,eAAO,MAAM,mBAAmB,EAAE,mBAgCjC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { buildVersionGlobalFields } from 'payload';
2
+ import toSnakeCase from 'to-snake-case';
3
+ import buildQuery from './queries/buildQuery.js';
4
+ export const countGlobalVersions = async function countGlobalVersions({ global, locale, req, where: whereArg }) {
5
+ const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
6
+ const tableName = this.tableNameMap.get(`_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`);
7
+ const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
8
+ const fields = buildVersionGlobalFields(this.payload.config, globalConfig);
9
+ const { joins, where } = buildQuery({
10
+ adapter: this,
11
+ fields,
12
+ locale,
13
+ tableName,
14
+ where: whereArg
15
+ });
16
+ const countResult = await this.countDistinct({
17
+ db,
18
+ joins,
19
+ tableName,
20
+ where
21
+ });
22
+ return {
23
+ totalDocs: countResult
24
+ };
25
+ };
26
+
27
+ //# sourceMappingURL=countGlobalVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/countGlobalVersions.ts"],"sourcesContent":["import type { CountGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\n\nexport const countGlobalVersions: CountGlobalVersions = async function countGlobalVersions(\n this: DrizzleAdapter,\n { global, locale, req, where: whereArg },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig)\n\n const { joins, where } = buildQuery({\n adapter: this,\n 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":["buildVersionGlobalFields","toSnakeCase","buildQuery","countGlobalVersions","global","locale","req","where","whereArg","globalConfig","payload","globals","config","find","slug","tableName","tableNameMap","get","versionsSuffix","db","sessions","transactionID","drizzle","fields","joins","adapter","countResult","countDistinct","totalDocs"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAEhD,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAExC,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASV;IAGzB,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEhB,YAAYQ,aAAaK,IAAI,EAAE,EAAE,IAAI,CAACI,cAAc,CAAC,CAAC;IAG5D,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMd,KAAKe,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IAEtE,MAAMC,SAASvB,yBAAyB,IAAI,CAACU,OAAO,CAACE,MAAM,EAAEH;IAE7D,MAAM,EAAEe,KAAK,EAAEjB,KAAK,EAAE,GAAGL,WAAW;QAClCuB,SAAS,IAAI;QACbF;QACAlB;QACAU;QACAR,OAAOC;IACT;IAEA,MAAMkB,cAAc,MAAM,IAAI,CAACC,aAAa,CAAC;QAC3CR;QACAK;QACAT;QACAR;IACF;IAEA,OAAO;QAAEqB,WAAWF;IAAY;AAClC,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":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA6B,MAAM,SAAS,CAAA;AASvE,eAAO,MAAM,aAAa,EAAE,aA8B3B,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { buildVersionCollectionFields } from 'payload';
2
+ import toSnakeCase from 'to-snake-case';
3
+ import buildQuery from './queries/buildQuery.js';
4
+ export const countVersions = async function countVersions({ collection, locale, req, where: whereArg }) {
5
+ const collectionConfig = this.payload.collections[collection].config;
6
+ const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
7
+ const db = this.sessions[await req?.transactionID]?.db || this.drizzle;
8
+ const fields = buildVersionCollectionFields(this.payload.config, collectionConfig);
9
+ const { joins, where } = buildQuery({
10
+ adapter: this,
11
+ fields,
12
+ locale,
13
+ tableName,
14
+ where: whereArg
15
+ });
16
+ const countResult = await this.countDistinct({
17
+ db,
18
+ joins,
19
+ tableName,
20
+ where
21
+ });
22
+ return {
23
+ totalDocs: countResult
24
+ };
25
+ };
26
+
27
+ //# sourceMappingURL=countVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/countVersions.ts"],"sourcesContent":["import type { CountVersions, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\n\nexport const countVersions: CountVersions = async function countVersions(\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(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const db = this.sessions[await req?.transactionID]?.db || this.drizzle\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig)\n\n const { joins, where } = buildQuery({\n adapter: this,\n 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":["buildVersionCollectionFields","toSnakeCase","buildQuery","countVersions","collection","locale","req","where","whereArg","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","db","sessions","transactionID","drizzle","fields","joins","adapter","countResult","countDistinct","totalDocs"],"mappings":"AAEA,SAASA,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAEhD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,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,CACrC,CAAC,CAAC,EAAEd,YAAYQ,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAGhE,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAAC,MAAMb,KAAKc,cAAc,EAAEF,MAAM,IAAI,CAACG,OAAO;IAEtE,MAAMC,SAAStB,6BAA6B,IAAI,CAACU,OAAO,CAACE,MAAM,EAAEH;IAEjE,MAAM,EAAEc,KAAK,EAAEhB,KAAK,EAAE,GAAGL,WAAW;QAClCsB,SAAS,IAAI;QACbF;QACAjB;QACAQ;QACAN,OAAOC;IACT;IAEA,MAAMiB,cAAc,MAAM,IAAI,CAACC,aAAa,CAAC;QAC3CR;QACAK;QACAV;QACAN;IACF;IAEA,OAAO;QAAEoB,WAAWF;IAAY;AAClC,EAAC"}
@@ -1,7 +1,6 @@
1
1
  export { countDistinct } from '../postgres/countDistinct.js';
2
2
  export { createDatabase } from '../postgres/createDatabase.js';
3
3
  export { createExtensions } from '../postgres/createExtensions.js';
4
- export { convertPathToJSONTraversal } from '../postgres/createJSONQuery/convertPathToJSONTraversal.js';
5
4
  export { createJSONQuery } from '../postgres/createJSONQuery/index.js';
6
5
  export { createMigration } from '../postgres/createMigration.js';
7
6
  export { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js';
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/exports/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2DAA2D,CAAA;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/exports/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,cAAc,sBAAsB,CAAA"}
@@ -1,7 +1,6 @@
1
1
  export { countDistinct } from '../postgres/countDistinct.js';
2
2
  export { createDatabase } from '../postgres/createDatabase.js';
3
3
  export { createExtensions } from '../postgres/createExtensions.js';
4
- export { convertPathToJSONTraversal } from '../postgres/createJSONQuery/convertPathToJSONTraversal.js';
5
4
  export { createJSONQuery } from '../postgres/createJSONQuery/index.js';
6
5
  export { createMigration } from '../postgres/createMigration.js';
7
6
  export { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/postgres.ts"],"sourcesContent":["export { countDistinct } from '../postgres/countDistinct.js'\nexport { createDatabase } from '../postgres/createDatabase.js'\nexport { createExtensions } from '../postgres/createExtensions.js'\nexport { convertPathToJSONTraversal } from '../postgres/createJSONQuery/convertPathToJSONTraversal.js'\nexport { createJSONQuery } from '../postgres/createJSONQuery/index.js'\nexport { createMigration } from '../postgres/createMigration.js'\nexport { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js'\nexport { deleteWhere } from '../postgres/deleteWhere.js'\nexport { dropDatabase } from '../postgres/dropDatabase.js'\nexport { execute } from '../postgres/execute.js'\nexport { getMigrationTemplate } from '../postgres/getMigrationTemplate.js'\nexport { init } from '../postgres/init.js'\nexport { insert } from '../postgres/insert.js'\nexport { requireDrizzleKit } from '../postgres/requireDrizzleKit.js'\nexport * from '../postgres/types.js'\n"],"names":["countDistinct","createDatabase","createExtensions","convertPathToJSONTraversal","createJSONQuery","createMigration","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","getMigrationTemplate","init","insert","requireDrizzleKit"],"mappings":"AAAA,SAASA,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,0BAA0B,QAAQ,4DAA2D;AACtG,SAASC,eAAe,QAAQ,uCAAsC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,sBAAsB,QAAQ,iCAAgC;AACvE,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,OAAO,QAAQ,yBAAwB;AAChD,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,IAAI,QAAQ,sBAAqB;AAC1C,SAASC,MAAM,QAAQ,wBAAuB;AAC9C,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,cAAc,uBAAsB"}
1
+ {"version":3,"sources":["../../src/exports/postgres.ts"],"sourcesContent":["export { countDistinct } from '../postgres/countDistinct.js'\nexport { createDatabase } from '../postgres/createDatabase.js'\nexport { createExtensions } from '../postgres/createExtensions.js'\nexport { createJSONQuery } from '../postgres/createJSONQuery/index.js'\nexport { createMigration } from '../postgres/createMigration.js'\nexport { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js'\nexport { deleteWhere } from '../postgres/deleteWhere.js'\nexport { dropDatabase } from '../postgres/dropDatabase.js'\nexport { execute } from '../postgres/execute.js'\nexport { getMigrationTemplate } from '../postgres/getMigrationTemplate.js'\nexport { init } from '../postgres/init.js'\nexport { insert } from '../postgres/insert.js'\nexport { requireDrizzleKit } from '../postgres/requireDrizzleKit.js'\nexport * from '../postgres/types.js'\n"],"names":["countDistinct","createDatabase","createExtensions","createJSONQuery","createMigration","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","getMigrationTemplate","init","insert","requireDrizzleKit"],"mappings":"AAAA,SAASA,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,eAAe,QAAQ,uCAAsC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,sBAAsB,QAAQ,iCAAgC;AACvE,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,OAAO,QAAQ,yBAAwB;AAChD,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,IAAI,QAAQ,sBAAqB;AAC1C,SAASC,MAAM,QAAQ,wBAAuB;AAC9C,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,cAAc,uBAAsB"}
@@ -127,28 +127,6 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
127
127
  }
128
128
  break;
129
129
  }
130
- case 'select':
131
- {
132
- if (field.hasMany) {
133
- if (select) {
134
- if (selectMode === 'include' && !select[field.name] || selectMode === 'exclude' && select[field.name] === false) {
135
- break;
136
- }
137
- }
138
- const withSelect = {
139
- columns: {
140
- id: false,
141
- order: false,
142
- parent: false
143
- },
144
- orderBy: ({ order }, { asc })=>[
145
- asc(order)
146
- ]
147
- };
148
- currentArgs.with[`${path}${field.name}`] = withSelect;
149
- }
150
- break;
151
- }
152
130
  case 'blocks':
153
131
  {
154
132
  const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name];
@@ -261,35 +239,6 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
261
239
  });
262
240
  break;
263
241
  }
264
- case 'point':
265
- {
266
- if (adapter.name === 'sqlite') {
267
- break;
268
- }
269
- const args = field.localized ? _locales : currentArgs;
270
- if (!args.columns) {
271
- args.columns = {};
272
- }
273
- if (!args.extras) {
274
- args.extras = {};
275
- }
276
- const name = `${path}${field.name}`;
277
- // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526
278
- // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON
279
- args.columns[name] = false;
280
- let shouldSelect = false;
281
- if (select || selectAllOnCurrentLevel) {
282
- if (selectAllOnCurrentLevel || selectMode === 'include' && select[field.name] === true || selectMode === 'exclude' && typeof select[field.name] === 'undefined') {
283
- shouldSelect = true;
284
- }
285
- } else {
286
- shouldSelect = true;
287
- }
288
- if (shouldSelect) {
289
- args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name);
290
- }
291
- break;
292
- }
293
242
  case 'join':
294
243
  {
295
244
  // when `joinsQuery` is false, do not join
@@ -413,6 +362,57 @@ export const traverseFields = ({ _locales, adapter, currentArgs, currentTableNam
413
362
  }
414
363
  break;
415
364
  }
365
+ case 'point':
366
+ {
367
+ if (adapter.name === 'sqlite') {
368
+ break;
369
+ }
370
+ const args = field.localized ? _locales : currentArgs;
371
+ if (!args.columns) {
372
+ args.columns = {};
373
+ }
374
+ if (!args.extras) {
375
+ args.extras = {};
376
+ }
377
+ const name = `${path}${field.name}`;
378
+ // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526
379
+ // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON
380
+ args.columns[name] = false;
381
+ let shouldSelect = false;
382
+ if (select || selectAllOnCurrentLevel) {
383
+ if (selectAllOnCurrentLevel || selectMode === 'include' && select[field.name] === true || selectMode === 'exclude' && typeof select[field.name] === 'undefined') {
384
+ shouldSelect = true;
385
+ }
386
+ } else {
387
+ shouldSelect = true;
388
+ }
389
+ if (shouldSelect) {
390
+ args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name);
391
+ }
392
+ break;
393
+ }
394
+ case 'select':
395
+ {
396
+ if (field.hasMany) {
397
+ if (select) {
398
+ if (selectMode === 'include' && !select[field.name] || selectMode === 'exclude' && select[field.name] === false) {
399
+ break;
400
+ }
401
+ }
402
+ const withSelect = {
403
+ columns: {
404
+ id: false,
405
+ order: false,
406
+ parent: false
407
+ },
408
+ orderBy: ({ order }, { asc })=>[
409
+ asc(order)
410
+ ]
411
+ };
412
+ currentArgs.with[`${path}${field.name}`] = withSelect;
413
+ }
414
+ break;
415
+ }
416
416
  default:
417
417
  {
418
418
  if (!select && !selectAllOnCurrentLevel) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { Field, JoinQuery, SelectMode, SelectType, TabAsField } from 'payload'\n\nimport { and, eq, sql } from 'drizzle-orm'\nimport { combineQueries } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: (Field | TabAsField)[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withinLocalizedField?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (field.localized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n if (\n field.type === 'collapsible' ||\n field.type === 'row' ||\n (field.type === 'tab' && !tabHasName(field))\n ) {\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.fields,\n joinQuery,\n joins,\n path,\n select,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n return\n }\n\n if (field.type === 'tabs') {\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n joinQuery,\n joins,\n path,\n select,\n selectAllOnCurrentLevel,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n return\n }\n\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.fields,\n joinQuery,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'select': {\n if (field.hasMany) {\n if (select) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n field.blocks.forEach((block) => {\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.fields,\n joinQuery,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.fields,\n joinQuery,\n joins,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const fields = adapter.payload.collections[field.collection].config.fields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const buildQueryResult = buildQuery({\n adapter,\n fields,\n joins,\n locale,\n sort,\n tableName: joinCollectionTableName,\n where,\n })\n\n let subQueryWhere = buildQueryResult.where\n const orderBy = buildQueryResult.orderBy\n\n let joinLocalesCollectionTableName: string | undefined\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n // Handle hasMany _rels table\n if (field.hasMany) {\n const joinRelsCollectionTableName = `${joinCollectionTableName}${adapter.relationshipsSuffix}`\n\n if (field.localized) {\n joinLocalesCollectionTableName = joinRelsCollectionTableName\n }\n\n let columnReferenceToCurrentID: string\n\n if (versions) {\n columnReferenceToCurrentID = `${topLevelTableName\n .replace('_', '')\n .replace(new RegExp(`${adapter.versionsSuffix}$`), '')}_id`\n } else {\n columnReferenceToCurrentID = `${topLevelTableName}_id`\n }\n\n joins.push({\n type: 'innerJoin',\n condition: and(\n eq(\n adapter.tables[joinRelsCollectionTableName].parent,\n adapter.tables[joinCollectionTableName].id,\n ),\n eq(\n sql.raw(`\"${joinRelsCollectionTableName}\".\"${columnReferenceToCurrentID}\"`),\n currentIDColumn,\n ),\n eq(adapter.tables[joinRelsCollectionTableName].path, field.on),\n ),\n table: adapter.tables[joinRelsCollectionTableName],\n })\n } else {\n // Handle localized without hasMany\n\n const foreignColumn = field.on.replaceAll('.', '_')\n\n if (field.localized) {\n joinLocalesCollectionTableName = `${joinCollectionTableName}${adapter.localesSuffix}`\n\n joins.push({\n type: 'innerJoin',\n condition: and(\n eq(\n adapter.tables[joinLocalesCollectionTableName]._parentID,\n adapter.tables[joinCollectionTableName].id,\n ),\n eq(\n adapter.tables[joinLocalesCollectionTableName][foreignColumn],\n currentIDColumn,\n ),\n ),\n table: adapter.tables[joinLocalesCollectionTableName],\n })\n // Handle without localized and without hasMany, just a condition append to where. With localized the inner join handles eq.\n } else {\n const constraint = eq(\n adapter.tables[joinCollectionTableName][foreignColumn],\n currentIDColumn,\n )\n\n if (subQueryWhere) {\n subQueryWhere = and(subQueryWhere, constraint)\n } else {\n subQueryWhere = constraint\n }\n }\n }\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select({\n id: adapter.tables[joinCollectionTableName].id,\n ...(joinLocalesCollectionTableName && {\n locale:\n adapter.tables[joinLocalesCollectionTableName].locale ||\n adapter.tables[joinLocalesCollectionTableName]._locale,\n }),\n })\n .from(adapter.tables[joinCollectionTableName])\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n })\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const jsonObjectSelect = field.localized\n ? sql.raw(\n `'_parentID', \"id\", '_locale', \"${adapter.tables[joinLocalesCollectionTableName].locale ? 'locale' : '_locale'}\"`,\n )\n : sql.raw(`'id', \"id\"`)\n\n if (adapter.name === 'sqlite') {\n currentArgs.extras[columnName] = sql`\n COALESCE((\n SELECT json_group_array(json_object(${jsonObjectSelect}))\n FROM (\n ${subQuery}\n ) AS ${sql.raw(`${columnName}_sub`)}\n ), '[]')\n `.as(columnName)\n } else {\n currentArgs.extras[columnName] = sql`\n COALESCE((\n SELECT json_agg(json_build_object(${jsonObjectSelect}))\n FROM (\n ${subQuery}\n ) AS ${sql.raw(`${columnName}_sub`)}\n ), '[]'::json)\n `.as(columnName)\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((field.localized || withinLocalizedField) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n field.type === 'relationship' &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","eq","sql","fieldAffectsData","fieldIsVirtual","tabHasName","toSnakeCase","buildQuery","chainMethods","traverseFields","_locales","adapter","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","tabs","map","tab","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","undefined","Object","keys","length","withSelect","order","parent","blocksSelect","blocks","block","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","args","extras","shouldSelect","raw","as","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","payload","collections","collection","config","joinCollectionTableName","buildQueryResult","subQueryWhere","joinLocalesCollectionTableName","currentIDColumn","joinRelsCollectionTableName","relationshipsSuffix","columnReferenceToCurrentID","replace","RegExp","versionsSuffix","push","condition","on","table","foreignColumn","constraint","chainedMethods","method","db","drizzle","subQuery","methods","query","from","column","columnName","jsonObjectSelect","fieldPath","rels","Array","isArray","numbers","texts"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { Field, JoinQuery, SelectMode, SelectType, TabAsField } from 'payload'\n\nimport { and, eq, sql } from 'drizzle-orm'\nimport { combineQueries } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: (Field | TabAsField)[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withinLocalizedField?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (field.localized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n if (\n field.type === 'collapsible' ||\n field.type === 'row' ||\n (field.type === 'tab' && !tabHasName(field))\n ) {\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.fields,\n joinQuery,\n joins,\n path,\n select,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n return\n }\n\n if (field.type === 'tabs') {\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n joinQuery,\n joins,\n path,\n select,\n selectAllOnCurrentLevel,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n return\n }\n\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.fields,\n joinQuery,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n field.blocks.forEach((block) => {\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.fields,\n joinQuery,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n currentArgs,\n currentTableName,\n depth,\n fields: field.fields,\n joinQuery,\n joins,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const fields = adapter.payload.collections[field.collection].config.fields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const buildQueryResult = buildQuery({\n adapter,\n fields,\n joins,\n locale,\n sort,\n tableName: joinCollectionTableName,\n where,\n })\n\n let subQueryWhere = buildQueryResult.where\n const orderBy = buildQueryResult.orderBy\n\n let joinLocalesCollectionTableName: string | undefined\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n // Handle hasMany _rels table\n if (field.hasMany) {\n const joinRelsCollectionTableName = `${joinCollectionTableName}${adapter.relationshipsSuffix}`\n\n if (field.localized) {\n joinLocalesCollectionTableName = joinRelsCollectionTableName\n }\n\n let columnReferenceToCurrentID: string\n\n if (versions) {\n columnReferenceToCurrentID = `${topLevelTableName\n .replace('_', '')\n .replace(new RegExp(`${adapter.versionsSuffix}$`), '')}_id`\n } else {\n columnReferenceToCurrentID = `${topLevelTableName}_id`\n }\n\n joins.push({\n type: 'innerJoin',\n condition: and(\n eq(\n adapter.tables[joinRelsCollectionTableName].parent,\n adapter.tables[joinCollectionTableName].id,\n ),\n eq(\n sql.raw(`\"${joinRelsCollectionTableName}\".\"${columnReferenceToCurrentID}\"`),\n currentIDColumn,\n ),\n eq(adapter.tables[joinRelsCollectionTableName].path, field.on),\n ),\n table: adapter.tables[joinRelsCollectionTableName],\n })\n } else {\n // Handle localized without hasMany\n\n const foreignColumn = field.on.replaceAll('.', '_')\n\n if (field.localized) {\n joinLocalesCollectionTableName = `${joinCollectionTableName}${adapter.localesSuffix}`\n\n joins.push({\n type: 'innerJoin',\n condition: and(\n eq(\n adapter.tables[joinLocalesCollectionTableName]._parentID,\n adapter.tables[joinCollectionTableName].id,\n ),\n eq(\n adapter.tables[joinLocalesCollectionTableName][foreignColumn],\n currentIDColumn,\n ),\n ),\n table: adapter.tables[joinLocalesCollectionTableName],\n })\n // Handle without localized and without hasMany, just a condition append to where. With localized the inner join handles eq.\n } else {\n const constraint = eq(\n adapter.tables[joinCollectionTableName][foreignColumn],\n currentIDColumn,\n )\n\n if (subQueryWhere) {\n subQueryWhere = and(subQueryWhere, constraint)\n } else {\n subQueryWhere = constraint\n }\n }\n }\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select({\n id: adapter.tables[joinCollectionTableName].id,\n ...(joinLocalesCollectionTableName && {\n locale:\n adapter.tables[joinLocalesCollectionTableName].locale ||\n adapter.tables[joinLocalesCollectionTableName]._locale,\n }),\n })\n .from(adapter.tables[joinCollectionTableName])\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n })\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const jsonObjectSelect = field.localized\n ? sql.raw(\n `'_parentID', \"id\", '_locale', \"${adapter.tables[joinLocalesCollectionTableName].locale ? 'locale' : '_locale'}\"`,\n )\n : sql.raw(`'id', \"id\"`)\n\n if (adapter.name === 'sqlite') {\n currentArgs.extras[columnName] = sql`\n COALESCE((\n SELECT json_group_array(json_object(${jsonObjectSelect}))\n FROM (\n ${subQuery}\n ) AS ${sql.raw(`${columnName}_sub`)}\n ), '[]')\n `.as(columnName)\n } else {\n currentArgs.extras[columnName] = sql`\n COALESCE((\n SELECT json_agg(json_build_object(${jsonObjectSelect}))\n FROM (\n ${subQuery}\n ) AS ${sql.raw(`${columnName}_sub`)}\n ), '[]'::json)\n `.as(columnName)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (field.hasMany) {\n if (select) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((field.localized || withinLocalizedField) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n field.type === 'relationship' &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","eq","sql","fieldAffectsData","fieldIsVirtual","tabHasName","toSnakeCase","buildQuery","chainMethods","traverseFields","_locales","adapter","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","tabs","map","tab","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","undefined","Object","keys","length","blocksSelect","blocks","block","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","payload","collections","collection","config","joinCollectionTableName","buildQueryResult","subQueryWhere","joinLocalesCollectionTableName","currentIDColumn","parent","joinRelsCollectionTableName","relationshipsSuffix","columnReferenceToCurrentID","replace","RegExp","versionsSuffix","push","condition","raw","on","table","foreignColumn","constraint","chainedMethods","args","method","db","drizzle","subQuery","methods","query","from","column","order","columnName","jsonObjectSelect","extras","as","shouldSelect","withSelect","fieldPath","rels","Array","isArray","numbers","texts"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { count } from './count.js';
2
+ export { countGlobalVersions } from './countGlobalVersions.js';
3
+ export { countVersions } from './countVersions.js';
2
4
  export { create } from './create.js';
3
5
  export { createGlobal } from './createGlobal.js';
4
6
  export { createGlobalVersion } from './createGlobalVersion.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  export { count } from './count.js';
2
+ export { countGlobalVersions } from './countGlobalVersions.js';
3
+ export { countVersions } from './countVersions.js';
2
4
  export { create } from './create.js';
3
5
  export { createGlobal } from './createGlobal.js';
4
6
  export { createGlobalVersion } from './createGlobalVersion.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { count } from './count.js'\nexport { create } from './create.js'\nexport { createGlobal } from './createGlobal.js'\nexport { createGlobalVersion } from './createGlobalVersion.js'\nexport { createTableName } from './createTableName.js'\nexport { createVersion } from './createVersion.js'\nexport { deleteMany } from './deleteMany.js'\nexport { deleteOne } from './deleteOne.js'\nexport { deleteVersions } from './deleteVersions.js'\nexport { destroy } from './destroy.js'\nexport { find } from './find.js'\nexport { chainMethods } from './find/chainMethods.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.js'\nexport { findMigrationDir } from './findMigrationDir.js'\nexport { findOne } from './findOne.js'\nexport { findVersions } from './findVersions.js'\nexport { migrate } from './migrate.js'\nexport { migrateDown } from './migrateDown.js'\nexport { migrateFresh } from './migrateFresh.js'\nexport { migrateRefresh } from './migrateRefresh.js'\nexport { migrateReset } from './migrateReset.js'\nexport { migrateStatus } from './migrateStatus.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport { updateOne } from './update.js'\nexport { updateGlobal } from './updateGlobal.js'\nexport { updateGlobalVersion } from './updateGlobalVersion.js'\nexport { updateVersion } from './updateVersion.js'\nexport { upsertRow } from './upsertRow/index.js'\nexport { buildIndexName } from './utilities/buildIndexName.js'\nexport { executeSchemaHooks } from './utilities/executeSchemaHooks.js'\nexport { extendDrizzleTable } from './utilities/extendDrizzleTable.js'\nexport { hasLocalesTable } from './utilities/hasLocalesTable.js'\nexport { pushDevSchema } from './utilities/pushDevSchema.js'\nexport { validateExistingBlockIsIdentical } from './utilities/validateExistingBlockIsIdentical.js'\n"],"names":["count","create","createGlobal","createGlobalVersion","createTableName","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","chainMethods","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateOne","updateGlobal","updateGlobalVersion","updateVersion","upsertRow","buildIndexName","executeSchemaHooks","extendDrizzleTable","hasLocalesTable","pushDevSchema","validateExistingBlockIsIdentical"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAY;AAClC,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,YAAY,QAAQ,yBAAwB;AACrD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,WAAW,QAAQ,2BAA0B;AAEtD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,SAAS,QAAQ,cAAa;AACvC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,gCAAgC,QAAQ,kDAAiD"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { count } from './count.js'\nexport { countGlobalVersions } from './countGlobalVersions.js'\nexport { countVersions } from './countVersions.js'\nexport { create } from './create.js'\nexport { createGlobal } from './createGlobal.js'\nexport { createGlobalVersion } from './createGlobalVersion.js'\nexport { createTableName } from './createTableName.js'\nexport { createVersion } from './createVersion.js'\nexport { deleteMany } from './deleteMany.js'\nexport { deleteOne } from './deleteOne.js'\nexport { deleteVersions } from './deleteVersions.js'\nexport { destroy } from './destroy.js'\nexport { find } from './find.js'\nexport { chainMethods } from './find/chainMethods.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.js'\nexport { findMigrationDir } from './findMigrationDir.js'\nexport { findOne } from './findOne.js'\nexport { findVersions } from './findVersions.js'\nexport { migrate } from './migrate.js'\nexport { migrateDown } from './migrateDown.js'\nexport { migrateFresh } from './migrateFresh.js'\nexport { migrateRefresh } from './migrateRefresh.js'\nexport { migrateReset } from './migrateReset.js'\nexport { migrateStatus } from './migrateStatus.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport { updateOne } from './update.js'\nexport { updateGlobal } from './updateGlobal.js'\nexport { updateGlobalVersion } from './updateGlobalVersion.js'\nexport { updateVersion } from './updateVersion.js'\nexport { upsertRow } from './upsertRow/index.js'\nexport { buildIndexName } from './utilities/buildIndexName.js'\nexport { executeSchemaHooks } from './utilities/executeSchemaHooks.js'\nexport { extendDrizzleTable } from './utilities/extendDrizzleTable.js'\nexport { hasLocalesTable } from './utilities/hasLocalesTable.js'\nexport { pushDevSchema } from './utilities/pushDevSchema.js'\nexport { validateExistingBlockIsIdentical } from './utilities/validateExistingBlockIsIdentical.js'\n"],"names":["count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createTableName","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","chainMethods","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateOne","updateGlobal","updateGlobalVersion","updateVersion","upsertRow","buildIndexName","executeSchemaHooks","extendDrizzleTable","hasLocalesTable","pushDevSchema","validateExistingBlockIsIdentical"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAY;AAClC,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,YAAY,QAAQ,yBAAwB;AACrD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,WAAW,QAAQ,2BAA0B;AAEtD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,SAAS,QAAQ,cAAa;AACvC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,gCAAgC,QAAQ,kDAAiD"}
@@ -1,10 +1,3 @@
1
- type Args = {
2
- operator: string;
3
- pathSegments: string[];
4
- treatAsArray?: string[];
5
- treatRootAsArray?: boolean;
6
- value: unknown;
7
- };
8
- export declare const createJSONQuery: ({ operator, pathSegments, treatAsArray, treatRootAsArray, value, }: Args) => string;
9
- export {};
1
+ import type { CreateJSONQueryArgs } from '../../types.js';
2
+ export declare const createJSONQuery: ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => string;
10
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAmDA,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,eAAe,uEAMzB,IAAI,KAAG,MAqBT,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAoBzD,eAAO,MAAM,eAAe,8CAA+C,mBAAmB,WAsB7F,CAAA"}
@@ -1,54 +1,42 @@
1
- import { convertPathToJSONTraversal } from './convertPathToJSONTraversal.js';
2
- import { formatJSONPathSegment } from './formatJSONPathSegment.js';
3
1
  const operatorMap = {
4
- contains: '~*',
5
- equals: '=',
6
- like: '~*'
2
+ contains: '~',
3
+ equals: '==',
4
+ in: 'in',
5
+ like: 'like_regex',
6
+ not_equals: '!=',
7
+ not_in: 'in'
7
8
  };
8
- const fromArray = ({ isRoot, operator, pathSegments, treatAsArray, value })=>{
9
- const newPathSegments = pathSegments.slice(isRoot ? 1 : 2);
10
- const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`;
11
- newPathSegments.unshift(alias);
12
- const arrayElements = isRoot ? pathSegments[0] : `${pathSegments[0]} -> ${formatJSONPathSegment(pathSegments[1])}`;
13
- return `EXISTS (
14
- SELECT 1
15
- FROM jsonb_array_elements(${arrayElements}) AS ${alias}
16
- WHERE ${createJSONQuery({
17
- operator,
18
- pathSegments: newPathSegments,
19
- treatAsArray,
20
- value
21
- })}
22
- )`;
23
- };
24
- const createConstraint = ({ operator, pathSegments, value })=>{
25
- const jsonQuery = convertPathToJSONTraversal(pathSegments);
26
- return `${pathSegments[0]}${jsonQuery} ${operatorMap[operator]} '${value}'`;
27
- };
28
- export const createJSONQuery = ({ operator, pathSegments, treatAsArray, treatRootAsArray, value })=>{
29
- if (treatRootAsArray) {
30
- return fromArray({
31
- isRoot: true,
32
- operator,
33
- pathSegments,
34
- treatAsArray,
35
- value
36
- });
9
+ const sanitizeValue = (value, operator)=>{
10
+ if (typeof value === 'string') {
11
+ // ignore casing with like
12
+ return `"${operator === 'like' ? '(?i)' : ''}${value}"`;
37
13
  }
38
- if (treatAsArray.includes(pathSegments[1])) {
39
- return fromArray({
40
- operator,
41
- pathSegments,
42
- treatAsArray,
43
- value
14
+ return value;
15
+ };
16
+ export const createJSONQuery = ({ column, operator, pathSegments, value })=>{
17
+ const columnName = typeof column === 'object' ? column.name : column;
18
+ const jsonPaths = pathSegments.slice(1).map((key)=>{
19
+ return `${key}[*]`;
20
+ }).join('.');
21
+ let sql = '';
22
+ if ([
23
+ 'in',
24
+ 'not_in'
25
+ ].includes(operator) && Array.isArray(value)) {
26
+ value.forEach((item, i)=>{
27
+ sql = `${sql}${createJSONQuery({
28
+ column,
29
+ operator: operator === 'in' ? 'equals' : 'not_equals',
30
+ pathSegments,
31
+ value: item
32
+ })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`;
44
33
  });
34
+ } else if (operator === 'exists') {
35
+ sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '$.${jsonPaths}')`;
36
+ } else {
37
+ sql = `jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`;
45
38
  }
46
- return createConstraint({
47
- operator,
48
- pathSegments,
49
- treatAsArray,
50
- value
51
- });
39
+ return sql;
52
40
  };
53
41
 
54
42
  //# sourceMappingURL=index.js.map