@strapi/database 5.55.1 → 5.57.0

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 (196) hide show
  1. package/dist/dialects/dialect.d.ts +28 -0
  2. package/dist/dialects/dialect.d.ts.map +1 -1
  3. package/dist/dialects/dialect.js +29 -0
  4. package/dist/dialects/dialect.js.map +1 -1
  5. package/dist/dialects/dialect.mjs +29 -0
  6. package/dist/dialects/dialect.mjs.map +1 -1
  7. package/dist/dialects/mysql/index.d.ts +9 -0
  8. package/dist/dialects/mysql/index.d.ts.map +1 -1
  9. package/dist/dialects/mysql/index.js +37 -0
  10. package/dist/dialects/mysql/index.js.map +1 -1
  11. package/dist/dialects/mysql/index.mjs +37 -0
  12. package/dist/dialects/mysql/index.mjs.map +1 -1
  13. package/dist/dialects/postgresql/index.d.ts +7 -0
  14. package/dist/dialects/postgresql/index.d.ts.map +1 -1
  15. package/dist/dialects/postgresql/index.js +50 -0
  16. package/dist/dialects/postgresql/index.js.map +1 -1
  17. package/dist/dialects/postgresql/index.mjs +50 -0
  18. package/dist/dialects/postgresql/index.mjs.map +1 -1
  19. package/dist/dialects/sqlite/index.d.ts +9 -0
  20. package/dist/dialects/sqlite/index.d.ts.map +1 -1
  21. package/dist/dialects/sqlite/index.js +16 -0
  22. package/dist/dialects/sqlite/index.js.map +1 -1
  23. package/dist/dialects/sqlite/index.mjs +16 -0
  24. package/dist/dialects/sqlite/index.mjs.map +1 -1
  25. package/dist/entity-manager/entity-repository.js +1 -1
  26. package/dist/entity-manager/entity-repository.js.map +1 -1
  27. package/dist/entity-manager/entity-repository.mjs +1 -1
  28. package/dist/entity-manager/entity-repository.mjs.map +1 -1
  29. package/dist/entity-manager/index.d.ts.map +1 -1
  30. package/dist/entity-manager/index.js +38 -36
  31. package/dist/entity-manager/index.js.map +1 -1
  32. package/dist/entity-manager/index.mjs +38 -36
  33. package/dist/entity-manager/index.mjs.map +1 -1
  34. package/dist/entity-manager/morph-relations.d.ts.map +1 -1
  35. package/dist/entity-manager/morph-relations.js +3 -5
  36. package/dist/entity-manager/morph-relations.js.map +1 -1
  37. package/dist/entity-manager/morph-relations.mjs +3 -5
  38. package/dist/entity-manager/morph-relations.mjs.map +1 -1
  39. package/dist/entity-manager/regular-relations.js +3 -3
  40. package/dist/entity-manager/regular-relations.js.map +1 -1
  41. package/dist/entity-manager/regular-relations.mjs +3 -3
  42. package/dist/entity-manager/regular-relations.mjs.map +1 -1
  43. package/dist/entity-manager/relations-orderer.d.ts.map +1 -1
  44. package/dist/entity-manager/relations-orderer.js +4 -5
  45. package/dist/entity-manager/relations-orderer.js.map +1 -1
  46. package/dist/entity-manager/relations-orderer.mjs +2 -3
  47. package/dist/entity-manager/relations-orderer.mjs.map +1 -1
  48. package/dist/fields/biginteger.js +1 -1
  49. package/dist/fields/biginteger.js.map +1 -1
  50. package/dist/fields/biginteger.mjs +1 -1
  51. package/dist/fields/biginteger.mjs.map +1 -1
  52. package/dist/fields/boolean.js +1 -1
  53. package/dist/fields/boolean.js.map +1 -1
  54. package/dist/fields/boolean.mjs +1 -1
  55. package/dist/fields/boolean.mjs.map +1 -1
  56. package/dist/fields/number.js +1 -1
  57. package/dist/fields/number.js.map +1 -1
  58. package/dist/fields/number.mjs +1 -1
  59. package/dist/fields/number.mjs.map +1 -1
  60. package/dist/fields/shared/parsers.js +2 -2
  61. package/dist/fields/shared/parsers.js.map +1 -1
  62. package/dist/fields/shared/parsers.mjs +2 -2
  63. package/dist/fields/shared/parsers.mjs.map +1 -1
  64. package/dist/fields/string.js +1 -1
  65. package/dist/fields/string.js.map +1 -1
  66. package/dist/fields/string.mjs +1 -1
  67. package/dist/fields/string.mjs.map +1 -1
  68. package/dist/index.d.ts +9 -5
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +2 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +1 -0
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/metadata/attribute-naming.d.ts +31 -0
  75. package/dist/metadata/attribute-naming.d.ts.map +1 -0
  76. package/dist/metadata/attribute-naming.js +39 -0
  77. package/dist/metadata/attribute-naming.js.map +1 -0
  78. package/dist/metadata/attribute-naming.mjs +37 -0
  79. package/dist/metadata/attribute-naming.mjs.map +1 -0
  80. package/dist/metadata/index.d.ts +5 -2
  81. package/dist/metadata/index.d.ts.map +1 -1
  82. package/dist/metadata/index.js +3 -0
  83. package/dist/metadata/index.js.map +1 -1
  84. package/dist/metadata/index.mjs +3 -1
  85. package/dist/metadata/index.mjs.map +1 -1
  86. package/dist/metadata/metadata.d.ts +10 -0
  87. package/dist/metadata/metadata.d.ts.map +1 -1
  88. package/dist/metadata/metadata.js +10 -2
  89. package/dist/metadata/metadata.js.map +1 -1
  90. package/dist/metadata/metadata.mjs +10 -2
  91. package/dist/metadata/metadata.mjs.map +1 -1
  92. package/dist/metadata/relations.d.ts.map +1 -1
  93. package/dist/metadata/relations.js +6 -5
  94. package/dist/metadata/relations.js.map +1 -1
  95. package/dist/metadata/relations.mjs +6 -5
  96. package/dist/metadata/relations.mjs.map +1 -1
  97. package/dist/migrations/common.d.ts +2 -0
  98. package/dist/migrations/common.d.ts.map +1 -1
  99. package/dist/migrations/common.js.map +1 -1
  100. package/dist/migrations/common.mjs.map +1 -1
  101. package/dist/migrations/file-builder.d.ts +97 -0
  102. package/dist/migrations/file-builder.d.ts.map +1 -0
  103. package/dist/migrations/file-builder.js +251 -0
  104. package/dist/migrations/file-builder.js.map +1 -0
  105. package/dist/migrations/file-builder.mjs +240 -0
  106. package/dist/migrations/file-builder.mjs.map +1 -0
  107. package/dist/migrations/index.d.ts +3 -2
  108. package/dist/migrations/index.d.ts.map +1 -1
  109. package/dist/migrations/index.js +6 -0
  110. package/dist/migrations/index.js.map +1 -1
  111. package/dist/migrations/index.mjs +6 -0
  112. package/dist/migrations/index.mjs.map +1 -1
  113. package/dist/migrations/internal-migrations/5.0.0-02-document-id.js +1 -1
  114. package/dist/migrations/internal-migrations/5.0.0-02-document-id.js.map +1 -1
  115. package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs +1 -1
  116. package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs.map +1 -1
  117. package/dist/migrations/resolver.d.ts.map +1 -1
  118. package/dist/migrations/resolver.js +4 -1
  119. package/dist/migrations/resolver.js.map +1 -1
  120. package/dist/migrations/resolver.mjs +4 -1
  121. package/dist/migrations/resolver.mjs.map +1 -1
  122. package/dist/query/helpers/order-by.d.ts.map +1 -1
  123. package/dist/query/helpers/order-by.js +3 -4
  124. package/dist/query/helpers/order-by.js.map +1 -1
  125. package/dist/query/helpers/order-by.mjs +3 -4
  126. package/dist/query/helpers/order-by.mjs.map +1 -1
  127. package/dist/query/helpers/populate/apply.d.ts.map +1 -1
  128. package/dist/query/helpers/populate/apply.js +46 -30
  129. package/dist/query/helpers/populate/apply.js.map +1 -1
  130. package/dist/query/helpers/populate/apply.mjs +46 -30
  131. package/dist/query/helpers/populate/apply.mjs.map +1 -1
  132. package/dist/query/helpers/populate/process.js +3 -3
  133. package/dist/query/helpers/populate/process.js.map +1 -1
  134. package/dist/query/helpers/populate/process.mjs +3 -3
  135. package/dist/query/helpers/populate/process.mjs.map +1 -1
  136. package/dist/query/helpers/search.js +2 -2
  137. package/dist/query/helpers/search.js.map +1 -1
  138. package/dist/query/helpers/search.mjs +2 -2
  139. package/dist/query/helpers/search.mjs.map +1 -1
  140. package/dist/query/helpers/streams/readable.js +3 -3
  141. package/dist/query/helpers/streams/readable.js.map +1 -1
  142. package/dist/query/helpers/streams/readable.mjs +3 -3
  143. package/dist/query/helpers/streams/readable.mjs.map +1 -1
  144. package/dist/query/helpers/transform.d.ts.map +1 -1
  145. package/dist/query/helpers/transform.js +6 -13
  146. package/dist/query/helpers/transform.js.map +1 -1
  147. package/dist/query/helpers/transform.mjs +6 -9
  148. package/dist/query/helpers/transform.mjs.map +1 -1
  149. package/dist/query/helpers/where.js +13 -9
  150. package/dist/query/helpers/where.js.map +1 -1
  151. package/dist/query/helpers/where.mjs +13 -9
  152. package/dist/query/helpers/where.mjs.map +1 -1
  153. package/dist/query/query-builder.d.ts.map +1 -1
  154. package/dist/query/query-builder.js +35 -29
  155. package/dist/query/query-builder.js.map +1 -1
  156. package/dist/query/query-builder.mjs +35 -29
  157. package/dist/query/query-builder.mjs.map +1 -1
  158. package/dist/schema/builder.js +5 -5
  159. package/dist/schema/builder.js.map +1 -1
  160. package/dist/schema/builder.mjs +5 -5
  161. package/dist/schema/builder.mjs.map +1 -1
  162. package/dist/schema/diff.js +12 -12
  163. package/dist/schema/diff.js.map +1 -1
  164. package/dist/schema/diff.mjs +12 -12
  165. package/dist/schema/diff.mjs.map +1 -1
  166. package/dist/schema/index.d.ts +3 -1
  167. package/dist/schema/index.d.ts.map +1 -1
  168. package/dist/schema/index.js +6 -0
  169. package/dist/schema/index.js.map +1 -1
  170. package/dist/schema/index.mjs +6 -0
  171. package/dist/schema/index.mjs.map +1 -1
  172. package/dist/schema/rename-helpers.d.ts +78 -0
  173. package/dist/schema/rename-helpers.d.ts.map +1 -0
  174. package/dist/schema/rename-helpers.js +235 -0
  175. package/dist/schema/rename-helpers.js.map +1 -0
  176. package/dist/schema/rename-helpers.mjs +233 -0
  177. package/dist/schema/rename-helpers.mjs.map +1 -0
  178. package/dist/utils/async-curry.d.ts.map +1 -1
  179. package/dist/utils/async-curry.js +1 -2
  180. package/dist/utils/async-curry.js.map +1 -1
  181. package/dist/utils/async-curry.mjs +1 -2
  182. package/dist/utils/async-curry.mjs.map +1 -1
  183. package/dist/utils/identifiers/hash.d.ts.map +1 -1
  184. package/dist/utils/identifiers/hash.js +1 -2
  185. package/dist/utils/identifiers/hash.js.map +1 -1
  186. package/dist/utils/identifiers/hash.mjs +1 -2
  187. package/dist/utils/identifiers/hash.mjs.map +1 -1
  188. package/dist/utils/identifiers/index.js +8 -10
  189. package/dist/utils/identifiers/index.js.map +1 -1
  190. package/dist/utils/identifiers/index.mjs +8 -6
  191. package/dist/utils/identifiers/index.mjs.map +1 -1
  192. package/dist/validations/relations/bidirectional.js +1 -1
  193. package/dist/validations/relations/bidirectional.js.map +1 -1
  194. package/dist/validations/relations/bidirectional.mjs +1 -1
  195. package/dist/validations/relations/bidirectional.mjs.map +1 -1
  196. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"where.mjs","sources":["../../../src/query/helpers/where.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { isArray, castArray, isPlainObject } from 'lodash/fp';\nimport type { Knex } from 'knex';\n\nimport { isOperator, isOperatorOfType } from '@strapi/utils';\nimport * as types from '../../utils/types';\nimport { createField } from '../../fields';\nimport { createJoin } from './join';\nimport { toColumnName } from './transform';\nimport { escapeQuery } from './search';\nimport { isKnexQuery } from '../../utils/knex';\n\nimport type { Ctx } from '../types';\nimport type { Attribute } from '../../types';\n\ntype WhereCtx = Ctx & { alias?: string; isGroupRoot?: boolean };\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => isPlainObject(value);\n\nconst castValue = (value: unknown, attribute: Attribute | null) => {\n if (!attribute) {\n return value;\n }\n\n if (types.isScalar(attribute.type) && !isKnexQuery(value)) {\n const field = createField(attribute);\n\n return value === null ? null : field.toDB(value);\n }\n\n return value;\n};\n\nconst processSingleAttributeWhere = (\n attribute: Attribute | null,\n where: unknown,\n operator = '$eq'\n) => {\n if (!isRecord(where)) {\n if (isOperatorOfType('cast', operator)) {\n return castValue(where, attribute);\n }\n\n return where;\n }\n\n const filters: Record<string, unknown> = {};\n\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n if (!isOperatorOfType('where', key)) {\n throw new Error(`Undefined attribute level operator ${key}`);\n }\n\n filters[key] = processAttributeWhere(attribute, value, key);\n }\n\n return filters;\n};\n\nconst processAttributeWhere = (attribute: Attribute | null, where: unknown, operator = '$eq') => {\n if (isArray(where)) {\n return where.map((sub) => processSingleAttributeWhere(attribute, sub, operator));\n }\n\n return processSingleAttributeWhere(attribute, where, operator);\n};\n\nconst processNested = (where: unknown, ctx: WhereCtx) => {\n if (!isRecord(where)) {\n return where;\n }\n\n return processWhere(where, ctx);\n};\n\nconst processRelationWhere = (where: unknown, ctx: WhereCtx) => {\n const { qb, alias } = ctx;\n\n const idAlias = qb.aliasColumn('id', alias);\n if (!isRecord(where)) {\n return { [idAlias]: where };\n }\n\n const keys = Object.keys(where);\n const operatorKeys = keys.filter((key) => isOperator(key));\n\n if (operatorKeys.length > 0 && operatorKeys.length !== keys.length) {\n throw new Error(`Operator and non-operator keys cannot be mixed in a relation where clause`);\n }\n\n if (operatorKeys.length > 1) {\n throw new Error(\n `Only one operator key is allowed in a relation where clause, but found: ${operatorKeys}`\n );\n }\n\n if (operatorKeys.length === 1) {\n const operator = operatorKeys[0];\n\n if (isOperatorOfType('group', operator)) {\n return processWhere(where, ctx);\n }\n\n return { [idAlias]: { [operator]: processNested(where[operator], ctx) } };\n }\n\n return processWhere(where, ctx);\n};\n\n/**\n * Process where parameter\n */\nfunction processWhere(where: Record<string, unknown>, ctx: WhereCtx): Record<string, unknown>;\nfunction processWhere(where: Record<string, unknown>[], ctx: WhereCtx): Record<string, unknown>[];\nfunction processWhere(\n where: Record<string, unknown> | Record<string, unknown>[],\n ctx: WhereCtx\n): Record<string, unknown> | Record<string, unknown>[] {\n if (!isArray(where) && !isRecord(where)) {\n throw new Error('Where must be an array or an object');\n }\n\n if (isArray(where)) {\n return where.map((sub) => processWhere(sub, ctx));\n }\n\n const { db, uid, qb, alias } = ctx;\n const meta = db.metadata.get(uid);\n\n const filters: Record<string, unknown> = {};\n\n // for each key in where\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n // if operator $and $or -> process recursively\n if (isOperatorOfType('group', key)) {\n if (!Array.isArray(value)) {\n throw new Error(`Operator ${key} must be an array`);\n }\n\n filters[key] = value.map((sub) => processNested(sub, ctx));\n continue;\n }\n\n if (key === '$not') {\n filters[key] = processNested(value, ctx);\n continue;\n }\n\n if (isOperatorOfType('where', key)) {\n throw new Error(\n `Only $and, $or and $not can only be used as root level operators. Found ${key}.`\n );\n }\n\n const attribute = meta.attributes[key];\n\n if (!attribute) {\n filters[qb.aliasColumn(key, alias)] = processAttributeWhere(null, value);\n continue;\n }\n\n if (types.isRelation(attribute.type) && 'target' in attribute) {\n // attribute\n const subAlias = createJoin(ctx, {\n alias: alias || qb.alias,\n attributeName: key,\n attribute,\n });\n\n const nestedWhere = processRelationWhere(value, {\n db,\n qb,\n alias: subAlias,\n uid: attribute.target,\n });\n\n // TODO: use a better merge logic (push to $and when collisions)\n Object.assign(filters, nestedWhere);\n\n continue;\n }\n\n if (types.isScalar(attribute.type)) {\n const columnName = toColumnName(meta, key);\n const aliasedColumnName = qb.aliasColumn(columnName, alias);\n\n filters[aliasedColumnName] = processAttributeWhere(attribute, value);\n\n continue;\n }\n\n throw new Error(`You cannot filter on ${attribute.type} types`);\n }\n\n return filters;\n}\n\ntype Operator =\n | '$eq'\n | '$ne'\n | '$nei'\n | '$in'\n | '$notIn'\n | '$lt'\n | '$lte'\n | '$gt'\n | '$gte'\n | '$between'\n | '$contains'\n | '$notContains'\n | '$containsi'\n | '$notContainsi'\n | '$startsWith'\n | '$endsWith'\n | '$null'\n | '$notNull'\n | '$not'\n | '$eqi'\n | '$startsWithi'\n | '$endsWithi'\n | '$jsonSupersetOf';\n\n// TODO: add type casting per operator at some point\nconst applyOperator = (\n qb: Knex.QueryBuilder,\n column: any,\n operator: Operator,\n value: any\n): Knex.QueryBuilder | undefined => {\n if (Array.isArray(value) && !isOperatorOfType('array', operator)) {\n return qb.where((subQB) => {\n value.forEach((subValue) =>\n subQB.orWhere((innerQB) => {\n applyOperator(innerQB, column, operator, subValue);\n })\n );\n });\n }\n\n switch (operator) {\n case '$not': {\n qb.whereNot((qb) => applyWhereToColumn(qb, column, value));\n break;\n }\n\n case '$in': {\n // @ts-ignore\n // TODO: fix in v5\n qb.whereIn(column, isKnexQuery(value) ? value : castArray(value));\n break;\n }\n\n case '$notIn': {\n // @ts-ignore\n // TODO: fix in v5\n qb.whereNotIn(column, isKnexQuery(value) ? value : castArray(value));\n break;\n }\n\n case '$eq': {\n if (value === null) {\n qb.whereNull(column);\n break;\n }\n\n qb.where(column, value);\n break;\n }\n\n case '$eqi': {\n if (value === null) {\n qb.whereNull(column);\n break;\n }\n qb.whereRaw(`${fieldLowerFn(qb)} = LOWER(?)`, [column, `${value}`]);\n break;\n }\n case '$ne': {\n if (value === null) {\n qb.whereNotNull(column);\n break;\n }\n\n qb.where(column, '<>', value);\n break;\n }\n case '$nei': {\n if (value === null) {\n qb.whereNotNull(column);\n break;\n }\n qb.whereRaw(`${fieldLowerFn(qb)} <> LOWER(?)`, [column, `${value}`]);\n break;\n }\n case '$gt': {\n qb.where(column, '>', value);\n break;\n }\n case '$gte': {\n qb.where(column, '>=', value);\n break;\n }\n case '$lt': {\n qb.where(column, '<', value);\n break;\n }\n case '$lte': {\n qb.where(column, '<=', value);\n break;\n }\n case '$null': {\n if (value) {\n qb.whereNull(column);\n } else {\n qb.whereNotNull(column);\n }\n break;\n }\n case '$notNull': {\n if (value) {\n qb.whereNotNull(column);\n } else {\n qb.whereNull(column);\n }\n break;\n }\n case '$between': {\n qb.whereBetween(column, value);\n break;\n }\n case '$startsWith': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `${escapeLike(value)}%`]);\n break;\n }\n case '$startsWithi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `${escapeLike(value)}%`,\n ]);\n break;\n }\n case '$endsWith': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}`]);\n break;\n }\n case '$endsWithi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}`,\n ]);\n break;\n }\n case '$contains': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}%`]);\n break;\n }\n\n case '$notContains': {\n qb.whereRaw(`?? NOT LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}%`]);\n break;\n }\n\n case '$containsi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}%`,\n ]);\n break;\n }\n\n case '$notContainsi': {\n qb.whereRaw(`${fieldLowerFn(qb)} NOT LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}%`,\n ]);\n break;\n }\n\n // Experimental, only for internal use\n // Only on MySQL, PostgreSQL and CockroachDB.\n // https://knexjs.org/guide/query-builder.html#wherejsonsupersetof\n case '$jsonSupersetOf': {\n qb.whereJsonSupersetOf(column, value);\n break;\n }\n\n // TODO: Add more JSON operators: whereJsonObject, whereJsonPath, whereJsonSubsetOf\n\n // TODO: relational operators every/some/exists/size ...\n\n default: {\n throw new Error(`Undefined attribute level operator ${operator}`);\n }\n }\n};\n\nconst applyWhereToColumn = (\n qb: Knex.QueryBuilder,\n column: string,\n columnWhere: Record<Operator, unknown> | Array<Record<Operator, unknown>>\n) => {\n if (!isRecord(columnWhere)) {\n if (Array.isArray(columnWhere)) {\n return qb.whereIn(column, columnWhere);\n }\n\n return qb.where(column, columnWhere);\n }\n\n const keys = Object.keys(columnWhere) as Operator[];\n\n keys.forEach((operator) => {\n const value = columnWhere[operator];\n\n applyOperator(qb, column, operator, value);\n });\n};\n\ntype Where =\n | {\n $and?: Where[];\n $or?: Where[];\n $not?: Where;\n [key: string]: any;\n }\n | Array<Where>;\n\nconst applyWhere = (qb: Knex.QueryBuilder, where: Where): Knex.QueryBuilder | undefined => {\n if (!isArray(where) && !isRecord(where)) {\n throw new Error('Where must be an array or an object');\n }\n\n if (isArray(where)) {\n return qb.where((subQB: Knex.QueryBuilder) =>\n where.forEach((subWhere) => applyWhere(subQB, subWhere))\n );\n }\n\n Object.keys(where).forEach((key) => {\n if (key === '$and') {\n const value = where[key] ?? [];\n\n return qb.where((subQB: Knex.QueryBuilder) => {\n value.forEach((v) => applyWhere(subQB, v));\n });\n }\n\n if (key === '$or') {\n const value = where[key] ?? [];\n\n return qb.where((subQB: Knex.QueryBuilder) => {\n value.forEach((v) => subQB.orWhere((inner) => applyWhere(inner, v)));\n });\n }\n\n if (key === '$not') {\n const value = where[key] ?? {};\n\n return qb.whereNot((qb) => applyWhere(qb, value));\n }\n\n applyWhereToColumn(qb, key, where[key]);\n });\n};\n\nconst fieldLowerFn = (qb: Knex.QueryBuilder) => {\n // Postgres requires string to be passed\n if (qb.client.dialect === 'postgresql') {\n return 'LOWER(CAST(?? AS VARCHAR))';\n }\n\n return 'LOWER(??)';\n};\n\n// SQL LIKE wildcards (and the backslash escape character itself) that must be\n// escaped so a user-supplied value is matched literally instead of as a pattern.\nconst LIKE_SPECIAL_CHARS = '%_\\\\';\n\nconst escapeLike = (value: unknown) => escapeQuery(`${value}`, LIKE_SPECIAL_CHARS);\n\n// SQLite has no default LIKE escape character and requires an explicit clause.\n// PostgreSQL and MySQL both default to backslash, matching helpers/search.ts.\nconst likeEscapeClause = (qb: Knex.QueryBuilder) =>\n qb.client.dialect === 'sqlite3' ? \" ESCAPE '\\\\'\" : '';\n\n/**\n * Prefix unaliased root column keys with `alias` (e.g. `published_at` → `t0.published_at`).\n * Used for update/delete subqueries that join other tables sharing column names.\n * Group operators are walked; already-qualified keys (`t1.title`) and operator keys are left as-is.\n */\nfunction qualifyRootColumns(where: Record<string, unknown>, alias: string): Record<string, unknown>;\nfunction qualifyRootColumns(\n where: Record<string, unknown>[],\n alias: string\n): Record<string, unknown>[];\nfunction qualifyRootColumns(\n where: Record<string, unknown> | Record<string, unknown>[],\n alias: string\n): Record<string, unknown> | Record<string, unknown>[] {\n if (isArray(where)) {\n return where.map((sub) => qualifyRootColumns(sub, alias));\n }\n\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n if (isOperatorOfType('group', key)) {\n if (Array.isArray(value)) {\n result[key] = value.map((sub) => (isRecord(sub) ? qualifyRootColumns(sub, alias) : sub));\n } else {\n result[key] = value;\n }\n continue;\n }\n\n if (key === '$not' && isRecord(value)) {\n result[key] = qualifyRootColumns(value, alias);\n continue;\n }\n\n const qualifiedKey = key.includes('.') || isOperator(key) ? key : `${alias}.${key}`;\n result[qualifiedKey] = value;\n }\n\n return result;\n}\n\nexport { applyWhere, processWhere, qualifyRootColumns };\n"],"names":["isRecord","value","isPlainObject","castValue","attribute","types","type","isKnexQuery","field","createField","toDB","processSingleAttributeWhere","where","operator","isOperatorOfType","filters","key","Object","keys","Error","processAttributeWhere","isArray","map","sub","processNested","ctx","processWhere","processRelationWhere","qb","alias","idAlias","aliasColumn","operatorKeys","filter","isOperator","length","db","uid","meta","metadata","get","Array","attributes","subAlias","createJoin","attributeName","nestedWhere","target","assign","columnName","toColumnName","aliasedColumnName","applyOperator","column","subQB","forEach","subValue","orWhere","innerQB","whereNot","applyWhereToColumn","whereIn","castArray","whereNotIn","whereNull","whereRaw","fieldLowerFn","whereNotNull","whereBetween","likeEscapeClause","escapeLike","whereJsonSupersetOf","columnWhere","applyWhere","subWhere","v","inner","client","dialect","LIKE_SPECIAL_CHARS","escapeQuery","qualifyRootColumns","result","qualifiedKey","includes"],"mappings":"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"}
1
+ {"version":3,"file":"where.mjs","sources":["../../../src/query/helpers/where.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { castArray, isPlainObject } from 'lodash';\nimport type { Knex } from 'knex';\n\nimport { isOperator, isOperatorOfType } from '@strapi/utils';\nimport * as types from '../../utils/types';\nimport { createField } from '../../fields';\nimport { createJoin } from './join';\nimport { toColumnName } from './transform';\nimport { escapeQuery } from './search';\nimport { isKnexQuery } from '../../utils/knex';\n\nimport type { Ctx } from '../types';\nimport type { Attribute } from '../../types';\n\ntype WhereCtx = Ctx & { alias?: string; isGroupRoot?: boolean };\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => isPlainObject(value);\n\nconst castValue = (value: unknown, attribute: Attribute | null) => {\n if (!attribute) {\n return value;\n }\n\n if (types.isScalar(attribute.type) && !isKnexQuery(value)) {\n const field = createField(attribute);\n\n return value === null ? null : field.toDB(value);\n }\n\n return value;\n};\n\nconst processSingleAttributeWhere = (\n attribute: Attribute | null,\n where: unknown,\n operator = '$eq'\n) => {\n if (!isRecord(where)) {\n if (isOperatorOfType('cast', operator)) {\n return castValue(where, attribute);\n }\n\n return where;\n }\n\n const filters: Record<string, unknown> = {};\n\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n if (!isOperatorOfType('where', key)) {\n throw new Error(`Undefined attribute level operator ${key}`);\n }\n\n filters[key] = processAttributeWhere(attribute, value, key);\n }\n\n return filters;\n};\n\nconst processAttributeWhere = (attribute: Attribute | null, where: unknown, operator = '$eq') => {\n if (Array.isArray(where)) {\n return where.map((sub) => processSingleAttributeWhere(attribute, sub, operator));\n }\n\n return processSingleAttributeWhere(attribute, where, operator);\n};\n\nconst processNested = (where: unknown, ctx: WhereCtx) => {\n if (!isRecord(where)) {\n return where;\n }\n\n return processWhere(where, ctx);\n};\n\nconst processRelationWhere = (where: unknown, ctx: WhereCtx) => {\n const { qb, alias } = ctx;\n\n const idAlias = qb.aliasColumn('id', alias);\n if (!isRecord(where)) {\n return { [idAlias]: where };\n }\n\n const keys = Object.keys(where);\n const operatorKeys = keys.filter((key) => isOperator(key));\n\n if (operatorKeys.length > 0 && operatorKeys.length !== keys.length) {\n throw new Error(`Operator and non-operator keys cannot be mixed in a relation where clause`);\n }\n\n if (operatorKeys.length > 1) {\n throw new Error(\n `Only one operator key is allowed in a relation where clause, but found: ${operatorKeys}`\n );\n }\n\n if (operatorKeys.length === 1) {\n const operator = operatorKeys[0];\n\n if (isOperatorOfType('group', operator)) {\n return processWhere(where, ctx);\n }\n\n return { [idAlias]: { [operator]: processNested(where[operator], ctx) } };\n }\n\n return processWhere(where, ctx);\n};\n\n/**\n * Process where parameter\n */\nfunction processWhere(where: Record<string, unknown>, ctx: WhereCtx): Record<string, unknown>;\nfunction processWhere(where: Record<string, unknown>[], ctx: WhereCtx): Record<string, unknown>[];\nfunction processWhere(\n where: Record<string, unknown> | Record<string, unknown>[],\n ctx: WhereCtx\n): Record<string, unknown> | Record<string, unknown>[] {\n if (!Array.isArray(where) && !isRecord(where)) {\n throw new Error('Where must be an array or an object');\n }\n\n if (Array.isArray(where)) {\n return where.map((sub) => processWhere(sub, ctx));\n }\n\n const { db, uid, qb, alias } = ctx;\n const meta = db.metadata.get(uid);\n\n const filters: Record<string, unknown> = {};\n\n // for each key in where\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n // if operator $and $or -> process recursively\n if (isOperatorOfType('group', key)) {\n if (!Array.isArray(value)) {\n throw new Error(`Operator ${key} must be an array`);\n }\n\n filters[key] = value.map((sub) => processNested(sub, ctx));\n continue;\n }\n\n if (key === '$not') {\n filters[key] = processNested(value, ctx);\n continue;\n }\n\n if (isOperatorOfType('where', key)) {\n throw new Error(\n `Only $and, $or and $not can only be used as root level operators. Found ${key}.`\n );\n }\n\n const attribute = meta.attributes[key];\n\n if (!attribute) {\n filters[qb.aliasColumn(key, alias)] = processAttributeWhere(null, value);\n continue;\n }\n\n if (types.isRelation(attribute.type) && 'target' in attribute) {\n // attribute\n const subAlias = createJoin(ctx, {\n alias: alias || qb.alias,\n attributeName: key,\n attribute,\n });\n\n const nestedWhere = processRelationWhere(value, {\n db,\n qb,\n alias: subAlias,\n uid: attribute.target,\n });\n\n // TODO: use a better merge logic (push to $and when collisions)\n Object.assign(filters, nestedWhere);\n\n continue;\n }\n\n if (types.isScalar(attribute.type)) {\n const columnName = toColumnName(meta, key);\n const aliasedColumnName = qb.aliasColumn(columnName, alias);\n\n filters[aliasedColumnName] = processAttributeWhere(attribute, value);\n\n continue;\n }\n\n throw new Error(`You cannot filter on ${attribute.type} types`);\n }\n\n return filters;\n}\n\ntype Operator =\n | '$eq'\n | '$ne'\n | '$nei'\n | '$in'\n | '$notIn'\n | '$lt'\n | '$lte'\n | '$gt'\n | '$gte'\n | '$between'\n | '$contains'\n | '$notContains'\n | '$containsi'\n | '$notContainsi'\n | '$startsWith'\n | '$endsWith'\n | '$null'\n | '$notNull'\n | '$not'\n | '$eqi'\n | '$startsWithi'\n | '$endsWithi'\n | '$jsonSupersetOf';\n\n// TODO: add type casting per operator at some point\nconst applyOperator = (\n qb: Knex.QueryBuilder,\n column: any,\n operator: Operator,\n value: any\n): Knex.QueryBuilder | undefined => {\n if (Array.isArray(value) && !isOperatorOfType('array', operator)) {\n return qb.where((subQB) => {\n value.forEach((subValue) =>\n subQB.orWhere((innerQB) => {\n applyOperator(innerQB, column, operator, subValue);\n })\n );\n });\n }\n\n switch (operator) {\n case '$not': {\n qb.whereNot((qb) => applyWhereToColumn(qb, column, value));\n break;\n }\n\n case '$in': {\n // @ts-ignore\n // TODO: fix in v5\n qb.whereIn(column, isKnexQuery(value) ? value : [...castArray(value)]);\n break;\n }\n\n case '$notIn': {\n // @ts-ignore\n // TODO: fix in v5\n qb.whereNotIn(column, isKnexQuery(value) ? value : [...castArray(value)]);\n break;\n }\n\n case '$eq': {\n if (value === null) {\n qb.whereNull(column);\n break;\n }\n\n qb.where(column, value);\n break;\n }\n\n case '$eqi': {\n if (value === null) {\n qb.whereNull(column);\n break;\n }\n qb.whereRaw(`${fieldLowerFn(qb)} = LOWER(?)`, [column, `${value}`]);\n break;\n }\n case '$ne': {\n if (value === null) {\n qb.whereNotNull(column);\n break;\n }\n\n qb.where(column, '<>', value);\n break;\n }\n case '$nei': {\n if (value === null) {\n qb.whereNotNull(column);\n break;\n }\n qb.whereRaw(`${fieldLowerFn(qb)} <> LOWER(?)`, [column, `${value}`]);\n break;\n }\n case '$gt': {\n qb.where(column, '>', value);\n break;\n }\n case '$gte': {\n qb.where(column, '>=', value);\n break;\n }\n case '$lt': {\n qb.where(column, '<', value);\n break;\n }\n case '$lte': {\n qb.where(column, '<=', value);\n break;\n }\n case '$null': {\n if (value) {\n qb.whereNull(column);\n } else {\n qb.whereNotNull(column);\n }\n break;\n }\n case '$notNull': {\n if (value) {\n qb.whereNotNull(column);\n } else {\n qb.whereNull(column);\n }\n break;\n }\n case '$between': {\n qb.whereBetween(column, value);\n break;\n }\n case '$startsWith': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `${escapeLike(value)}%`]);\n break;\n }\n case '$startsWithi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `${escapeLike(value)}%`,\n ]);\n break;\n }\n case '$endsWith': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}`]);\n break;\n }\n case '$endsWithi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}`,\n ]);\n break;\n }\n case '$contains': {\n qb.whereRaw(`?? LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}%`]);\n break;\n }\n\n case '$notContains': {\n qb.whereRaw(`?? NOT LIKE ?${likeEscapeClause(qb)}`, [column, `%${escapeLike(value)}%`]);\n break;\n }\n\n case '$containsi': {\n qb.whereRaw(`${fieldLowerFn(qb)} LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}%`,\n ]);\n break;\n }\n\n case '$notContainsi': {\n qb.whereRaw(`${fieldLowerFn(qb)} NOT LIKE LOWER(?)${likeEscapeClause(qb)}`, [\n column,\n `%${escapeLike(value)}%`,\n ]);\n break;\n }\n\n // Experimental, only for internal use\n // Only on MySQL, PostgreSQL and CockroachDB.\n // https://knexjs.org/guide/query-builder.html#wherejsonsupersetof\n case '$jsonSupersetOf': {\n qb.whereJsonSupersetOf(column, value);\n break;\n }\n\n // TODO: Add more JSON operators: whereJsonObject, whereJsonPath, whereJsonSubsetOf\n\n // TODO: relational operators every/some/exists/size ...\n\n default: {\n throw new Error(`Undefined attribute level operator ${operator}`);\n }\n }\n};\n\nconst applyWhereToColumn = (\n qb: Knex.QueryBuilder,\n column: string,\n columnWhere: Record<Operator, unknown> | Array<Record<Operator, unknown>>\n) => {\n if (!isRecord(columnWhere)) {\n if (Array.isArray(columnWhere)) {\n return qb.whereIn(column, columnWhere);\n }\n\n return qb.where(column, columnWhere);\n }\n\n const keys = Object.keys(columnWhere) as Operator[];\n\n keys.forEach((operator) => {\n const value = columnWhere[operator];\n\n applyOperator(qb, column, operator, value);\n });\n};\n\ntype Where =\n | {\n $and?: Where[];\n $or?: Where[];\n $not?: Where;\n [key: string]: any;\n }\n | Array<Where>;\n\nconst applyWhere = (qb: Knex.QueryBuilder, where: Where): Knex.QueryBuilder | undefined => {\n if (!Array.isArray(where) && !isRecord(where)) {\n throw new Error('Where must be an array or an object');\n }\n\n if (Array.isArray(where)) {\n return qb.where((subQB: Knex.QueryBuilder) =>\n where.forEach((subWhere) => applyWhere(subQB, subWhere))\n );\n }\n\n Object.keys(where).forEach((key) => {\n if (key === '$and') {\n const value = where[key] ?? [];\n\n return qb.where((subQB: Knex.QueryBuilder) => {\n value.forEach((v) => applyWhere(subQB, v));\n });\n }\n\n if (key === '$or') {\n const value = where[key] ?? [];\n\n return qb.where((subQB: Knex.QueryBuilder) => {\n value.forEach((v) => subQB.orWhere((inner) => applyWhere(inner, v)));\n });\n }\n\n if (key === '$not') {\n const value = where[key] ?? {};\n\n return qb.whereNot((qb) => applyWhere(qb, value));\n }\n\n applyWhereToColumn(qb, key, where[key]);\n });\n};\n\nconst fieldLowerFn = (qb: Knex.QueryBuilder) => {\n // Postgres requires string to be passed\n if (qb.client.dialect === 'postgresql') {\n return 'LOWER(CAST(?? AS VARCHAR))';\n }\n\n return 'LOWER(??)';\n};\n\n// SQL LIKE wildcards (and the backslash escape character itself) that must be\n// escaped so a user-supplied value is matched literally instead of as a pattern.\nconst LIKE_SPECIAL_CHARS = '%_\\\\';\n\nconst escapeLike = (value: unknown) => escapeQuery(`${value}`, LIKE_SPECIAL_CHARS);\n\n// SQLite has no default LIKE escape character and requires an explicit clause.\n// PostgreSQL and MySQL both default to backslash, matching helpers/search.ts.\nconst likeEscapeClause = (qb: Knex.QueryBuilder) =>\n qb.client.dialect === 'sqlite3' ? \" ESCAPE '\\\\'\" : '';\n\n/**\n * Prefix unaliased root column keys with `alias` (e.g. `published_at` → `t0.published_at`).\n * Used for update/delete subqueries that join other tables sharing column names.\n * Group operators are walked; already-qualified keys (`t1.title`) and operator keys are left as-is.\n */\nfunction qualifyRootColumns(where: Record<string, unknown>, alias: string): Record<string, unknown>;\nfunction qualifyRootColumns(\n where: Record<string, unknown>[],\n alias: string\n): Record<string, unknown>[];\nfunction qualifyRootColumns(\n where: Record<string, unknown> | Record<string, unknown>[],\n alias: string\n): Record<string, unknown> | Record<string, unknown>[] {\n if (Array.isArray(where)) {\n return where.map((sub) => qualifyRootColumns(sub, alias));\n }\n\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(where)) {\n const value = where[key];\n\n if (isOperatorOfType('group', key)) {\n if (Array.isArray(value)) {\n result[key] = value.map((sub) => (isRecord(sub) ? qualifyRootColumns(sub, alias) : sub));\n } else {\n result[key] = value;\n }\n continue;\n }\n\n if (key === '$not' && isRecord(value)) {\n result[key] = qualifyRootColumns(value, alias);\n continue;\n }\n\n const qualifiedKey = key.includes('.') || isOperator(key) ? key : `${alias}.${key}`;\n result[qualifiedKey] = value;\n }\n\n return result;\n}\n\nexport { applyWhere, processWhere, qualifyRootColumns };\n"],"names":["isRecord","value","isPlainObject","castValue","attribute","types","type","isKnexQuery","field","createField","toDB","processSingleAttributeWhere","where","operator","isOperatorOfType","filters","key","Object","keys","Error","processAttributeWhere","Array","isArray","map","sub","processNested","ctx","processWhere","processRelationWhere","qb","alias","idAlias","aliasColumn","operatorKeys","filter","isOperator","length","db","uid","meta","metadata","get","attributes","subAlias","createJoin","attributeName","nestedWhere","target","assign","columnName","toColumnName","aliasedColumnName","applyOperator","column","subQB","forEach","subValue","orWhere","innerQB","whereNot","applyWhereToColumn","whereIn","castArray","whereNotIn","whereNull","whereRaw","fieldLowerFn","whereNotNull","whereBetween","likeEscapeClause","escapeLike","whereJsonSupersetOf","columnWhere","applyWhere","subWhere","v","inner","client","dialect","LIKE_SPECIAL_CHARS","escapeQuery","qualifyRootColumns","result","qualifiedKey","includes"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAKnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,UAAU,KAAK;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;IACvF,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;IAErB,QAAQ,IAAI,MAAM,CAAC;IAEnB,KAAK,IAAI,YAAY,CAAC;IAEtB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IAE9D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC;IAEjD,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACtE,IAAI,EAAE,KAAK,GACV,YAAY,CAAC;IAEhB,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAAC;IAEpC,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAAC;IAE/B,MAAM,IAAI,YAAY,CAAC;IAEvB,MAAM,IAAI,YAAY,CAAC;IAEvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;IAEvB,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,CAAC;IAEzE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEzD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEzD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEpC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAElC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAElC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAEnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAErC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,YAAY,CAAC;IAEpC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,YAAY,CAAC;IAEpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY,CAAC;IAEtC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAEpC,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG,YAAY,CAAC;IAE5C,SAAS,IAAI,YAAY,CAAC;IAE1B,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC;IAEjC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAE5B,KAAK,IAAI,YAAY,CAAC;IAEtB,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAAC;IAE9B,YAAY,IAAI,OAAO,CAAC;IAExB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAE3C,iBAAiB,IAAI,OAAO,CAAC;IAE7B,WAAW,IAAI,GAAG,CAAC;IAEnB,YAAY,IAAI,IAAI,CAAC;IAErB,8BAA8B,IAAI,IAAI,CAAC;IAEvC,iBAAiB,IAAI,OAAO,CAAC;IAE7B,iBAAiB,IAAI,OAAO,CAAC;IAE7B,aAAa,IAAI,IAAI,CAAC;IAEtB,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;IAElC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;CACnE;AAED,QAAA,MAAM,kBAAkB,GACtB,KAAK,MAAM,EACX,IAAI,QAAQ,EACZ,eAAc,OAAO,CAAC,KAAK,CAAM,KAChC,YAspBF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _ = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var database = require('../errors/database.js');
5
5
  var transactionContext = require('../transaction-context.js');
6
6
  var knex = require('../utils/knex.js');
@@ -20,7 +20,7 @@ var ___default = /*#__PURE__*/_interopDefault(_);
20
20
  const createQueryBuilder = (uid, db, initialState = {})=>{
21
21
  const meta = db.metadata.get(uid);
22
22
  const { tableName } = meta;
23
- const state = ___default.default.defaults({
23
+ const state = ___default.default.defaults({}, initialState, {
24
24
  type: 'select',
25
25
  select: [],
26
26
  count: null,
@@ -46,7 +46,7 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
46
46
  filters: null,
47
47
  search: null,
48
48
  processed: false
49
- }, initialState);
49
+ });
50
50
  const getAlias = ()=>{
51
51
  const alias = `t${state.aliasCounter}`;
52
52
  state.aliasCounter += 1;
@@ -61,14 +61,18 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
61
61
  },
62
62
  select (args) {
63
63
  state.type = 'select';
64
- state.select = ___default.default.uniq(___default.default.castArray(args));
64
+ state.select = [
65
+ ...new Set(___default.default.castArray(args))
66
+ ];
65
67
  return this;
66
68
  },
67
69
  addSelect (args) {
68
- state.select = ___default.default.uniq([
69
- ...state.select,
70
- ...___default.default.castArray(args)
71
- ]);
70
+ state.select = [
71
+ ...new Set([
72
+ ...state.select,
73
+ ...___default.default.castArray(args)
74
+ ])
75
+ ];
72
76
  return this;
73
77
  },
74
78
  insert (data) {
@@ -172,33 +176,33 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
172
176
  },
173
177
  init (params = {}) {
174
178
  const { _q: searchQuery, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;
175
- if (!___default.default.isNil(where)) {
179
+ if (where != null) {
176
180
  this.where(where);
177
181
  }
178
- if (!___default.default.isNil(searchQuery)) {
182
+ if (searchQuery != null) {
179
183
  this.search(searchQuery);
180
184
  }
181
- if (!___default.default.isNil(select)) {
185
+ if (select != null) {
182
186
  this.select(select);
183
187
  } else {
184
188
  this.select('*');
185
189
  }
186
- if (!___default.default.isNil(limit)) {
190
+ if (limit != null) {
187
191
  this.limit(limit);
188
192
  }
189
- if (!___default.default.isNil(offset)) {
193
+ if (offset != null) {
190
194
  this.offset(offset);
191
195
  }
192
- if (!___default.default.isNil(orderBy)) {
196
+ if (orderBy != null) {
193
197
  this.orderBy(orderBy);
194
198
  }
195
- if (!___default.default.isNil(groupBy)) {
199
+ if (groupBy != null) {
196
200
  this.groupBy(groupBy);
197
201
  }
198
- if (!___default.default.isNil(populate)) {
202
+ if (populate != null) {
199
203
  this.populate(populate);
200
204
  }
201
- if (!___default.default.isNil(filters)) {
205
+ if (filters != null) {
202
206
  this.filters(filters);
203
207
  }
204
208
  return this;
@@ -242,7 +246,7 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
242
246
  if (key.indexOf('.') >= 0) {
243
247
  return key;
244
248
  }
245
- if (!___default.default.isNil(alias)) {
249
+ if (alias != null) {
246
250
  return `${alias}.${key}`;
247
251
  }
248
252
  return this.mustUseAlias() ? `${this.alias}.${key}` : key;
@@ -279,15 +283,15 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
279
283
  uid,
280
284
  db
281
285
  });
282
- if (!___default.default.isNil(state.filters)) {
283
- if (___default.default.isFunction(state.filters)) {
286
+ if (state.filters != null) {
287
+ if (typeof state.filters === 'function') {
284
288
  const filters = state.filters({
285
289
  qb: this,
286
290
  uid,
287
291
  meta,
288
292
  db
289
293
  });
290
- if (!___default.default.isNil(filters)) {
294
+ if (filters != null) {
291
295
  state.where.push(filters);
292
296
  }
293
297
  } else {
@@ -377,15 +381,17 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
377
381
  });
378
382
  if (this.shouldUseDistinct()) {
379
383
  const joinsOrderByColumns = state.joins.flatMap((join)=>{
380
- return ___default.default.keys(join.orderBy).map((key)=>this.aliasColumn(key, join.alias));
384
+ return Object.keys(join.orderBy ?? {}).map((key)=>this.aliasColumn(key, join.alias));
381
385
  });
382
386
  // Only include column-based orderBy entries here (raw expressions are handled below)
383
387
  const orderByColumns = state.orderBy.filter((ob)=>'column' in ob).map((ob)=>ob.column);
384
- state.select = ___default.default.uniq([
385
- ...joinsOrderByColumns,
386
- ...orderByColumns,
387
- ...state.select
388
- ]);
388
+ state.select = [
389
+ ...new Set([
390
+ ...joinsOrderByColumns,
391
+ ...orderByColumns,
392
+ ...state.select
393
+ ])
394
+ ];
389
395
  // PostgreSQL requires every ORDER BY expression to appear in the SELECT list when
390
396
  // SELECT DISTINCT is used. Raw expressions (e.g. the `status` CASE ranking) are not
391
397
  // plain columns, so add them explicitly — using the same builder/alias as the ORDER BY
@@ -452,7 +458,7 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
452
458
  case 'insert':
453
459
  {
454
460
  qb.insert(state.data);
455
- if (db.dialect.useReturning() && ___default.default.has('id', meta.attributes)) {
461
+ if (db.dialect.useReturning() && ___default.default.has(meta.attributes, 'id')) {
456
462
  qb.returning('id');
457
463
  }
458
464
  break;
@@ -555,7 +561,7 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
555
561
  qb.transacting(transaction);
556
562
  }
557
563
  const rows = await qb;
558
- if (state.populate && !___default.default.isNil(rows)) {
564
+ if (state.populate && rows != null) {
559
565
  await apply(___default.default.castArray(rows), state.populate, {
560
566
  qb: this,
561
567
  uid,
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.js","sources":["../../src/query/query-builder.ts"],"sourcesContent":["import type { Knex } from 'knex';\nimport _ from 'lodash/fp';\n\nimport type { Database } from '..';\n\nimport { DatabaseError } from '../errors';\nimport { transactionCtx } from '../transaction-context';\nimport { isKnexQuery } from '../utils/knex';\nimport * as helpers from './helpers';\nimport type { Join } from './helpers/join';\nimport type { OrderByValue } from './helpers/order-by';\n\ninterface State {\n type: 'select' | 'insert' | 'update' | 'delete' | 'count' | 'max' | 'min' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: string | null;\n min: string | null;\n first: boolean;\n data: Record<string, unknown> | (null | Record<string, unknown>)[] | null;\n where: Record<string, unknown>[];\n joins: Join[];\n populate: object | null;\n limit: number | null;\n offset: number | null;\n transaction: any;\n forUpdate: boolean;\n onConflict: any;\n merge: any;\n ignore: boolean;\n orderBy: any[];\n groupBy: any[];\n increments: any[];\n decrements: any[];\n aliasCounter: number;\n filters: any;\n search: string;\n processed: boolean;\n}\n\nexport interface QueryBuilder {\n alias: string;\n state: State;\n raw: Knex.RawBuilder;\n\n getAlias(): string;\n\n clone(): QueryBuilder;\n\n select(args: string | Array<string | Knex.Raw>): QueryBuilder;\n\n addSelect(args: string | string[]): QueryBuilder;\n\n insert<TData extends Record<string, unknown> | Record<string, unknown>[]>(\n data: TData\n ): QueryBuilder;\n\n onConflict(args: any): QueryBuilder;\n\n merge(args: any): QueryBuilder;\n\n ignore(): QueryBuilder;\n\n delete(): QueryBuilder;\n\n ref(name: string): any;\n\n update<TData extends Record<string, unknown>>(data: TData): QueryBuilder;\n\n increment(column: string, amount?: number): QueryBuilder;\n\n decrement(column: string, amount?: number): QueryBuilder;\n\n count(count?: string): QueryBuilder;\n\n max(column: string): QueryBuilder;\n\n min(column: string): QueryBuilder;\n\n where(where?: object): QueryBuilder;\n\n limit(limit: number): QueryBuilder;\n\n offset(offset: number): QueryBuilder;\n\n orderBy(orderBy: any): QueryBuilder;\n\n groupBy(groupBy: any): QueryBuilder;\n\n populate(populate: any): QueryBuilder;\n\n search(query: string): QueryBuilder;\n\n transacting(transaction: any): QueryBuilder;\n\n forUpdate(): QueryBuilder;\n\n init(params?: any): QueryBuilder;\n\n filters(filters: any): void;\n\n first(): QueryBuilder;\n\n join(join: any): QueryBuilder;\n\n mustUseAlias(): boolean;\n\n aliasColumn(key: any, alias?: string): any;\n\n shouldUseSubQuery(): boolean;\n\n runSubQuery(): any;\n\n processState(): void;\n\n ensurePaginationOrderStability(): void;\n\n shouldUseDistinct(): boolean;\n\n shouldUseDeepSort(): boolean;\n\n processSelect(): void;\n\n getKnexQuery(): Knex.QueryBuilder;\n\n execute<T>(options?: { mapResults?: boolean }): Promise<T>;\n\n stream(options?: { mapResults?: boolean }): helpers.ReadableQuery;\n}\n\nconst createQueryBuilder = (\n uid: string,\n db: Database,\n initialState: Partial<State> = {}\n): QueryBuilder => {\n const meta = db.metadata.get(uid);\n const { tableName } = meta;\n\n const state: State = _.defaults(\n {\n type: 'select',\n select: [],\n count: null,\n max: null,\n min: null,\n first: false,\n data: null,\n where: [],\n joins: [],\n populate: null,\n limit: null,\n offset: null,\n transaction: null,\n forUpdate: false,\n onConflict: null,\n merge: null,\n ignore: false,\n orderBy: [],\n groupBy: [],\n increments: [],\n decrements: [],\n aliasCounter: 0,\n filters: null,\n search: null,\n processed: false,\n },\n initialState\n );\n\n const getAlias = () => {\n const alias = `t${state.aliasCounter}`;\n\n state.aliasCounter += 1;\n\n return alias;\n };\n\n return {\n alias: getAlias(),\n getAlias,\n state,\n\n clone() {\n return createQueryBuilder(uid, db, state);\n },\n\n select(args) {\n state.type = 'select';\n state.select = _.uniq(_.castArray(args));\n\n return this;\n },\n\n addSelect(args) {\n state.select = _.uniq([...state.select, ..._.castArray(args)]);\n\n return this;\n },\n\n insert(data) {\n state.type = 'insert';\n state.data = data;\n\n return this;\n },\n\n onConflict(args) {\n state.onConflict = args;\n\n return this;\n },\n\n merge(args) {\n state.merge = args;\n\n return this;\n },\n\n ignore() {\n state.ignore = true;\n\n return this;\n },\n\n delete() {\n state.type = 'delete';\n\n return this;\n },\n\n ref(name) {\n return db.connection.ref(helpers.toColumnName(meta, name));\n },\n\n update(data) {\n state.type = 'update';\n state.data = data;\n\n return this;\n },\n\n increment(column, amount = 1) {\n state.type = 'update';\n state.increments.push({ column, amount });\n\n return this;\n },\n\n decrement(column, amount = 1) {\n state.type = 'update';\n state.decrements.push({ column, amount });\n\n return this;\n },\n\n count(count = 'id') {\n state.type = 'count';\n state.count = count;\n\n return this;\n },\n\n max(column: string) {\n state.type = 'max';\n state.max = column;\n\n return this;\n },\n\n min(column: string) {\n state.type = 'min';\n state.min = column;\n\n return this;\n },\n\n where(where: Record<string, unknown> = {}) {\n if (!_.isPlainObject(where)) {\n throw new Error('Where must be an object');\n }\n\n state.where.push(where);\n\n return this;\n },\n\n limit(limit) {\n state.limit = limit;\n return this;\n },\n\n offset(offset) {\n state.offset = offset;\n return this;\n },\n\n orderBy(orderBy) {\n state.orderBy = orderBy;\n return this;\n },\n\n groupBy(groupBy) {\n state.groupBy = groupBy;\n return this;\n },\n\n populate(populate) {\n state.populate = populate;\n return this;\n },\n\n search(query) {\n state.search = query;\n return this;\n },\n\n transacting(transaction) {\n state.transaction = transaction;\n return this;\n },\n\n forUpdate() {\n state.forUpdate = true;\n return this;\n },\n\n init(params = {}) {\n const {\n _q: searchQuery,\n filters,\n where,\n select,\n limit,\n offset,\n orderBy,\n groupBy,\n populate,\n } = params;\n\n if (!_.isNil(where)) {\n this.where(where);\n }\n\n if (!_.isNil(searchQuery)) {\n this.search(searchQuery);\n }\n\n if (!_.isNil(select)) {\n this.select(select);\n } else {\n this.select('*');\n }\n\n if (!_.isNil(limit)) {\n this.limit(limit);\n }\n\n if (!_.isNil(offset)) {\n this.offset(offset);\n }\n\n if (!_.isNil(orderBy)) {\n this.orderBy(orderBy);\n }\n\n if (!_.isNil(groupBy)) {\n this.groupBy(groupBy);\n }\n\n if (!_.isNil(populate)) {\n this.populate(populate);\n }\n\n if (!_.isNil(filters)) {\n this.filters(filters);\n }\n\n return this;\n },\n\n filters(filters) {\n state.filters = filters;\n },\n\n first() {\n state.first = true;\n return this;\n },\n\n join(join) {\n if (!join.targetField) {\n state.joins.push(join);\n return this;\n }\n\n const model = db.metadata.get(uid);\n const attribute = model.attributes[join.targetField];\n\n helpers.createJoin(\n { db, qb: this, uid },\n {\n alias: this.alias,\n refAlias: join.alias,\n attributeName: join.targetField,\n attribute,\n }\n );\n\n return this;\n },\n\n mustUseAlias() {\n return ['select', 'count'].includes(state.type);\n },\n\n aliasColumn(key: string | unknown, alias: string): string | unknown {\n if (typeof key !== 'string') {\n return key;\n }\n\n if (key.indexOf('.') >= 0) {\n return key;\n }\n\n if (!_.isNil(alias)) {\n return `${alias}.${key}`;\n }\n\n return this.mustUseAlias() ? `${this.alias}.${key}` : key;\n },\n\n raw: db.connection.raw.bind(db.connection),\n\n shouldUseSubQuery() {\n return ['delete', 'update'].includes(state.type) && state.joins.length > 0;\n },\n\n runSubQuery() {\n const originalType = state.type;\n\n // Build the inner SELECT from a clone that stays `select`, so the outer write\n // state is never mutated. clone() shallow-merges state (shared where/joins,\n // new alias) — preserve the original alias because joins were already baked\n // against it. The clone inherits processed: true and must only read shared arrays.\n const sub = this.clone();\n sub.alias = this.alias;\n const subQB = sub.select('id').getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const qb = db.getConnection(tableName);\n\n if (originalType === 'update') {\n return qb.update(state.data).whereIn('id', nestedSubQuery);\n }\n\n return qb.delete().whereIn('id', nestedSubQuery);\n },\n\n processState() {\n if (this.state.processed) {\n return;\n }\n\n state.orderBy = helpers.processOrderBy(state.orderBy, { qb: this, uid, db });\n\n if (!_.isNil(state.filters)) {\n if (_.isFunction(state.filters)) {\n const filters = state.filters({ qb: this, uid, meta, db });\n\n if (!_.isNil(filters)) {\n state.where.push(filters);\n }\n } else {\n state.where.push(state.filters);\n }\n }\n\n state.where = helpers.processWhere(state.where, { qb: this, uid, db });\n\n // processWhere emits bare root columns while type is still update/delete\n // (mustUseAlias is false). Qualify them now that joins from the relation\n // predicate are known, so overlapping names (published_at, locale, id) are not ambiguous.\n if (this.shouldUseSubQuery()) {\n state.where = helpers.qualifyRootColumns(state.where, this.alias);\n }\n\n state.populate = helpers.processPopulate(state.populate, { qb: this, uid, db });\n\n state.data = helpers.toRow(meta, state.data);\n\n this.ensurePaginationOrderStability();\n\n this.processSelect();\n\n this.state.processed = true;\n },\n\n /**\n * OFFSET/LIMIT without a unique ORDER BY is undefined behavior on SQL databases (notably MySQL).\n * That can repeat or skip rows across pages. Deep sort already appends a primary-key tie-breaker;\n * for all other paginated selects, append id ASC when it is not already the last sort key.\n */\n ensurePaginationOrderStability() {\n if (state.type !== 'select' || state.first) {\n return;\n }\n\n if (state.limit === null && state.offset === null) {\n return;\n }\n\n if (state.limit === -1) {\n return;\n }\n\n if (this.shouldUseDeepSort()) {\n return;\n }\n\n if (!meta.attributes.id) {\n return;\n }\n\n const idColumnName = helpers.toColumnName(meta, 'id');\n const aliasedId = this.aliasColumn(idColumnName);\n const lastOrder = state.orderBy[state.orderBy.length - 1];\n\n if (lastOrder && lastOrder.column === aliasedId) {\n return;\n }\n\n state.orderBy = [...state.orderBy, { column: aliasedId, order: 'asc' }];\n },\n\n shouldUseDistinct() {\n return state.joins.length > 0 && _.isEmpty(state.groupBy);\n },\n\n shouldUseDeepSort() {\n return (\n state.orderBy\n .filter((ob: any) => 'column' in ob && ob.column.indexOf('.') >= 0)\n .filter((ob: any) => {\n const col = ob.column.split('.');\n\n for (let i = 0; i < col.length - 1; i += 1) {\n const el = col[i];\n\n // order by \"rel\".\"xxx\"\n const isRelationAttribute = meta.attributes[el]?.type === 'relation';\n\n // order by \"t2\".\"xxx\"\n const isAliasedRelation = Object.values(state.joins)\n .map((join) => join.alias)\n .includes(el);\n\n if (isRelationAttribute || isAliasedRelation) {\n return true;\n }\n }\n\n return false;\n }).length > 0\n );\n },\n\n processSelect() {\n state.select = state.select.map((field) => {\n if (isKnexQuery(field)) {\n return field;\n }\n\n return helpers.toColumnName(meta, field);\n });\n\n if (this.shouldUseDistinct()) {\n const joinsOrderByColumns = state.joins.flatMap((join) => {\n return _.keys(join.orderBy).map((key) => this.aliasColumn(key, join.alias));\n });\n // Only include column-based orderBy entries here (raw expressions are handled below)\n const orderByColumns = state.orderBy\n .filter((ob: any) => 'column' in ob)\n .map((ob: any) => ob.column);\n\n state.select = _.uniq([...joinsOrderByColumns, ...orderByColumns, ...state.select]);\n\n // PostgreSQL requires every ORDER BY expression to appear in the SELECT list when\n // SELECT DISTINCT is used. Raw expressions (e.g. the `status` CASE ranking) are not\n // plain columns, so add them explicitly — using the same builder/alias as the ORDER BY\n // so the rendered SQL matches and PostgreSQL accepts the query. The deep-sort path\n // dedupes via row numbering instead of DISTINCT, so it strips these out later.\n const rawOrderByExpressions = state.orderBy\n .filter((ob: any) => 'rawExpression' in ob)\n .map((ob: any) =>\n helpers.buildStatusSortExpression(db, tableName, this.alias, ob.isI18n)\n );\n\n state.select = [...state.select, ...rawOrderByExpressions];\n }\n },\n\n getKnexQuery() {\n if (!state.type) {\n this.select('*');\n }\n\n const aliasedTableName = this.mustUseAlias() ? `${tableName} as ${this.alias}` : tableName;\n\n const qb = db.getConnection(aliasedTableName);\n\n // The state should always be processed before calling shouldUseSubQuery as it\n // relies on the presence or absence of joins to determine the need of a subquery\n this.processState();\n\n if (this.shouldUseSubQuery()) {\n return this.runSubQuery();\n }\n\n switch (state.type) {\n case 'select': {\n qb.select(state.select.map((column) => this.aliasColumn(column)));\n\n if (this.shouldUseDistinct()) {\n qb.distinct();\n }\n\n break;\n }\n case 'count': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.count));\n\n if (this.shouldUseDistinct()) {\n qb.countDistinct({ count: dbColumnName });\n } else {\n qb.count({ count: dbColumnName });\n }\n break;\n }\n case 'max': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.max));\n qb.max({ max: dbColumnName });\n break;\n }\n case 'min': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.min));\n qb.min({ min: dbColumnName });\n break;\n }\n case 'insert': {\n qb.insert(state.data);\n\n if (db.dialect.useReturning() && _.has('id', meta.attributes)) {\n qb.returning('id');\n }\n\n break;\n }\n case 'update': {\n if (state.data) {\n qb.update(state.data);\n }\n break;\n }\n case 'delete': {\n qb.delete();\n\n break;\n }\n case 'truncate': {\n qb.truncate();\n break;\n }\n default: {\n throw new Error('Unknown query type');\n }\n }\n\n if (state.transaction) {\n qb.transacting(state.transaction);\n }\n\n if (state.forUpdate) {\n qb.forUpdate();\n }\n\n if (!_.isEmpty(state.increments)) {\n state.increments.forEach((incr) => qb.increment(incr.column, incr.amount));\n }\n\n if (!_.isEmpty(state.decrements)) {\n state.decrements.forEach((decr) => qb.decrement(decr.column, decr.amount));\n }\n\n if (state.onConflict) {\n if (state.merge) {\n qb.onConflict(state.onConflict).merge(state.merge);\n } else if (state.ignore) {\n qb.onConflict(state.onConflict).ignore();\n }\n }\n\n if (state.limit) {\n qb.limit(state.limit);\n }\n\n if (state.offset) {\n qb.offset(state.offset);\n }\n\n if (state.first) {\n qb.first();\n }\n\n if (state.groupBy.length > 0) {\n qb.groupBy(state.groupBy);\n }\n\n // if there are joins and it is a delete or update use a sub query\n if (state.where) {\n helpers.applyWhere(qb, state.where);\n }\n\n // if there are joins and it is a delete or update use a sub query\n if (state.search) {\n qb.where((subQb) => {\n helpers.applySearch(subQb, state.search, { qb: this, db, uid });\n });\n }\n\n /**\n * Join `orderBy` (e.g. join-table ordinal for relations) must precede root `state.orderBy`\n * when both are emitted. Otherwise pagination stability (`ensurePaginationOrderStability`)\n * appending `id ASC` on the root alias wins over distinct target ids and breaks relation ordering.\n */\n if (state.joins.length > 0) {\n helpers.applyJoins(qb, state.joins);\n }\n\n if (state.orderBy.length > 0) {\n // `processState` normalizes entries to OrderByValue[] (string/object input from `.init()`).\n const knexOrderBy: helpers.KnexOrderByColumnDescriptor[] = (\n state.orderBy as OrderByValue[]\n ).map((entry) => helpers.toKnexOrderByDescriptor(db, tableName, this.alias, entry));\n // Knex compound `orderBy` typings list `column: string | QueryBuilder` — `Knex.Raw` works at runtime\n // (e.g. `status` sort). See helpers.toKnexOrderByDescriptor / buildStatusSortExpression.\n qb.orderBy(knexOrderBy as never);\n }\n\n if (this.shouldUseDeepSort()) {\n return helpers.wrapWithDeepSort(qb, { qb: this, db, uid });\n }\n\n return qb;\n },\n\n async execute({ mapResults = true } = {}) {\n try {\n const qb = this.getKnexQuery();\n\n const transaction = transactionCtx.get();\n if (transaction) {\n qb.transacting(transaction);\n }\n\n const rows = await qb;\n\n if (state.populate && !_.isNil(rows)) {\n await helpers.applyPopulate(_.castArray(rows), state.populate, {\n qb: this,\n uid,\n db,\n });\n }\n\n let results = rows;\n if (mapResults && state.type === 'select') {\n results = helpers.fromRow(meta, rows);\n }\n\n return results;\n } catch (error) {\n if (error instanceof Error) {\n db.dialect.transformErrors(error);\n } else {\n throw error;\n }\n }\n },\n\n stream({ mapResults = true } = {}) {\n if (state.type === 'select') {\n return new helpers.ReadableQuery({ qb: this, db, uid, mapResults });\n }\n\n throw new DatabaseError(\n `query-builder.stream() has been called with an unsupported query type: \"${state.type}\"`\n );\n },\n };\n};\n\nexport default createQueryBuilder;\n"],"names":["createQueryBuilder","uid","db","initialState","meta","metadata","get","tableName","state","_","defaults","type","select","count","max","min","first","data","where","joins","populate","limit","offset","transaction","forUpdate","onConflict","merge","ignore","orderBy","groupBy","increments","decrements","aliasCounter","filters","search","processed","getAlias","alias","clone","args","uniq","castArray","addSelect","insert","delete","ref","name","connection","helpers","update","increment","column","amount","push","decrement","isPlainObject","Error","query","transacting","init","params","_q","searchQuery","isNil","join","targetField","model","attribute","attributes","qb","refAlias","attributeName","mustUseAlias","includes","aliasColumn","key","indexOf","raw","bind","shouldUseSubQuery","length","runSubQuery","originalType","sub","subQB","getKnexQuery","nestedSubQuery","getConnection","from","as","whereIn","processState","isFunction","ensurePaginationOrderStability","processSelect","shouldUseDeepSort","id","idColumnName","aliasedId","lastOrder","order","shouldUseDistinct","isEmpty","filter","ob","col","split","i","el","isRelationAttribute","isAliasedRelation","Object","values","map","field","isKnexQuery","joinsOrderByColumns","flatMap","keys","orderByColumns","rawOrderByExpressions","isI18n","aliasedTableName","distinct","dbColumnName","countDistinct","dialect","useReturning","has","returning","truncate","forEach","incr","decr","subQb","knexOrderBy","entry","execute","mapResults","transactionCtx","rows","results","error","transformErrors","stream","DatabaseError"],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.js","sources":["../../src/query/query-builder.ts"],"sourcesContent":["import type { Knex } from 'knex';\nimport _ from 'lodash';\n\nimport type { Database } from '..';\n\nimport { DatabaseError } from '../errors';\nimport { transactionCtx } from '../transaction-context';\nimport { isKnexQuery } from '../utils/knex';\nimport * as helpers from './helpers';\nimport type { Join } from './helpers/join';\nimport type { OrderByValue } from './helpers/order-by';\n\ninterface State {\n type: 'select' | 'insert' | 'update' | 'delete' | 'count' | 'max' | 'min' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: string | null;\n min: string | null;\n first: boolean;\n data: Record<string, unknown> | (null | Record<string, unknown>)[] | null;\n where: Record<string, unknown>[];\n joins: Join[];\n populate: object | null;\n limit: number | null;\n offset: number | null;\n transaction: any;\n forUpdate: boolean;\n onConflict: any;\n merge: any;\n ignore: boolean;\n orderBy: any[];\n groupBy: any[];\n increments: any[];\n decrements: any[];\n aliasCounter: number;\n filters: any;\n search: string;\n processed: boolean;\n}\n\nexport interface QueryBuilder {\n alias: string;\n state: State;\n raw: Knex.RawBuilder;\n\n getAlias(): string;\n\n clone(): QueryBuilder;\n\n select(args: string | Array<string | Knex.Raw>): QueryBuilder;\n\n addSelect(args: string | string[]): QueryBuilder;\n\n insert<TData extends Record<string, unknown> | Record<string, unknown>[]>(\n data: TData\n ): QueryBuilder;\n\n onConflict(args: any): QueryBuilder;\n\n merge(args: any): QueryBuilder;\n\n ignore(): QueryBuilder;\n\n delete(): QueryBuilder;\n\n ref(name: string): any;\n\n update<TData extends Record<string, unknown>>(data: TData): QueryBuilder;\n\n increment(column: string, amount?: number): QueryBuilder;\n\n decrement(column: string, amount?: number): QueryBuilder;\n\n count(count?: string): QueryBuilder;\n\n max(column: string): QueryBuilder;\n\n min(column: string): QueryBuilder;\n\n where(where?: object): QueryBuilder;\n\n limit(limit: number): QueryBuilder;\n\n offset(offset: number): QueryBuilder;\n\n orderBy(orderBy: any): QueryBuilder;\n\n groupBy(groupBy: any): QueryBuilder;\n\n populate(populate: any): QueryBuilder;\n\n search(query: string): QueryBuilder;\n\n transacting(transaction: any): QueryBuilder;\n\n forUpdate(): QueryBuilder;\n\n init(params?: any): QueryBuilder;\n\n filters(filters: any): void;\n\n first(): QueryBuilder;\n\n join(join: any): QueryBuilder;\n\n mustUseAlias(): boolean;\n\n aliasColumn(key: any, alias?: string): any;\n\n shouldUseSubQuery(): boolean;\n\n runSubQuery(): any;\n\n processState(): void;\n\n ensurePaginationOrderStability(): void;\n\n shouldUseDistinct(): boolean;\n\n shouldUseDeepSort(): boolean;\n\n processSelect(): void;\n\n getKnexQuery(): Knex.QueryBuilder;\n\n execute<T>(options?: { mapResults?: boolean }): Promise<T>;\n\n stream(options?: { mapResults?: boolean }): helpers.ReadableQuery;\n}\n\nconst createQueryBuilder = (\n uid: string,\n db: Database,\n initialState: Partial<State> = {}\n): QueryBuilder => {\n const meta = db.metadata.get(uid);\n const { tableName } = meta;\n\n const state: State = _.defaults({}, initialState, {\n type: 'select',\n select: [],\n count: null,\n max: null,\n min: null,\n first: false,\n data: null,\n where: [],\n joins: [],\n populate: null,\n limit: null,\n offset: null,\n transaction: null,\n forUpdate: false,\n onConflict: null,\n merge: null,\n ignore: false,\n orderBy: [],\n groupBy: [],\n increments: [],\n decrements: [],\n aliasCounter: 0,\n filters: null,\n search: null,\n processed: false,\n });\n\n const getAlias = () => {\n const alias = `t${state.aliasCounter}`;\n\n state.aliasCounter += 1;\n\n return alias;\n };\n\n return {\n alias: getAlias(),\n getAlias,\n state,\n\n clone() {\n return createQueryBuilder(uid, db, state);\n },\n\n select(args) {\n state.type = 'select';\n state.select = [...new Set(_.castArray(args))];\n\n return this;\n },\n\n addSelect(args) {\n state.select = [...new Set([...state.select, ..._.castArray(args)])];\n\n return this;\n },\n\n insert(data) {\n state.type = 'insert';\n state.data = data;\n\n return this;\n },\n\n onConflict(args) {\n state.onConflict = args;\n\n return this;\n },\n\n merge(args) {\n state.merge = args;\n\n return this;\n },\n\n ignore() {\n state.ignore = true;\n\n return this;\n },\n\n delete() {\n state.type = 'delete';\n\n return this;\n },\n\n ref(name) {\n return db.connection.ref(helpers.toColumnName(meta, name));\n },\n\n update(data) {\n state.type = 'update';\n state.data = data;\n\n return this;\n },\n\n increment(column, amount = 1) {\n state.type = 'update';\n state.increments.push({ column, amount });\n\n return this;\n },\n\n decrement(column, amount = 1) {\n state.type = 'update';\n state.decrements.push({ column, amount });\n\n return this;\n },\n\n count(count = 'id') {\n state.type = 'count';\n state.count = count;\n\n return this;\n },\n\n max(column: string) {\n state.type = 'max';\n state.max = column;\n\n return this;\n },\n\n min(column: string) {\n state.type = 'min';\n state.min = column;\n\n return this;\n },\n\n where(where: Record<string, unknown> = {}) {\n if (!_.isPlainObject(where)) {\n throw new Error('Where must be an object');\n }\n\n state.where.push(where);\n\n return this;\n },\n\n limit(limit) {\n state.limit = limit;\n return this;\n },\n\n offset(offset) {\n state.offset = offset;\n return this;\n },\n\n orderBy(orderBy) {\n state.orderBy = orderBy;\n return this;\n },\n\n groupBy(groupBy) {\n state.groupBy = groupBy;\n return this;\n },\n\n populate(populate) {\n state.populate = populate;\n return this;\n },\n\n search(query) {\n state.search = query;\n return this;\n },\n\n transacting(transaction) {\n state.transaction = transaction;\n return this;\n },\n\n forUpdate() {\n state.forUpdate = true;\n return this;\n },\n\n init(params = {}) {\n const {\n _q: searchQuery,\n filters,\n where,\n select,\n limit,\n offset,\n orderBy,\n groupBy,\n populate,\n } = params;\n\n if (where != null) {\n this.where(where);\n }\n\n if (searchQuery != null) {\n this.search(searchQuery);\n }\n\n if (select != null) {\n this.select(select);\n } else {\n this.select('*');\n }\n\n if (limit != null) {\n this.limit(limit);\n }\n\n if (offset != null) {\n this.offset(offset);\n }\n\n if (orderBy != null) {\n this.orderBy(orderBy);\n }\n\n if (groupBy != null) {\n this.groupBy(groupBy);\n }\n\n if (populate != null) {\n this.populate(populate);\n }\n\n if (filters != null) {\n this.filters(filters);\n }\n\n return this;\n },\n\n filters(filters) {\n state.filters = filters;\n },\n\n first() {\n state.first = true;\n return this;\n },\n\n join(join) {\n if (!join.targetField) {\n state.joins.push(join);\n return this;\n }\n\n const model = db.metadata.get(uid);\n const attribute = model.attributes[join.targetField];\n\n helpers.createJoin(\n { db, qb: this, uid },\n {\n alias: this.alias,\n refAlias: join.alias,\n attributeName: join.targetField,\n attribute,\n }\n );\n\n return this;\n },\n\n mustUseAlias() {\n return ['select', 'count'].includes(state.type);\n },\n\n aliasColumn(key: string | unknown, alias: string): string | unknown {\n if (typeof key !== 'string') {\n return key;\n }\n\n if (key.indexOf('.') >= 0) {\n return key;\n }\n\n if (alias != null) {\n return `${alias}.${key}`;\n }\n\n return this.mustUseAlias() ? `${this.alias}.${key}` : key;\n },\n\n raw: db.connection.raw.bind(db.connection),\n\n shouldUseSubQuery() {\n return ['delete', 'update'].includes(state.type) && state.joins.length > 0;\n },\n\n runSubQuery() {\n const originalType = state.type;\n\n // Build the inner SELECT from a clone that stays `select`, so the outer write\n // state is never mutated. clone() shallow-merges state (shared where/joins,\n // new alias) — preserve the original alias because joins were already baked\n // against it. The clone inherits processed: true and must only read shared arrays.\n const sub = this.clone();\n sub.alias = this.alias;\n const subQB = sub.select('id').getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const qb = db.getConnection(tableName);\n\n if (originalType === 'update') {\n return qb.update(state.data).whereIn('id', nestedSubQuery);\n }\n\n return qb.delete().whereIn('id', nestedSubQuery);\n },\n\n processState() {\n if (this.state.processed) {\n return;\n }\n\n state.orderBy = helpers.processOrderBy(state.orderBy, { qb: this, uid, db });\n\n if (state.filters != null) {\n if (typeof state.filters === 'function') {\n const filters = state.filters({ qb: this, uid, meta, db });\n\n if (filters != null) {\n state.where.push(filters);\n }\n } else {\n state.where.push(state.filters);\n }\n }\n\n state.where = helpers.processWhere(state.where, { qb: this, uid, db });\n\n // processWhere emits bare root columns while type is still update/delete\n // (mustUseAlias is false). Qualify them now that joins from the relation\n // predicate are known, so overlapping names (published_at, locale, id) are not ambiguous.\n if (this.shouldUseSubQuery()) {\n state.where = helpers.qualifyRootColumns(state.where, this.alias);\n }\n\n state.populate = helpers.processPopulate(state.populate, { qb: this, uid, db });\n\n state.data = helpers.toRow(meta, state.data);\n\n this.ensurePaginationOrderStability();\n\n this.processSelect();\n\n this.state.processed = true;\n },\n\n /**\n * OFFSET/LIMIT without a unique ORDER BY is undefined behavior on SQL databases (notably MySQL).\n * That can repeat or skip rows across pages. Deep sort already appends a primary-key tie-breaker;\n * for all other paginated selects, append id ASC when it is not already the last sort key.\n */\n ensurePaginationOrderStability() {\n if (state.type !== 'select' || state.first) {\n return;\n }\n\n if (state.limit === null && state.offset === null) {\n return;\n }\n\n if (state.limit === -1) {\n return;\n }\n\n if (this.shouldUseDeepSort()) {\n return;\n }\n\n if (!meta.attributes.id) {\n return;\n }\n\n const idColumnName = helpers.toColumnName(meta, 'id');\n const aliasedId = this.aliasColumn(idColumnName);\n const lastOrder = state.orderBy[state.orderBy.length - 1];\n\n if (lastOrder && lastOrder.column === aliasedId) {\n return;\n }\n\n state.orderBy = [...state.orderBy, { column: aliasedId, order: 'asc' }];\n },\n\n shouldUseDistinct() {\n return state.joins.length > 0 && _.isEmpty(state.groupBy);\n },\n\n shouldUseDeepSort() {\n return (\n state.orderBy\n .filter((ob: any) => 'column' in ob && ob.column.indexOf('.') >= 0)\n .filter((ob: any) => {\n const col = ob.column.split('.');\n\n for (let i = 0; i < col.length - 1; i += 1) {\n const el = col[i];\n\n // order by \"rel\".\"xxx\"\n const isRelationAttribute = meta.attributes[el]?.type === 'relation';\n\n // order by \"t2\".\"xxx\"\n const isAliasedRelation = Object.values(state.joins)\n .map((join) => join.alias)\n .includes(el);\n\n if (isRelationAttribute || isAliasedRelation) {\n return true;\n }\n }\n\n return false;\n }).length > 0\n );\n },\n\n processSelect() {\n state.select = state.select.map((field) => {\n if (isKnexQuery(field)) {\n return field;\n }\n\n return helpers.toColumnName(meta, field);\n });\n\n if (this.shouldUseDistinct()) {\n const joinsOrderByColumns = state.joins.flatMap((join) => {\n return Object.keys(join.orderBy ?? {}).map((key) => this.aliasColumn(key, join.alias));\n });\n // Only include column-based orderBy entries here (raw expressions are handled below)\n const orderByColumns = state.orderBy\n .filter((ob: any) => 'column' in ob)\n .map((ob: any) => ob.column);\n\n state.select = [...new Set([...joinsOrderByColumns, ...orderByColumns, ...state.select])];\n\n // PostgreSQL requires every ORDER BY expression to appear in the SELECT list when\n // SELECT DISTINCT is used. Raw expressions (e.g. the `status` CASE ranking) are not\n // plain columns, so add them explicitly — using the same builder/alias as the ORDER BY\n // so the rendered SQL matches and PostgreSQL accepts the query. The deep-sort path\n // dedupes via row numbering instead of DISTINCT, so it strips these out later.\n const rawOrderByExpressions = state.orderBy\n .filter((ob: any) => 'rawExpression' in ob)\n .map((ob: any) =>\n helpers.buildStatusSortExpression(db, tableName, this.alias, ob.isI18n)\n );\n\n state.select = [...state.select, ...rawOrderByExpressions];\n }\n },\n\n getKnexQuery() {\n if (!state.type) {\n this.select('*');\n }\n\n const aliasedTableName = this.mustUseAlias() ? `${tableName} as ${this.alias}` : tableName;\n\n const qb = db.getConnection(aliasedTableName);\n\n // The state should always be processed before calling shouldUseSubQuery as it\n // relies on the presence or absence of joins to determine the need of a subquery\n this.processState();\n\n if (this.shouldUseSubQuery()) {\n return this.runSubQuery();\n }\n\n switch (state.type) {\n case 'select': {\n qb.select(state.select.map((column) => this.aliasColumn(column)));\n\n if (this.shouldUseDistinct()) {\n qb.distinct();\n }\n\n break;\n }\n case 'count': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.count));\n\n if (this.shouldUseDistinct()) {\n qb.countDistinct({ count: dbColumnName });\n } else {\n qb.count({ count: dbColumnName });\n }\n break;\n }\n case 'max': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.max));\n qb.max({ max: dbColumnName });\n break;\n }\n case 'min': {\n const dbColumnName = this.aliasColumn(helpers.toColumnName(meta, state.min));\n qb.min({ min: dbColumnName });\n break;\n }\n case 'insert': {\n qb.insert(state.data);\n\n if (db.dialect.useReturning() && _.has(meta.attributes, 'id')) {\n qb.returning('id');\n }\n\n break;\n }\n case 'update': {\n if (state.data) {\n qb.update(state.data);\n }\n break;\n }\n case 'delete': {\n qb.delete();\n\n break;\n }\n case 'truncate': {\n qb.truncate();\n break;\n }\n default: {\n throw new Error('Unknown query type');\n }\n }\n\n if (state.transaction) {\n qb.transacting(state.transaction);\n }\n\n if (state.forUpdate) {\n qb.forUpdate();\n }\n\n if (!_.isEmpty(state.increments)) {\n state.increments.forEach((incr) => qb.increment(incr.column, incr.amount));\n }\n\n if (!_.isEmpty(state.decrements)) {\n state.decrements.forEach((decr) => qb.decrement(decr.column, decr.amount));\n }\n\n if (state.onConflict) {\n if (state.merge) {\n qb.onConflict(state.onConflict).merge(state.merge);\n } else if (state.ignore) {\n qb.onConflict(state.onConflict).ignore();\n }\n }\n\n if (state.limit) {\n qb.limit(state.limit);\n }\n\n if (state.offset) {\n qb.offset(state.offset);\n }\n\n if (state.first) {\n qb.first();\n }\n\n if (state.groupBy.length > 0) {\n qb.groupBy(state.groupBy);\n }\n\n // if there are joins and it is a delete or update use a sub query\n if (state.where) {\n helpers.applyWhere(qb, state.where);\n }\n\n // if there are joins and it is a delete or update use a sub query\n if (state.search) {\n qb.where((subQb) => {\n helpers.applySearch(subQb, state.search, { qb: this, db, uid });\n });\n }\n\n /**\n * Join `orderBy` (e.g. join-table ordinal for relations) must precede root `state.orderBy`\n * when both are emitted. Otherwise pagination stability (`ensurePaginationOrderStability`)\n * appending `id ASC` on the root alias wins over distinct target ids and breaks relation ordering.\n */\n if (state.joins.length > 0) {\n helpers.applyJoins(qb, state.joins);\n }\n\n if (state.orderBy.length > 0) {\n // `processState` normalizes entries to OrderByValue[] (string/object input from `.init()`).\n const knexOrderBy: helpers.KnexOrderByColumnDescriptor[] = (\n state.orderBy as OrderByValue[]\n ).map((entry) => helpers.toKnexOrderByDescriptor(db, tableName, this.alias, entry));\n // Knex compound `orderBy` typings list `column: string | QueryBuilder` — `Knex.Raw` works at runtime\n // (e.g. `status` sort). See helpers.toKnexOrderByDescriptor / buildStatusSortExpression.\n qb.orderBy(knexOrderBy as never);\n }\n\n if (this.shouldUseDeepSort()) {\n return helpers.wrapWithDeepSort(qb, { qb: this, db, uid });\n }\n\n return qb;\n },\n\n async execute({ mapResults = true } = {}) {\n try {\n const qb = this.getKnexQuery();\n\n const transaction = transactionCtx.get();\n if (transaction) {\n qb.transacting(transaction);\n }\n\n const rows = await qb;\n\n if (state.populate && rows != null) {\n await helpers.applyPopulate(_.castArray(rows), state.populate, {\n qb: this,\n uid,\n db,\n });\n }\n\n let results = rows;\n if (mapResults && state.type === 'select') {\n results = helpers.fromRow(meta, rows);\n }\n\n return results;\n } catch (error) {\n if (error instanceof Error) {\n db.dialect.transformErrors(error);\n } else {\n throw error;\n }\n }\n },\n\n stream({ mapResults = true } = {}) {\n if (state.type === 'select') {\n return new helpers.ReadableQuery({ qb: this, db, uid, mapResults });\n }\n\n throw new DatabaseError(\n `query-builder.stream() has been called with an unsupported query type: \"${state.type}\"`\n );\n },\n };\n};\n\nexport default createQueryBuilder;\n"],"names":["createQueryBuilder","uid","db","initialState","meta","metadata","get","tableName","state","_","defaults","type","select","count","max","min","first","data","where","joins","populate","limit","offset","transaction","forUpdate","onConflict","merge","ignore","orderBy","groupBy","increments","decrements","aliasCounter","filters","search","processed","getAlias","alias","clone","args","Set","castArray","addSelect","insert","delete","ref","name","connection","helpers","update","increment","column","amount","push","decrement","isPlainObject","Error","query","transacting","init","params","_q","searchQuery","join","targetField","model","attribute","attributes","qb","refAlias","attributeName","mustUseAlias","includes","aliasColumn","key","indexOf","raw","bind","shouldUseSubQuery","length","runSubQuery","originalType","sub","subQB","getKnexQuery","nestedSubQuery","getConnection","from","as","whereIn","processState","ensurePaginationOrderStability","processSelect","shouldUseDeepSort","id","idColumnName","aliasedId","lastOrder","order","shouldUseDistinct","isEmpty","filter","ob","col","split","i","el","isRelationAttribute","isAliasedRelation","Object","values","map","field","isKnexQuery","joinsOrderByColumns","flatMap","keys","orderByColumns","rawOrderByExpressions","isI18n","aliasedTableName","distinct","dbColumnName","countDistinct","dialect","useReturning","has","returning","truncate","forEach","incr","decr","subQb","knexOrderBy","entry","execute","mapResults","transactionCtx","rows","results","error","transformErrors","stream","DatabaseError"],"mappings":"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"}