@payloadcms/drizzle 3.73.0-internal.e61e2ce → 3.73.0-internal.ff401d9

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 (35) hide show
  1. package/dist/findDistinct.d.ts.map +1 -1
  2. package/dist/findDistinct.js +23 -4
  3. package/dist/findDistinct.js.map +1 -1
  4. package/dist/index.d.ts +1 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +0 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  9. package/dist/postgres/createJSONQuery/index.js +7 -19
  10. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  11. package/dist/queries/parseParams.d.ts.map +1 -1
  12. package/dist/queries/parseParams.js +4 -5
  13. package/dist/queries/parseParams.js.map +1 -1
  14. package/dist/queries/selectDistinct.d.ts +2 -1
  15. package/dist/queries/selectDistinct.d.ts.map +1 -1
  16. package/dist/queries/selectDistinct.js +11 -7
  17. package/dist/queries/selectDistinct.js.map +1 -1
  18. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  19. package/dist/sqlite/createJSONQuery/index.js +1 -2
  20. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  21. package/dist/types.d.ts +0 -34
  22. package/dist/types.d.ts.map +1 -1
  23. package/dist/types.js.map +1 -1
  24. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  25. package/dist/utilities/buildCreateMigration.js +2 -20
  26. package/dist/utilities/buildCreateMigration.js.map +1 -1
  27. package/package.json +4 -4
  28. package/dist/utilities/blocksToJsonMigrator.d.ts +0 -15
  29. package/dist/utilities/blocksToJsonMigrator.d.ts.map +0 -1
  30. package/dist/utilities/blocksToJsonMigrator.js +0 -595
  31. package/dist/utilities/blocksToJsonMigrator.js.map +0 -1
  32. package/dist/utilities/escapeSQLValue.d.ts +0 -3
  33. package/dist/utilities/escapeSQLValue.d.ts.map +0 -1
  34. package/dist/utilities/escapeSQLValue.js +0 -20
  35. package/dist/utilities/escapeSQLValue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAkD,MAAM,SAAS,CAAA;AAU3F,eAAO,MAAM,YAAY,EAAE,YAuH1B,CAAA"}
1
+ {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAkD,MAAM,SAAS,CAAA;AA8B3F,eAAO,MAAM,YAAY,EAAE,YA6H1B,CAAA"}
@@ -1,9 +1,22 @@
1
+ import { max, sql } from 'drizzle-orm';
1
2
  import { getFieldByPath } from 'payload';
2
3
  import toSnakeCase from 'to-snake-case';
3
4
  import { buildQuery } from './queries/buildQuery.js';
4
5
  import { selectDistinct } from './queries/selectDistinct.js';
5
6
  import { getTransaction } from './utilities/getTransaction.js';
6
7
  import { DistinctSymbol } from './utilities/rawConstraint.js';
8
+ const getOrderColumn = (orderBy, selectFields, joins)=>{
9
+ if (orderBy.length === 0) {
10
+ return null;
11
+ }
12
+ if (orderBy[0].column === selectFields['_selected']) {
13
+ return null;
14
+ }
15
+ if (joins.length > 0) {
16
+ return orderBy[0].column;
17
+ }
18
+ return max(orderBy[0]?.column).as('_order');
19
+ };
7
20
  export const findDistinct = async function(args) {
8
21
  const collectionConfig = this.payload.collections[args.collection].config;
9
22
  const page = args.page || 1;
@@ -28,13 +41,19 @@ export const findDistinct = async function(args) {
28
41
  });
29
42
  orderBy.pop();
30
43
  const db = await getTransaction(this, args.req);
44
+ const _order = getOrderColumn(orderBy, selectFields, joins);
31
45
  const selectDistinctResult = await selectDistinct({
32
46
  adapter: this,
33
47
  db,
34
48
  forceRun: true,
49
+ hasAggregates: Boolean(_order) && !joins.length,
35
50
  joins,
36
51
  query: ({ query })=>{
37
- query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
52
+ if (_order && orderBy.length > 0 && !joins.length) {
53
+ query = query.orderBy(orderBy[0].order(sql`_order`));
54
+ } else {
55
+ query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
56
+ }
38
57
  if (args.limit) {
39
58
  if (offset) {
40
59
  query = query.offset(offset);
@@ -45,9 +64,9 @@ export const findDistinct = async function(args) {
45
64
  },
46
65
  selectFields: {
47
66
  _selected: selectFields['_selected'],
48
- ...orderBy.length && (orderBy[0].column === selectFields['_selected'] ? {} : {
49
- _order: orderBy[0]?.column
50
- })
67
+ ..._order ? {
68
+ _order
69
+ } : {}
51
70
  },
52
71
  tableName,
53
72
  where
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import { type FindDistinct, getFieldByPath, type SanitizedCollectionConfig } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n args.where ?? {},\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n ],\n },\n })\n\n orderBy.pop()\n\n const db = await getTransaction(this, args.req)\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n joins,\n query: ({ query }) => {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(orderBy.length &&\n (orderBy[0].column === selectFields['_selected'] ? {} : { _order: orderBy[0]?.column })),\n } as Record<string, GenericColumn>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: selectFields['_selected'],\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["getFieldByPath","toSnakeCase","buildQuery","selectDistinct","getTransaction","DistinctSymbol","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","joins","orderBy","selectFields","where","adapter","fields","flattenedFields","locale","sort","field","and","equals","pop","db","req","selectDistinctResult","forceRun","query","map","column","order","_selected","length","_order","includeRelationships","path","Array","isArray","relationTo","row","json","JSON","parse","Object","keys","find","each","Boolean","value","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { asc, desc, SQL } from 'drizzle-orm'\n\nimport { max, sql } from 'drizzle-orm'\nimport { type FindDistinct, getFieldByPath, type SanitizedCollectionConfig } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n args.where ?? {},\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n ],\n },\n })\n\n orderBy.pop()\n\n const db = await getTransaction(this, args.req)\n\n const _order = getOrderColumn(orderBy, selectFields, joins)\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: selectFields['_selected'],\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["max","sql","getFieldByPath","toSnakeCase","buildQuery","selectDistinct","getTransaction","DistinctSymbol","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","where","adapter","fields","flattenedFields","locale","sort","field","and","equals","pop","db","req","_order","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","map","_selected","includeRelationships","path","Array","isArray","relationTo","row","json","JSON","parse","Object","keys","find","each","value","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -33,7 +33,7 @@ export { buildRawSchema } from './schema/buildRawSchema.js';
33
33
  export { beginTransaction } from './transactions/beginTransaction.js';
34
34
  export { commitTransaction } from './transactions/commitTransaction.js';
35
35
  export { rollbackTransaction } from './transactions/rollbackTransaction.js';
36
- export type { BaseRawColumn, BlocksToJsonMigrator, BuildDrizzleTable, BuildQueryJoinAliases, ChainedMethods, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
36
+ export type { BaseRawColumn, BuildDrizzleTable, BuildQueryJoinAliases, ChainedMethods, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
37
37
  export { updateGlobal } from './updateGlobal.js';
38
38
  export { updateGlobalVersion } from './updateGlobalVersion.js';
39
39
  export { updateJobs } from './updateJobs.js';
@@ -42,7 +42,6 @@ export { updateOne } from './updateOne.js';
42
42
  export { updateVersion } from './updateVersion.js';
43
43
  export { upsert } from './upsert.js';
44
44
  export { upsertRow } from './upsertRow/index.js';
45
- export { buildDynamicPredefinedBlocksToJsonMigration, createBlocksToJsonMigrator, getBlocksToJsonMigrator, } from './utilities/blocksToJsonMigrator.js';
46
45
  export { buildCreateMigration } from './utilities/buildCreateMigration.js';
47
46
  export { buildIndexName } from './utilities/buildIndexName.js';
48
47
  export { createSchemaGenerator } from './utilities/createSchemaGenerator.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,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,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,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,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EACL,2CAA2C,EAC3C,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,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;AAGlG;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,mCAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -40,7 +40,6 @@ export { updateOne } from './updateOne.js';
40
40
  export { updateVersion } from './updateVersion.js';
41
41
  export { upsert } from './upsert.js';
42
42
  export { upsertRow } from './upsertRow/index.js';
43
- export { buildDynamicPredefinedBlocksToJsonMigration, createBlocksToJsonMigrator, getBlocksToJsonMigrator } from './utilities/blocksToJsonMigrator.js';
44
43
  export { buildCreateMigration } from './utilities/buildCreateMigration.js';
45
44
  export { buildIndexName } from './utilities/buildIndexName.js';
46
45
  export { createSchemaGenerator } from './utilities/createSchemaGenerator.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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 { findDistinct } from './findDistinct.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.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 { buildQuery } from './queries/buildQuery.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { parseParams } from './queries/parseParams.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { buildDrizzleRelations } from './schema/buildDrizzleRelations.js'\nexport { buildRawSchema } from './schema/buildRawSchema.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport type {\n BaseRawColumn,\n BlocksToJsonMigrator,\n BuildDrizzleTable,\n BuildQueryJoinAliases,\n ChainedMethods,\n ColumnToCodeConverter,\n CountDistinct,\n CreateJSONQueryArgs,\n DeleteWhere,\n DrizzleAdapter,\n DrizzleTransaction,\n DropDatabase,\n EnumRawColumn,\n Execute,\n GenericColumn,\n GenericColumns,\n GenericPgColumn,\n GenericRelation,\n GenericTable,\n IDType,\n Insert,\n IntegerRawColumn,\n Migration,\n PostgresDB,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RawTable,\n RelationMap,\n RequireDrizzleKit,\n SetColumnID,\n SQLiteDB,\n TimestampRawColumn,\n TransactionPg,\n TransactionSQLite,\n UUIDRawColumn,\n VectorRawColumn,\n} from './types.js'\nexport { updateGlobal } from './updateGlobal.js'\nexport { updateGlobalVersion } from './updateGlobalVersion.js'\nexport { updateJobs } from './updateJobs.js'\nexport { updateMany } from './updateMany.js'\nexport { updateOne } from './updateOne.js'\nexport { updateVersion } from './updateVersion.js'\nexport { upsert } from './upsert.js'\nexport { upsertRow } from './upsertRow/index.js'\nexport {\n buildDynamicPredefinedBlocksToJsonMigration,\n createBlocksToJsonMigrator,\n getBlocksToJsonMigrator,\n} from './utilities/blocksToJsonMigrator.js'\nexport { buildCreateMigration } from './utilities/buildCreateMigration.js'\nexport { buildIndexName } from './utilities/buildIndexName.js'\nexport { createSchemaGenerator } from './utilities/createSchemaGenerator.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'\nimport { findMigrationDir as payloadFindMigrationDir } from 'payload'\n\n/**\n * @deprecated remove in 4.0\n * use\n * ```ts\n * import { findMigrationDir } from 'payload'\n * ```\n */\nexport const findMigrationDir = payloadFindMigrationDir\n"],"names":["count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createTableName","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","chainMethods","findDistinct","findGlobal","findGlobalVersions","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","buildQuery","operatorMap","parseParams","queryDrafts","buildDrizzleRelations","buildRawSchema","beginTransaction","commitTransaction","rollbackTransaction","updateGlobal","updateGlobalVersion","updateJobs","updateMany","updateOne","updateVersion","upsert","upsertRow","buildDynamicPredefinedBlocksToJsonMigration","createBlocksToJsonMigrator","getBlocksToJsonMigrator","buildCreateMigration","buildIndexName","createSchemaGenerator","executeSchemaHooks","extendDrizzleTable","hasLocalesTable","pushDevSchema","validateExistingBlockIsIdentical","findMigrationDir","payloadFindMigrationDir"],"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,YAAY,QAAQ,oBAAmB;AAChD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,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,UAAU,QAAQ,0BAAyB;AACpD,SAASC,WAAW,QAAQ,2BAA0B;AAEtD,SAASC,WAAW,QAAQ,2BAA0B;AACtD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,cAAc,QAAQ,6BAA4B;AAC3D,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAyC3E,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SACEC,2CAA2C,EAC3CC,0BAA0B,EAC1BC,uBAAuB,QAClB,sCAAqC;AAC5C,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,gCAAgC,QAAQ,kDAAiD;AAClG,SAASC,oBAAoBC,uBAAuB,QAAQ,UAAS;AAErE;;;;;;CAMC,GACD,OAAO,MAAMD,mBAAmBC,wBAAuB"}
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 { findDistinct } from './findDistinct.js'\nexport { findGlobal } from './findGlobal.js'\nexport { findGlobalVersions } from './findGlobalVersions.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 { buildQuery } from './queries/buildQuery.js'\nexport { operatorMap } from './queries/operatorMap.js'\nexport type { Operators } from './queries/operatorMap.js'\nexport { parseParams } from './queries/parseParams.js'\nexport { queryDrafts } from './queryDrafts.js'\nexport { buildDrizzleRelations } from './schema/buildDrizzleRelations.js'\nexport { buildRawSchema } from './schema/buildRawSchema.js'\nexport { beginTransaction } from './transactions/beginTransaction.js'\nexport { commitTransaction } from './transactions/commitTransaction.js'\nexport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nexport type {\n BaseRawColumn,\n BuildDrizzleTable,\n BuildQueryJoinAliases,\n ChainedMethods,\n ColumnToCodeConverter,\n CountDistinct,\n CreateJSONQueryArgs,\n DeleteWhere,\n DrizzleAdapter,\n DrizzleTransaction,\n DropDatabase,\n EnumRawColumn,\n Execute,\n GenericColumn,\n GenericColumns,\n GenericPgColumn,\n GenericRelation,\n GenericTable,\n IDType,\n Insert,\n IntegerRawColumn,\n Migration,\n PostgresDB,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RawTable,\n RelationMap,\n RequireDrizzleKit,\n SetColumnID,\n SQLiteDB,\n TimestampRawColumn,\n TransactionPg,\n TransactionSQLite,\n UUIDRawColumn,\n VectorRawColumn,\n} from './types.js'\nexport { updateGlobal } from './updateGlobal.js'\nexport { updateGlobalVersion } from './updateGlobalVersion.js'\nexport { updateJobs } from './updateJobs.js'\nexport { updateMany } from './updateMany.js'\nexport { updateOne } from './updateOne.js'\nexport { updateVersion } from './updateVersion.js'\nexport { upsert } from './upsert.js'\nexport { upsertRow } from './upsertRow/index.js'\nexport { buildCreateMigration } from './utilities/buildCreateMigration.js'\nexport { buildIndexName } from './utilities/buildIndexName.js'\nexport { createSchemaGenerator } from './utilities/createSchemaGenerator.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'\nimport { findMigrationDir as payloadFindMigrationDir } from 'payload'\n\n/**\n * @deprecated remove in 4.0\n * use\n * ```ts\n * import { findMigrationDir } from 'payload'\n * ```\n */\nexport const findMigrationDir = payloadFindMigrationDir\n"],"names":["count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createTableName","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","chainMethods","findDistinct","findGlobal","findGlobalVersions","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","buildQuery","operatorMap","parseParams","queryDrafts","buildDrizzleRelations","buildRawSchema","beginTransaction","commitTransaction","rollbackTransaction","updateGlobal","updateGlobalVersion","updateJobs","updateMany","updateOne","updateVersion","upsert","upsertRow","buildCreateMigration","buildIndexName","createSchemaGenerator","executeSchemaHooks","extendDrizzleTable","hasLocalesTable","pushDevSchema","validateExistingBlockIsIdentical","findMigrationDir","payloadFindMigrationDir"],"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,YAAY,QAAQ,oBAAmB;AAChD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,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,UAAU,QAAQ,0BAAyB;AACpD,SAASC,WAAW,QAAQ,2BAA0B;AAEtD,SAASC,WAAW,QAAQ,2BAA0B;AACtD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,cAAc,QAAQ,6BAA4B;AAC3D,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAwC3E,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,gCAAgC,QAAQ,kDAAiD;AAClG,SAASC,oBAAoBC,uBAAuB,QAAQ,UAAS;AAErE;;;;;;CAMC,GACD,OAAO,MAAMD,mBAAmBC,wBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAsCzD,eAAO,MAAM,eAAe,8CAA+C,mBAAmB,WA8B7F,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;AAqBzD,eAAO,MAAM,eAAe,8CAA+C,mBAAmB,WA8B7F,CAAA"}
@@ -1,5 +1,3 @@
1
- import { APIError } from 'payload';
2
- import { SAFE_STRING_REGEX } from '../../utilities/escapeSQLValue.js';
3
1
  const operatorMap = {
4
2
  contains: '~',
5
3
  equals: '==',
@@ -10,24 +8,14 @@ const operatorMap = {
10
8
  not_like: '!like_regex'
11
9
  };
12
10
  const sanitizeValue = (value, operator)=>{
13
- if (value === null) {
14
- return `NULL`;
11
+ if (typeof value === 'string') {
12
+ // ignore casing with like or not_like
13
+ return `"${[
14
+ 'like',
15
+ 'not_like'
16
+ ].includes(operator) ? '(?i)' : ''}${value}"`;
15
17
  }
16
- if (typeof value === 'number' || typeof value === 'boolean') {
17
- return `${value}`;
18
- }
19
- if (typeof value !== 'string') {
20
- throw new Error('Invalid value type');
21
- }
22
- if (!SAFE_STRING_REGEX.test(value)) {
23
- throw new APIError(`${value} is not allowed as a JSON query value`, 400);
24
- }
25
- const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
26
- const prefix = [
27
- 'like',
28
- 'not_like'
29
- ].includes(operator ?? '') ? '(?i)' : '';
30
- return `"${prefix}${escaped}"`;
18
+ return value;
31
19
  };
32
20
  export const createJSONQuery = ({ column, operator, pathSegments, value })=>{
33
21
  const columnName = typeof column === 'object' ? column.name : column;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/postgres/createJSONQuery/index.ts"],"sourcesContent":["import { APIError } from 'payload'\n\nimport type { CreateJSONQueryArgs } from '../../types.js'\n\nimport { SAFE_STRING_REGEX } from '../../utilities/escapeSQLValue.js'\n\nconst operatorMap: Record<string, string> = {\n contains: '~',\n equals: '==',\n in: 'in',\n like: 'like_regex',\n not_equals: '!=',\n not_in: 'in',\n not_like: '!like_regex',\n}\n\nconst sanitizeValue = (value: unknown, operator?: string): string => {\n if (value === null) {\n return `NULL`\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return `${value}`\n }\n\n if (typeof value !== 'string') {\n throw new Error('Invalid value type')\n }\n\n if (!SAFE_STRING_REGEX.test(value)) {\n throw new APIError(`${value} is not allowed as a JSON query value`, 400)\n }\n\n const escaped = value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n\n const prefix = ['like', 'not_like'].includes(operator ?? '') ? '(?i)' : ''\n\n return `\"${prefix}${escaped}\"`\n}\n\nexport const createJSONQuery = ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => {\n const columnName = typeof column === 'object' ? column.name : column\n const jsonPaths = pathSegments\n .slice(1)\n .map((key) => {\n return `${key}[*]`\n })\n .join('.')\n\n const fullPath = pathSegments.length === 1 ? '$[*]' : `$.${jsonPaths}`\n\n let sql = ''\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(value)) {\n sql = '('\n value.forEach((item, i) => {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, value: item })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n })\n sql = `${sql})`\n } else if (operator === 'exists') {\n sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '${fullPath}')`\n } else if (['not_like'].includes(operator)) {\n const mappedOperator = operatorMap[operator]\n\n sql = `NOT jsonb_path_exists(${columnName}, '${fullPath} ? (@ ${mappedOperator.substring(1)} ${sanitizeValue(value, operator)})')`\n } else {\n sql = `jsonb_path_exists(${columnName}, '${fullPath} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`\n }\n\n return sql\n}\n"],"names":["APIError","SAFE_STRING_REGEX","operatorMap","contains","equals","in","like","not_equals","not_in","not_like","sanitizeValue","value","operator","Error","test","escaped","replace","prefix","includes","createJSONQuery","column","pathSegments","columnName","name","jsonPaths","slice","map","key","join","fullPath","length","sql","Array","isArray","forEach","item","i","mappedOperator","substring"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,UAAS;AAIlC,SAASC,iBAAiB,QAAQ,oCAAmC;AAErE,MAAMC,cAAsC;IAC1CC,UAAU;IACVC,QAAQ;IACRC,IAAI;IACJC,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ;AAEA,MAAMC,gBAAgB,CAACC,OAAgBC;IACrC,IAAID,UAAU,MAAM;QAClB,OAAO,CAAC,IAAI,CAAC;IACf;IAEA,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,WAAW;QAC3D,OAAO,GAAGA,OAAO;IACnB;IAEA,IAAI,OAAOA,UAAU,UAAU;QAC7B,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAI,CAACZ,kBAAkBa,IAAI,CAACH,QAAQ;QAClC,MAAM,IAAIX,SAAS,GAAGW,MAAM,qCAAqC,CAAC,EAAE;IACtE;IAEA,MAAMI,UAAUJ,MAAMK,OAAO,CAAC,OAAO,QAAQA,OAAO,CAAC,MAAM;IAE3D,MAAMC,SAAS;QAAC;QAAQ;KAAW,CAACC,QAAQ,CAACN,YAAY,MAAM,SAAS;IAExE,OAAO,CAAC,CAAC,EAAEK,SAASF,QAAQ,CAAC,CAAC;AAChC;AAEA,OAAO,MAAMI,kBAAkB,CAAC,EAAEC,MAAM,EAAER,QAAQ,EAAES,YAAY,EAAEV,KAAK,EAAuB;IAC5F,MAAMW,aAAa,OAAOF,WAAW,WAAWA,OAAOG,IAAI,GAAGH;IAC9D,MAAMI,YAAYH,aACfI,KAAK,CAAC,GACNC,GAAG,CAAC,CAACC;QACJ,OAAO,GAAGA,IAAI,GAAG,CAAC;IACpB,GACCC,IAAI,CAAC;IAER,MAAMC,WAAWR,aAAaS,MAAM,KAAK,IAAI,SAAS,CAAC,EAAE,EAAEN,WAAW;IAEtE,IAAIO,MAAM;IAEV,IAAI;QAAC;QAAM;KAAS,CAACb,QAAQ,CAACN,aAAaoB,MAAMC,OAAO,CAACtB,QAAQ;QAC/DoB,MAAM;QACNpB,MAAMuB,OAAO,CAAC,CAACC,MAAMC;YACnBL,MAAM,GAAGA,MAAMZ,gBAAgB;gBAAEC;gBAAQR,UAAUA,aAAa,OAAO,WAAW;gBAAcS;gBAAcV,OAAOwB;YAAK,KAAKC,MAAMzB,MAAMmB,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAElB,aAAa,OAAO,OAAO,MAAM,CAAC,CAAC,EAAE;QACxM;QACAmB,MAAM,GAAGA,IAAI,CAAC,CAAC;IACjB,OAAO,IAAInB,aAAa,UAAU;QAChCmB,MAAM,GAAGpB,UAAU,QAAQ,SAAS,GAAG,kBAAkB,EAAEW,WAAW,GAAG,EAAEO,SAAS,EAAE,CAAC;IACzF,OAAO,IAAI;QAAC;KAAW,CAACX,QAAQ,CAACN,WAAW;QAC1C,MAAMyB,iBAAiBnC,WAAW,CAACU,SAAS;QAE5CmB,MAAM,CAAC,sBAAsB,EAAET,WAAW,GAAG,EAAEO,SAAS,MAAM,EAAEQ,eAAeC,SAAS,CAAC,GAAG,CAAC,EAAE5B,cAAcC,OAAOC,UAAU,GAAG,CAAC;IACpI,OAAO;QACLmB,MAAM,CAAC,kBAAkB,EAAET,WAAW,GAAG,EAAEO,SAAS,MAAM,EAAE3B,WAAW,CAACU,SAAS,CAAC,CAAC,EAAEF,cAAcC,OAAOC,UAAU,GAAG,CAAC;IAC1H;IAEA,OAAOmB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/postgres/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\nconst operatorMap: Record<string, string> = {\n contains: '~',\n equals: '==',\n in: 'in',\n like: 'like_regex',\n not_equals: '!=',\n not_in: 'in',\n not_like: '!like_regex',\n}\n\nconst sanitizeValue = (value: unknown, operator?: string) => {\n if (typeof value === 'string') {\n // ignore casing with like or not_like\n return `\"${['like', 'not_like'].includes(operator) ? '(?i)' : ''}${value}\"`\n }\n\n return value as string\n}\n\nexport const createJSONQuery = ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => {\n const columnName = typeof column === 'object' ? column.name : column\n const jsonPaths = pathSegments\n .slice(1)\n .map((key) => {\n return `${key}[*]`\n })\n .join('.')\n\n const fullPath = pathSegments.length === 1 ? '$[*]' : `$.${jsonPaths}`\n\n let sql = ''\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(value)) {\n sql = '('\n value.forEach((item, i) => {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, value: item })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n })\n sql = `${sql})`\n } else if (operator === 'exists') {\n sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '${fullPath}')`\n } else if (['not_like'].includes(operator)) {\n const mappedOperator = operatorMap[operator]\n\n sql = `NOT jsonb_path_exists(${columnName}, '${fullPath} ? (@ ${mappedOperator.substring(1)} ${sanitizeValue(value, operator)})')`\n } else {\n sql = `jsonb_path_exists(${columnName}, '${fullPath} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`\n }\n\n return sql\n}\n"],"names":["operatorMap","contains","equals","in","like","not_equals","not_in","not_like","sanitizeValue","value","operator","includes","createJSONQuery","column","pathSegments","columnName","name","jsonPaths","slice","map","key","join","fullPath","length","sql","Array","isArray","forEach","item","i","mappedOperator","substring"],"mappings":"AAEA,MAAMA,cAAsC;IAC1CC,UAAU;IACVC,QAAQ;IACRC,IAAI;IACJC,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ;AAEA,MAAMC,gBAAgB,CAACC,OAAgBC;IACrC,IAAI,OAAOD,UAAU,UAAU;QAC7B,sCAAsC;QACtC,OAAO,CAAC,CAAC,EAAE;YAAC;YAAQ;SAAW,CAACE,QAAQ,CAACD,YAAY,SAAS,KAAKD,MAAM,CAAC,CAAC;IAC7E;IAEA,OAAOA;AACT;AAEA,OAAO,MAAMG,kBAAkB,CAAC,EAAEC,MAAM,EAAEH,QAAQ,EAAEI,YAAY,EAAEL,KAAK,EAAuB;IAC5F,MAAMM,aAAa,OAAOF,WAAW,WAAWA,OAAOG,IAAI,GAAGH;IAC9D,MAAMI,YAAYH,aACfI,KAAK,CAAC,GACNC,GAAG,CAAC,CAACC;QACJ,OAAO,GAAGA,IAAI,GAAG,CAAC;IACpB,GACCC,IAAI,CAAC;IAER,MAAMC,WAAWR,aAAaS,MAAM,KAAK,IAAI,SAAS,CAAC,EAAE,EAAEN,WAAW;IAEtE,IAAIO,MAAM;IAEV,IAAI;QAAC;QAAM;KAAS,CAACb,QAAQ,CAACD,aAAae,MAAMC,OAAO,CAACjB,QAAQ;QAC/De,MAAM;QACNf,MAAMkB,OAAO,CAAC,CAACC,MAAMC;YACnBL,MAAM,GAAGA,MAAMZ,gBAAgB;gBAAEC;gBAAQH,UAAUA,aAAa,OAAO,WAAW;gBAAcI;gBAAcL,OAAOmB;YAAK,KAAKC,MAAMpB,MAAMc,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAEb,aAAa,OAAO,OAAO,MAAM,CAAC,CAAC,EAAE;QACxM;QACAc,MAAM,GAAGA,IAAI,CAAC,CAAC;IACjB,OAAO,IAAId,aAAa,UAAU;QAChCc,MAAM,GAAGf,UAAU,QAAQ,SAAS,GAAG,kBAAkB,EAAEM,WAAW,GAAG,EAAEO,SAAS,EAAE,CAAC;IACzF,OAAO,IAAI;QAAC;KAAW,CAACX,QAAQ,CAACD,WAAW;QAC1C,MAAMoB,iBAAiB9B,WAAW,CAACU,SAAS;QAE5Cc,MAAM,CAAC,sBAAsB,EAAET,WAAW,GAAG,EAAEO,SAAS,MAAM,EAAEQ,eAAeC,SAAS,CAAC,GAAG,CAAC,EAAEvB,cAAcC,OAAOC,UAAU,GAAG,CAAC;IACpI,OAAO;QACLc,MAAM,CAAC,kBAAkB,EAAET,WAAW,GAAG,EAAEO,SAAS,MAAM,EAAEtB,WAAW,CAACU,SAAS,CAAC,CAAC,EAAEF,cAAcC,OAAOC,UAAU,GAAG,CAAC;IAC1H;IAEA,OAAOc;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAY,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAU5D,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAA;AAExD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,GAAG,CAqaZ"}
1
+ {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAY,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAS5D,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAA;AAExD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,GAAG,CAqaZ"}
@@ -1,8 +1,7 @@
1
- import { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm';
1
+ import { and, getTableName, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm';
2
2
  import { PgUUID } from 'drizzle-orm/pg-core';
3
3
  import { APIError, QueryError } from 'payload';
4
4
  import { validOperatorSet } from 'payload/shared';
5
- import { escapeSQLValue } from '../utilities/escapeSQLValue.js';
6
5
  import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
7
6
  import { isValidStringID } from '../utilities/isValidStringID.js';
8
7
  import { DistinctSymbol } from '../utilities/rawConstraint.js';
@@ -149,9 +148,9 @@ export function parseParams({ adapter, aliasTable, context, fields, joins, local
149
148
  'in',
150
149
  'not_in'
151
150
  ].includes(operator) && Array.isArray(val)) {
152
- formattedValue = `(${val.map((v)=>`${escapeSQLValue(v)}`).join(',')})`;
151
+ formattedValue = `(${val.map((v)=>`${v}`).join(',')})`;
153
152
  } else {
154
- formattedValue = `'${operatorKeys[operator].wildcard}${escapeSQLValue(val)}${operatorKeys[operator].wildcard}'`;
153
+ formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`;
155
154
  }
156
155
  if (operator === 'exists') {
157
156
  formattedValue = '';
@@ -302,7 +301,7 @@ export function parseParams({ adapter, aliasTable, context, fields, joins, local
302
301
  if (isInvalid) {
303
302
  throw new APIError(`Invalid ID value in ${JSON.stringify(queryValue)}`);
304
303
  }
305
- constraints.push(sql.raw(`${resolvedColumn.name} ${operator === 'in' ? 'IN' : 'NOT IN'} (${queryValue.map((e)=>{
304
+ constraints.push(sql.raw(`"${getTableName(resolvedColumn.table)}"."${resolvedColumn.name}" ${operator === 'in' ? 'IN' : 'NOT IN'} (${queryValue.map((e)=>{
306
305
  if (e === null) {
307
306
  return `NULL`;
308
307
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Operator, Sort, Where } from 'payload'\n\nimport { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm'\nimport { PgUUID } from 'drizzle-orm/pg-core'\nimport { APIError, QueryError } from 'payload'\nimport { validOperatorSet } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { escapeSQLValue } from '../utilities/escapeSQLValue.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { isValidStringID } from '../utilities/isValidStringID.js'\nimport { DistinctSymbol } from '../utilities/rawConstraint.js'\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\nexport type QueryContext = { rawSort?: SQL; sort: Sort }\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n context: QueryContext\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where\n}\n\nexport function parseParams({\n adapter,\n aliasTable,\n context,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: Args): SQL {\n let result: SQL\n const constraints: SQL[] = []\n\n if (typeof where === 'object' && Object.keys(where).length > 0) {\n // We need to determine if the whereKey is an AND, OR, or a schema path\n for (const relationOrPath of Object.keys(where)) {\n if (relationOrPath) {\n const condition = where[relationOrPath]\n let conditionOperator: typeof and | typeof or\n if (relationOrPath.toLowerCase() === 'and') {\n conditionOperator = and\n } else if (relationOrPath.toLowerCase() === 'or') {\n conditionOperator = or\n }\n if (Array.isArray(condition)) {\n const builtConditions = buildAndOrConditions({\n adapter,\n aliasTable,\n context,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (builtConditions.length > 0) {\n result = conditionOperator(...builtConditions)\n }\n } else {\n // It's a path - and there can be multiple comparisons on a single path.\n // For example - title like 'test' and title not equal to 'tester'\n // So we need to loop on keys again here to handle each operator independently\n const pathOperators = where[relationOrPath]\n if (typeof pathOperators === 'object') {\n for (let operator of Object.keys(pathOperators)) {\n if (validOperatorSet.has(operator as Operator)) {\n const val = where[relationOrPath][operator]\n\n const {\n columnName,\n columns,\n constraints: queryConstraints,\n field,\n getNotNullColumnByValue,\n pathSegments,\n rawColumn,\n table,\n } = getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath: relationOrPath,\n fields,\n joins,\n locale,\n parentIsLocalized,\n pathSegments: relationOrPath.replace(/__/g, '.').split('.'),\n selectFields,\n selectLocale,\n tableName,\n value: val,\n })\n\n const resolvedColumn =\n rawColumn ||\n (aliasTable && tableName === getNameFromDrizzleTable(table)\n ? aliasTable[columnName]\n : table[columnName])\n\n if (val === DistinctSymbol) {\n selectFields['_selected'] = resolvedColumn\n break\n }\n\n queryConstraints.forEach(({ columnName: col, table: constraintTable, value }) => {\n if (typeof value === 'string' && value.indexOf('%') > -1) {\n constraints.push(adapter.operators.like(constraintTable[col], value))\n } else {\n constraints.push(adapter.operators.equals(constraintTable[col], value))\n }\n })\n\n if (\n (['json', 'richText'].includes(field.type) ||\n (field.type === 'blocks' && adapter.blocksAsJSON)) &&\n Array.isArray(pathSegments) &&\n pathSegments.length > 1\n ) {\n if (adapter.name === 'postgres') {\n const constraint = adapter.createJSONQuery({\n column: rawColumn || table[columnName],\n operator,\n pathSegments,\n value: val,\n })\n\n constraints.push(sql.raw(constraint))\n break\n }\n\n const segments = pathSegments.slice(1)\n segments.unshift(table[columnName].name)\n\n if (field.type === 'richText') {\n // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg\n const jsonTable =\n joins.length === 0\n ? tableName\n : joins[joins.length - 1].table[\n Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]\n ]\n const jsonQuery = adapter.createJSONQuery({\n operator,\n pathSegments: segments,\n table: jsonTable,\n treatAsArray: ['children'],\n treatRootAsArray: true,\n value: val,\n })\n\n constraints.push(sql.raw(jsonQuery))\n break\n }\n\n const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments)\n const operatorKeys: Record<string, { operator: string; wildcard: string }> = {\n contains: { operator: 'like', wildcard: '%' },\n equals: { operator: '=', wildcard: '' },\n exists: { operator: val === true ? 'is not null' : 'is null', wildcard: '' },\n in: { operator: 'in', wildcard: '' },\n like: { operator: 'like', wildcard: '%' },\n not_equals: { operator: '<>', wildcard: '' },\n not_in: { operator: 'not in', wildcard: '' },\n not_like: { operator: 'not like', wildcard: '%' },\n }\n\n let formattedValue = val\n if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {\n formattedValue = val\n } else if (['in', 'not_in'].includes(operator) && Array.isArray(val)) {\n formattedValue = `(${val.map((v) => `${escapeSQLValue(v)}`).join(',')})`\n } else {\n formattedValue = `'${operatorKeys[operator].wildcard}${escapeSQLValue(val)}${operatorKeys[operator].wildcard}'`\n }\n if (operator === 'exists') {\n formattedValue = ''\n }\n\n let jsonQuerySelector = `${table[columnName].name}${jsonQuery}`\n\n if (adapter.name === 'sqlite' && operator === 'not_like') {\n jsonQuerySelector = `COALESCE(${table[columnName].name}${jsonQuery}, '')`\n }\n\n const rawSQLQuery = `${jsonQuerySelector} ${operatorKeys[operator].operator} ${formattedValue}`\n\n constraints.push(sql.raw(rawSQLQuery))\n\n break\n }\n\n if (getNotNullColumnByValue) {\n const columnName = getNotNullColumnByValue(val)\n if (columnName) {\n constraints.push(isNotNull(table[columnName]))\n } else {\n throw new QueryError([{ path: relationOrPath }])\n }\n break\n }\n\n if (\n operator === 'like' &&\n (field.type === 'number' ||\n field.type === 'relationship' ||\n field.type === 'upload' ||\n table[columnName].columnType === 'PgUUID')\n ) {\n operator = 'equals'\n }\n\n if (operator === 'like') {\n constraints.push(\n and(\n ...val\n .split(' ')\n .map((word) => adapter.operators.like(table[columnName], `%${word}%`)),\n ),\n )\n break\n }\n\n const sanitizedQueryValue = sanitizeQueryValue({\n adapter,\n columns,\n field,\n isUUID: table?.[columnName] instanceof PgUUID,\n operator,\n relationOrPath,\n val,\n })\n\n if (sanitizedQueryValue === null) {\n break\n }\n\n const {\n columns: queryColumns,\n operator: queryOperator,\n value: queryValue,\n } = sanitizedQueryValue\n\n // Handle polymorphic relationships by value\n if (queryColumns) {\n if (!queryColumns.length) {\n break\n }\n\n let wrapOperator = or\n\n if (queryValue === null && ['equals', 'not_equals'].includes(operator)) {\n if (operator === 'equals') {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn }) =>\n operator === 'equals' ? isNull(rawColumn) : isNotNull(rawColumn),\n ),\n ),\n )\n break\n }\n\n if (['not_equals', 'not_in'].includes(operator)) {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn, value }) =>\n adapter.operators[queryOperator](rawColumn, value),\n ),\n ),\n )\n\n break\n }\n\n if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(resolvedColumn),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(resolvedColumn, queryValue),\n ),\n )\n break\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n Array.isArray(queryValue) &&\n operator === 'not_in'\n ) {\n constraints.push(\n sql`(${notInArray(table[columnName], queryValue)} OR\n ${table[columnName]}\n IS\n NULL)`,\n )\n\n break\n }\n\n if (operator === 'equals' && queryValue === null) {\n constraints.push(isNull(resolvedColumn))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(resolvedColumn))\n break\n }\n\n if (field.type === 'point' && adapter.name === 'postgres') {\n switch (operator) {\n case 'intersects': {\n constraints.push(\n sql`ST_Intersects(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n case 'near': {\n const [lng, lat, maxDistance, minDistance] = queryValue as number[]\n const geoConstraints: SQL[] = []\n\n if (typeof maxDistance === 'number' && !Number.isNaN(maxDistance)) {\n geoConstraints.push(\n sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`,\n )\n }\n\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n geoConstraints.push(\n sql`ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`,\n )\n }\n if (geoConstraints.length) {\n context.sort = relationOrPath\n context.rawSort = sql`${table[columnName]} <-> ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326)`\n constraints.push(and(...geoConstraints))\n }\n break\n }\n\n case 'within': {\n constraints.push(\n sql`ST_Within(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n default:\n break\n }\n break\n }\n\n const orConditions: SQL<unknown>[] = []\n let resolvedQueryValue = queryValue\n if (\n operator === 'in' &&\n Array.isArray(queryValue) &&\n queryValue.some((v) => v === null)\n ) {\n orConditions.push(isNull(resolvedColumn))\n resolvedQueryValue = queryValue.filter((v) => v !== null)\n }\n\n let constraint = adapter.operators[queryOperator](\n resolvedColumn,\n resolvedQueryValue,\n )\n\n if (\n adapter.limitedBoundParameters &&\n (operator === 'in' || operator === 'not_in') &&\n relationOrPath === 'id' &&\n Array.isArray(queryValue)\n ) {\n let isInvalid = false\n for (const val of queryValue) {\n if (typeof val === 'number' || val === null) {\n continue\n }\n if (typeof val === 'string') {\n if (!isValidStringID(val)) {\n isInvalid = true\n break\n } else {\n continue\n }\n }\n isInvalid = true\n break\n }\n\n if (isInvalid) {\n throw new APIError(`Invalid ID value in ${JSON.stringify(queryValue)}`)\n }\n\n constraints.push(\n sql.raw(\n `${resolvedColumn.name} ${operator === 'in' ? 'IN' : 'NOT IN'} (${queryValue\n .map((e) => {\n if (e === null) {\n return `NULL`\n }\n\n if (typeof e === 'number') {\n return e\n }\n\n return `'${e}'`\n })\n .join(',')})`,\n ),\n )\n break\n }\n\n if (orConditions.length) {\n orConditions.push(constraint)\n constraint = or(...orConditions)\n }\n constraints.push(constraint)\n }\n }\n }\n }\n }\n }\n }\n if (constraints.length > 0) {\n if (result) {\n result = and(result, ...constraints)\n } else {\n result = and(...constraints)\n }\n }\n if (constraints.length === 1 && !result) {\n ;[result] = constraints\n }\n\n return result\n}\n"],"names":["and","isNotNull","isNull","ne","notInArray","or","sql","PgUUID","APIError","QueryError","validOperatorSet","escapeSQLValue","getNameFromDrizzleTable","isValidStringID","DistinctSymbol","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","aliasTable","context","fields","joins","locale","parentIsLocalized","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","has","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","resolvedColumn","forEach","col","constraintTable","indexOf","push","operators","like","equals","includes","type","blocksAsJSON","name","constraint","createJSONQuery","column","raw","segments","slice","unshift","jsonTable","getOwnPropertySymbols","jsonQuery","treatAsArray","treatRootAsArray","convertPathToJSONTraversal","operatorKeys","contains","wildcard","exists","in","not_equals","not_in","not_like","formattedValue","isNaN","map","v","join","jsonQuerySelector","rawSQLQuery","path","columnType","word","sanitizedQueryValue","isUUID","queryColumns","queryOperator","queryValue","wrapOperator","JSON","stringify","lng","lat","maxDistance","minDistance","geoConstraints","Number","sort","rawSort","orConditions","resolvedQueryValue","some","filter","limitedBoundParameters","isInvalid","e"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Operator, Sort, Where } from 'payload'\n\nimport { and, getTableName, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm'\nimport { PgUUID } from 'drizzle-orm/pg-core'\nimport { APIError, QueryError } from 'payload'\nimport { validOperatorSet } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { isValidStringID } from '../utilities/isValidStringID.js'\nimport { DistinctSymbol } from '../utilities/rawConstraint.js'\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\nexport type QueryContext = { rawSort?: SQL; sort: Sort }\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n context: QueryContext\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where\n}\n\nexport function parseParams({\n adapter,\n aliasTable,\n context,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: Args): SQL {\n let result: SQL\n const constraints: SQL[] = []\n\n if (typeof where === 'object' && Object.keys(where).length > 0) {\n // We need to determine if the whereKey is an AND, OR, or a schema path\n for (const relationOrPath of Object.keys(where)) {\n if (relationOrPath) {\n const condition = where[relationOrPath]\n let conditionOperator: typeof and | typeof or\n if (relationOrPath.toLowerCase() === 'and') {\n conditionOperator = and\n } else if (relationOrPath.toLowerCase() === 'or') {\n conditionOperator = or\n }\n if (Array.isArray(condition)) {\n const builtConditions = buildAndOrConditions({\n adapter,\n aliasTable,\n context,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (builtConditions.length > 0) {\n result = conditionOperator(...builtConditions)\n }\n } else {\n // It's a path - and there can be multiple comparisons on a single path.\n // For example - title like 'test' and title not equal to 'tester'\n // So we need to loop on keys again here to handle each operator independently\n const pathOperators = where[relationOrPath]\n if (typeof pathOperators === 'object') {\n for (let operator of Object.keys(pathOperators)) {\n if (validOperatorSet.has(operator as Operator)) {\n const val = where[relationOrPath][operator]\n\n const {\n columnName,\n columns,\n constraints: queryConstraints,\n field,\n getNotNullColumnByValue,\n pathSegments,\n rawColumn,\n table,\n } = getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath: relationOrPath,\n fields,\n joins,\n locale,\n parentIsLocalized,\n pathSegments: relationOrPath.replace(/__/g, '.').split('.'),\n selectFields,\n selectLocale,\n tableName,\n value: val,\n })\n\n const resolvedColumn =\n rawColumn ||\n (aliasTable && tableName === getNameFromDrizzleTable(table)\n ? aliasTable[columnName]\n : table[columnName])\n\n if (val === DistinctSymbol) {\n selectFields['_selected'] = resolvedColumn\n break\n }\n\n queryConstraints.forEach(({ columnName: col, table: constraintTable, value }) => {\n if (typeof value === 'string' && value.indexOf('%') > -1) {\n constraints.push(adapter.operators.like(constraintTable[col], value))\n } else {\n constraints.push(adapter.operators.equals(constraintTable[col], value))\n }\n })\n\n if (\n (['json', 'richText'].includes(field.type) ||\n (field.type === 'blocks' && adapter.blocksAsJSON)) &&\n Array.isArray(pathSegments) &&\n pathSegments.length > 1\n ) {\n if (adapter.name === 'postgres') {\n const constraint = adapter.createJSONQuery({\n column: rawColumn || table[columnName],\n operator,\n pathSegments,\n value: val,\n })\n\n constraints.push(sql.raw(constraint))\n break\n }\n\n const segments = pathSegments.slice(1)\n segments.unshift(table[columnName].name)\n\n if (field.type === 'richText') {\n // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg\n const jsonTable =\n joins.length === 0\n ? tableName\n : joins[joins.length - 1].table[\n Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]\n ]\n const jsonQuery = adapter.createJSONQuery({\n operator,\n pathSegments: segments,\n table: jsonTable,\n treatAsArray: ['children'],\n treatRootAsArray: true,\n value: val,\n })\n\n constraints.push(sql.raw(jsonQuery))\n break\n }\n\n const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments)\n const operatorKeys: Record<string, { operator: string; wildcard: string }> = {\n contains: { operator: 'like', wildcard: '%' },\n equals: { operator: '=', wildcard: '' },\n exists: { operator: val === true ? 'is not null' : 'is null', wildcard: '' },\n in: { operator: 'in', wildcard: '' },\n like: { operator: 'like', wildcard: '%' },\n not_equals: { operator: '<>', wildcard: '' },\n not_in: { operator: 'not in', wildcard: '' },\n not_like: { operator: 'not like', wildcard: '%' },\n }\n\n let formattedValue = val\n if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {\n formattedValue = val\n } else if (['in', 'not_in'].includes(operator) && Array.isArray(val)) {\n formattedValue = `(${val.map((v) => `${v}`).join(',')})`\n } else {\n formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`\n }\n if (operator === 'exists') {\n formattedValue = ''\n }\n\n let jsonQuerySelector = `${table[columnName].name}${jsonQuery}`\n\n if (adapter.name === 'sqlite' && operator === 'not_like') {\n jsonQuerySelector = `COALESCE(${table[columnName].name}${jsonQuery}, '')`\n }\n\n const rawSQLQuery = `${jsonQuerySelector} ${operatorKeys[operator].operator} ${formattedValue}`\n\n constraints.push(sql.raw(rawSQLQuery))\n\n break\n }\n\n if (getNotNullColumnByValue) {\n const columnName = getNotNullColumnByValue(val)\n if (columnName) {\n constraints.push(isNotNull(table[columnName]))\n } else {\n throw new QueryError([{ path: relationOrPath }])\n }\n break\n }\n\n if (\n operator === 'like' &&\n (field.type === 'number' ||\n field.type === 'relationship' ||\n field.type === 'upload' ||\n table[columnName].columnType === 'PgUUID')\n ) {\n operator = 'equals'\n }\n\n if (operator === 'like') {\n constraints.push(\n and(\n ...val\n .split(' ')\n .map((word) => adapter.operators.like(table[columnName], `%${word}%`)),\n ),\n )\n break\n }\n\n const sanitizedQueryValue = sanitizeQueryValue({\n adapter,\n columns,\n field,\n isUUID: table?.[columnName] instanceof PgUUID,\n operator,\n relationOrPath,\n val,\n })\n\n if (sanitizedQueryValue === null) {\n break\n }\n\n const {\n columns: queryColumns,\n operator: queryOperator,\n value: queryValue,\n } = sanitizedQueryValue\n\n // Handle polymorphic relationships by value\n if (queryColumns) {\n if (!queryColumns.length) {\n break\n }\n\n let wrapOperator = or\n\n if (queryValue === null && ['equals', 'not_equals'].includes(operator)) {\n if (operator === 'equals') {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn }) =>\n operator === 'equals' ? isNull(rawColumn) : isNotNull(rawColumn),\n ),\n ),\n )\n break\n }\n\n if (['not_equals', 'not_in'].includes(operator)) {\n wrapOperator = and\n }\n\n constraints.push(\n wrapOperator(\n ...queryColumns.map(({ rawColumn, value }) =>\n adapter.operators[queryOperator](rawColumn, value),\n ),\n ),\n )\n\n break\n }\n\n if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(resolvedColumn),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(resolvedColumn, queryValue),\n ),\n )\n break\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n Array.isArray(queryValue) &&\n operator === 'not_in'\n ) {\n constraints.push(\n sql`(${notInArray(table[columnName], queryValue)} OR\n ${table[columnName]}\n IS\n NULL)`,\n )\n\n break\n }\n\n if (operator === 'equals' && queryValue === null) {\n constraints.push(isNull(resolvedColumn))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(resolvedColumn))\n break\n }\n\n if (field.type === 'point' && adapter.name === 'postgres') {\n switch (operator) {\n case 'intersects': {\n constraints.push(\n sql`ST_Intersects(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n case 'near': {\n const [lng, lat, maxDistance, minDistance] = queryValue as number[]\n const geoConstraints: SQL[] = []\n\n if (typeof maxDistance === 'number' && !Number.isNaN(maxDistance)) {\n geoConstraints.push(\n sql`ST_DWithin(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857), ${maxDistance})`,\n )\n }\n\n if (typeof minDistance === 'number' && !Number.isNaN(minDistance)) {\n geoConstraints.push(\n sql`ST_Distance(ST_Transform(${table[columnName]}, 3857), ST_Transform(ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326), 3857)) >= ${minDistance}`,\n )\n }\n if (geoConstraints.length) {\n context.sort = relationOrPath\n context.rawSort = sql`${table[columnName]} <-> ST_SetSRID(ST_MakePoint(${lng}, ${lat}), 4326)`\n constraints.push(and(...geoConstraints))\n }\n break\n }\n\n case 'within': {\n constraints.push(\n sql`ST_Within(${table[columnName]}, ST_GeomFromGeoJSON(${JSON.stringify(queryValue)}))`,\n )\n break\n }\n\n default:\n break\n }\n break\n }\n\n const orConditions: SQL<unknown>[] = []\n let resolvedQueryValue = queryValue\n if (\n operator === 'in' &&\n Array.isArray(queryValue) &&\n queryValue.some((v) => v === null)\n ) {\n orConditions.push(isNull(resolvedColumn))\n resolvedQueryValue = queryValue.filter((v) => v !== null)\n }\n\n let constraint = adapter.operators[queryOperator](\n resolvedColumn,\n resolvedQueryValue,\n )\n\n if (\n adapter.limitedBoundParameters &&\n (operator === 'in' || operator === 'not_in') &&\n relationOrPath === 'id' &&\n Array.isArray(queryValue)\n ) {\n let isInvalid = false\n for (const val of queryValue) {\n if (typeof val === 'number' || val === null) {\n continue\n }\n if (typeof val === 'string') {\n if (!isValidStringID(val)) {\n isInvalid = true\n break\n } else {\n continue\n }\n }\n isInvalid = true\n break\n }\n\n if (isInvalid) {\n throw new APIError(`Invalid ID value in ${JSON.stringify(queryValue)}`)\n }\n\n constraints.push(\n sql.raw(\n `\"${getTableName(resolvedColumn.table)}\".\"${resolvedColumn.name}\" ${operator === 'in' ? 'IN' : 'NOT IN'} (${queryValue\n .map((e) => {\n if (e === null) {\n return `NULL`\n }\n\n if (typeof e === 'number') {\n return e\n }\n\n return `'${e}'`\n })\n .join(',')})`,\n ),\n )\n break\n }\n\n if (orConditions.length) {\n orConditions.push(constraint)\n constraint = or(...orConditions)\n }\n constraints.push(constraint)\n }\n }\n }\n }\n }\n }\n }\n if (constraints.length > 0) {\n if (result) {\n result = and(result, ...constraints)\n } else {\n result = and(...constraints)\n }\n }\n if (constraints.length === 1 && !result) {\n ;[result] = constraints\n }\n\n return result\n}\n"],"names":["and","getTableName","isNotNull","isNull","ne","notInArray","or","sql","PgUUID","APIError","QueryError","validOperatorSet","getNameFromDrizzleTable","isValidStringID","DistinctSymbol","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","aliasTable","context","fields","joins","locale","parentIsLocalized","selectFields","selectLocale","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","has","val","columnName","columns","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","resolvedColumn","forEach","col","constraintTable","indexOf","push","operators","like","equals","includes","type","blocksAsJSON","name","constraint","createJSONQuery","column","raw","segments","slice","unshift","jsonTable","getOwnPropertySymbols","jsonQuery","treatAsArray","treatRootAsArray","convertPathToJSONTraversal","operatorKeys","contains","wildcard","exists","in","not_equals","not_in","not_like","formattedValue","isNaN","map","v","join","jsonQuerySelector","rawSQLQuery","path","columnType","word","sanitizedQueryValue","isUUID","queryColumns","queryOperator","queryValue","wrapOperator","JSON","stringify","lng","lat","maxDistance","minDistance","geoConstraints","Number","sort","rawSort","orConditions","resolvedQueryValue","some","filter","limitedBoundParameters","isInvalid","e"],"mappings":"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"}
@@ -6,6 +6,7 @@ type Args = {
6
6
  adapter: DrizzleAdapter;
7
7
  db: DrizzleAdapter['drizzle'] | DrizzleTransaction;
8
8
  forceRun?: boolean;
9
+ hasAggregates?: boolean;
9
10
  joins: BuildQueryJoinAliases;
10
11
  query?: (args: {
11
12
  query: SQLiteSelect;
@@ -17,7 +18,7 @@ type Args = {
17
18
  /**
18
19
  * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
19
20
  */
20
- export declare const selectDistinct: ({ adapter, db, forceRun, joins, query: queryModifier, selectFields, tableName, where, }: Args) => QueryPromise<{
21
+ export declare const selectDistinct: ({ adapter, db, forceRun, hasAggregates, joins, query: queryModifier, selectFields, tableName, where, }: Args) => QueryPromise<{
21
22
  id: number | string;
22
23
  }[] & Record<string, GenericColumn>>;
23
24
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAId,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,YAAY,CAAA;IACvD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4FASxB,IAAI,KAAG,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CA8B/E,CAAA"}
1
+ {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAEd,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,YAAY,CAAA;IACvD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,2GAUxB,IAAI,KAAG,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAmC/E,CAAA"}
@@ -1,21 +1,25 @@
1
1
  /**
2
2
  * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
3
- */ export const selectDistinct = ({ adapter, db, forceRun, joins, query: queryModifier = ({ query })=>query, selectFields, tableName, where })=>{
3
+ */ export const selectDistinct = ({ adapter, db, forceRun, hasAggregates, joins, query: queryModifier = ({ query })=>query, selectFields, tableName, where })=>{
4
4
  if (forceRun || Object.keys(joins).length > 0) {
5
5
  let query;
6
6
  const table = adapter.tables[tableName];
7
- if (adapter.name === 'postgres') {
8
- query = db.selectDistinct(selectFields).from(table).$dynamic();
9
- }
10
- if (adapter.name === 'sqlite') {
11
- query = db.selectDistinct(selectFields).from(table).$dynamic();
12
- }
7
+ // With hasAggregate we use groupBy so we don't need to use selectDistinct in that case
8
+ // @ts-expect-error - Drizzle types are not accurate here
9
+ let selectFunc = hasAggregates ? db.select : db.selectDistinct;
10
+ // bind this otherwise we get TypeError: Cannot read properties of undefined (reading 'session')
11
+ selectFunc = selectFunc.bind(db);
12
+ query = selectFunc(selectFields).from(table).$dynamic();
13
13
  if (where) {
14
14
  query = query.where(where);
15
15
  }
16
16
  joins.forEach(({ type, condition, table })=>{
17
17
  query = query[type ?? 'leftJoin'](table, condition);
18
18
  });
19
+ if (hasAggregates && '_selected' in selectFields) {
20
+ // @ts-expect-error - Drizzle types are not accurate here
21
+ query = query.groupBy(selectFields['_selected']);
22
+ }
19
23
  return queryModifier({
20
24
  query
21
25
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn, SQLiteSelect } from 'drizzle-orm/sqlite-core'\n\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericColumn,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n forceRun?: boolean\n joins: BuildQueryJoinAliases\n query?: (args: { query: SQLiteSelect }) => SQLiteSelect\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n db,\n forceRun,\n joins,\n query: queryModifier = ({ query }) => query,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>> => {\n if (forceRun || Object.keys(joins).length > 0) {\n let query: SQLiteSelect\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n .$dynamic() as unknown as SQLiteSelect\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n .$dynamic()\n }\n\n if (where) {\n query = query.where(where)\n }\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n return queryModifier({\n query,\n }) as unknown as QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>>\n }\n}\n"],"names":["selectDistinct","adapter","db","forceRun","joins","query","queryModifier","selectFields","tableName","where","Object","keys","length","table","tables","name","from","$dynamic","forEach","type","condition"],"mappings":"AAwBA;;CAEC,GACD,OAAO,MAAMA,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,EAAE,EACFC,QAAQ,EACRC,KAAK,EACLC,OAAOC,gBAAgB,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAK,EAC3CE,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIN,YAAYO,OAAOC,IAAI,CAACP,OAAOQ,MAAM,GAAG,GAAG;QAC7C,IAAIP;QACJ,MAAMQ,QAAQZ,QAAQa,MAAM,CAACN,UAAU;QAEvC,IAAIP,QAAQc,IAAI,KAAK,YAAY;YAC/BV,QAAQ,AAACH,GACNF,cAAc,CAACO,cACfS,IAAI,CAACH,OACLI,QAAQ;QACb;QACA,IAAIhB,QAAQc,IAAI,KAAK,UAAU;YAC7BV,QAAQ,AAACH,GACNF,cAAc,CAACO,cACfS,IAAI,CAACH,OACLI,QAAQ;QACb;QAEA,IAAIR,OAAO;YACTJ,QAAQA,MAAMI,KAAK,CAACA;QACtB;QAEAL,MAAMc,OAAO,CAAC,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEP,KAAK,EAAE;YACvCR,QAAQA,KAAK,CAACc,QAAQ,WAAW,CAACN,OAAOO;QAC3C;QAEA,OAAOd,cAAc;YACnBD;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn, SQLiteSelect } from 'drizzle-orm/sqlite-core'\n\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericColumn,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n forceRun?: boolean\n hasAggregates?: boolean\n joins: BuildQueryJoinAliases\n query?: (args: { query: SQLiteSelect }) => SQLiteSelect\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n db,\n forceRun,\n hasAggregates,\n joins,\n query: queryModifier = ({ query }) => query,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>> => {\n if (forceRun || Object.keys(joins).length > 0) {\n let query: SQLiteSelect\n const table = adapter.tables[tableName]\n\n // With hasAggregate we use groupBy so we don't need to use selectDistinct in that case\n // @ts-expect-error - Drizzle types are not accurate here\n let selectFunc: TransactionSQLite['selectDistinct'] = hasAggregates\n ? db.select\n : db.selectDistinct\n\n // bind this otherwise we get TypeError: Cannot read properties of undefined (reading 'session')\n selectFunc = selectFunc.bind(db)\n\n query = selectFunc(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n .$dynamic()\n\n if (where) {\n query = query.where(where)\n }\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (hasAggregates && '_selected' in selectFields) {\n // @ts-expect-error - Drizzle types are not accurate here\n query = query.groupBy(selectFields['_selected'])\n }\n\n return queryModifier({\n query,\n }) as unknown as QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>>\n }\n}\n"],"names":["selectDistinct","adapter","db","forceRun","hasAggregates","joins","query","queryModifier","selectFields","tableName","where","Object","keys","length","table","tables","selectFunc","select","bind","from","$dynamic","forEach","type","condition","groupBy"],"mappings":"AAuBA;;CAEC,GACD,OAAO,MAAMA,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,EAAE,EACFC,QAAQ,EACRC,aAAa,EACbC,KAAK,EACLC,OAAOC,gBAAgB,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAK,EAC3CE,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIP,YAAYQ,OAAOC,IAAI,CAACP,OAAOQ,MAAM,GAAG,GAAG;QAC7C,IAAIP;QACJ,MAAMQ,QAAQb,QAAQc,MAAM,CAACN,UAAU;QAEvC,uFAAuF;QACvF,yDAAyD;QACzD,IAAIO,aAAkDZ,gBAClDF,GAAGe,MAAM,GACTf,GAAGF,cAAc;QAErB,gGAAgG;QAChGgB,aAAaA,WAAWE,IAAI,CAAChB;QAE7BI,QAAQU,WAAWR,cAChBW,IAAI,CAACL,OACLM,QAAQ;QAEX,IAAIV,OAAO;YACTJ,QAAQA,MAAMI,KAAK,CAACA;QACtB;QAEAL,MAAMgB,OAAO,CAAC,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAET,KAAK,EAAE;YACvCR,QAAQA,KAAK,CAACgB,QAAQ,WAAW,CAACR,OAAOS;QAC3C;QAEA,IAAInB,iBAAiB,eAAeI,cAAc;YAChD,yDAAyD;YACzDF,QAAQA,MAAMkB,OAAO,CAAChB,YAAY,CAAC,YAAY;QACjD;QAEA,OAAOD,cAAc;YACnBD;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sqlite/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AA4GzD,eAAO,MAAM,eAAe,iGASzB,mBAAmB,KAAG,MA0BxB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sqlite/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AA0GzD,eAAO,MAAM,eAAe,iGASzB,mBAAmB,KAAG,MA0BxB,CAAA"}
@@ -1,4 +1,3 @@
1
- import { escapeSQLValue } from '../../utilities/escapeSQLValue.js';
2
1
  const fromArray = ({ isRoot, operator, pathSegments, table, treatAsArray, value })=>{
3
2
  const newPathSegments = pathSegments.slice(1);
4
3
  const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`;
@@ -43,7 +42,7 @@ const createConstraint = ({ alias, operator, pathSegments, value })=>{
43
42
  WHERE ${newAlias}.key = '${pathSegments[1]}'
44
43
  )`;
45
44
  }
46
- let formattedValue = escapeSQLValue(value);
45
+ let formattedValue = value;
47
46
  let formattedOperator = operator;
48
47
  if ([
49
48
  'contains',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\nimport { escapeSQLValue } from '../../utilities/escapeSQLValue.js'\n\ntype FromArrayArgs = {\n isRoot?: true\n operator: string\n pathSegments: string[]\n table: string\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst fromArray = ({\n isRoot,\n operator,\n pathSegments,\n table,\n treatAsArray,\n value,\n}: FromArrayArgs) => {\n const newPathSegments = pathSegments.slice(1)\n const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${table}.${pathSegments[0]}) AS ${alias}\n WHERE ${createJSONQuery({\n operator,\n pathSegments: newPathSegments,\n table: alias,\n treatAsArray,\n value,\n })}\n )`\n}\n\ntype CreateConstraintArgs = {\n alias?: string\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst createConstraint = ({\n alias,\n operator,\n pathSegments,\n value,\n}: CreateConstraintArgs): string => {\n const newAlias = `${pathSegments[0]}_alias_${pathSegments.length - 1}`\n\n if (operator === 'exists' && value === false) {\n operator = 'not_exists'\n value = true\n } else if (operator === 'not_exists' && value === false) {\n operator = 'exists'\n value = true\n }\n\n if (operator === 'exists') {\n if (pathSegments.length === 1) {\n return `EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias})`\n }\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE ${newAlias}.key = '${pathSegments[1]}'\n )`\n }\n\n if (operator === 'not_exists') {\n if (pathSegments.length === 1) {\n return `NOT EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias})`\n }\n\n return `NOT EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE ${newAlias}.key = '${pathSegments[1]}'\n )`\n }\n\n let formattedValue = escapeSQLValue(value)\n let formattedOperator = operator\n if (['contains', 'like'].includes(operator)) {\n formattedOperator = 'like'\n formattedValue = `%${value}%`\n } else if (['not_like', 'notlike'].includes(operator)) {\n formattedOperator = 'not like'\n formattedValue = `%${value}%`\n } else if (operator === 'equals') {\n formattedOperator = '='\n }\n\n if (pathSegments.length === 1) {\n return `EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias} WHERE ${newAlias}.value ${formattedOperator} '${formattedValue}')`\n }\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE COALESCE(${newAlias}.value ->> '${pathSegments[1]}', '') ${formattedOperator} '${formattedValue}'\n )`\n}\n\nexport const createJSONQuery = ({\n column,\n operator,\n pathSegments,\n rawColumn,\n table,\n treatAsArray,\n treatRootAsArray,\n value,\n}: CreateJSONQueryArgs): string => {\n if ((operator === 'in' || operator === 'not_in') && Array.isArray(value)) {\n let sql = ''\n for (const [i, v] of value.entries()) {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, rawColumn, table, treatAsArray, treatRootAsArray, value: v })} ${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n }\n return sql\n }\n\n if (treatAsArray?.includes(pathSegments[1]) && table) {\n return fromArray({\n operator,\n pathSegments,\n table,\n treatAsArray,\n value: value as CreateConstraintArgs['value'],\n })\n }\n\n return createConstraint({\n alias: table,\n operator,\n pathSegments,\n treatAsArray,\n value: value as CreateConstraintArgs['value'],\n })\n}\n"],"names":["escapeSQLValue","fromArray","isRoot","operator","pathSegments","table","treatAsArray","value","newPathSegments","slice","alias","length","createJSONQuery","createConstraint","newAlias","formattedValue","formattedOperator","includes","column","rawColumn","treatRootAsArray","Array","isArray","sql","i","v","entries"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/sqlite/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\ntype FromArrayArgs = {\n isRoot?: true\n operator: string\n pathSegments: string[]\n table: string\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst fromArray = ({\n isRoot,\n operator,\n pathSegments,\n table,\n treatAsArray,\n value,\n}: FromArrayArgs) => {\n const newPathSegments = pathSegments.slice(1)\n const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${table}.${pathSegments[0]}) AS ${alias}\n WHERE ${createJSONQuery({\n operator,\n pathSegments: newPathSegments,\n table: alias,\n treatAsArray,\n value,\n })}\n )`\n}\n\ntype CreateConstraintArgs = {\n alias?: string\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst createConstraint = ({\n alias,\n operator,\n pathSegments,\n value,\n}: CreateConstraintArgs): string => {\n const newAlias = `${pathSegments[0]}_alias_${pathSegments.length - 1}`\n\n if (operator === 'exists' && value === false) {\n operator = 'not_exists'\n value = true\n } else if (operator === 'not_exists' && value === false) {\n operator = 'exists'\n value = true\n }\n\n if (operator === 'exists') {\n if (pathSegments.length === 1) {\n return `EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias})`\n }\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE ${newAlias}.key = '${pathSegments[1]}'\n )`\n }\n\n if (operator === 'not_exists') {\n if (pathSegments.length === 1) {\n return `NOT EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias})`\n }\n\n return `NOT EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE ${newAlias}.key = '${pathSegments[1]}'\n )`\n }\n\n let formattedValue = value\n let formattedOperator = operator\n if (['contains', 'like'].includes(operator)) {\n formattedOperator = 'like'\n formattedValue = `%${value}%`\n } else if (['not_like', 'notlike'].includes(operator)) {\n formattedOperator = 'not like'\n formattedValue = `%${value}%`\n } else if (operator === 'equals') {\n formattedOperator = '='\n }\n\n if (pathSegments.length === 1) {\n return `EXISTS (SELECT 1 FROM json_each(\"${pathSegments[0]}\") AS ${newAlias} WHERE ${newAlias}.value ${formattedOperator} '${formattedValue}')`\n }\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE COALESCE(${newAlias}.value ->> '${pathSegments[1]}', '') ${formattedOperator} '${formattedValue}'\n )`\n}\n\nexport const createJSONQuery = ({\n column,\n operator,\n pathSegments,\n rawColumn,\n table,\n treatAsArray,\n treatRootAsArray,\n value,\n}: CreateJSONQueryArgs): string => {\n if ((operator === 'in' || operator === 'not_in') && Array.isArray(value)) {\n let sql = ''\n for (const [i, v] of value.entries()) {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, rawColumn, table, treatAsArray, treatRootAsArray, value: v })} ${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n }\n return sql\n }\n\n if (treatAsArray?.includes(pathSegments[1]) && table) {\n return fromArray({\n operator,\n pathSegments,\n table,\n treatAsArray,\n value: value as CreateConstraintArgs['value'],\n })\n }\n\n return createConstraint({\n alias: table,\n operator,\n pathSegments,\n treatAsArray,\n value: value as CreateConstraintArgs['value'],\n })\n}\n"],"names":["fromArray","isRoot","operator","pathSegments","table","treatAsArray","value","newPathSegments","slice","alias","length","createJSONQuery","createConstraint","newAlias","formattedValue","formattedOperator","includes","column","rawColumn","treatRootAsArray","Array","isArray","sql","i","v","entries"],"mappings":"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"}