@strapi/database 5.49.0 → 5.50.1

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 (86) hide show
  1. package/dist/connection.d.ts.map +1 -1
  2. package/dist/dialects/index.d.ts.map +1 -1
  3. package/dist/dialects/postgresql/index.d.ts +0 -1
  4. package/dist/dialects/postgresql/index.d.ts.map +1 -1
  5. package/dist/dialects/sqlite/index.d.ts +0 -1
  6. package/dist/dialects/sqlite/index.d.ts.map +1 -1
  7. package/dist/entity-manager/entity-repository.d.ts.map +1 -1
  8. package/dist/entity-manager/index.d.ts.map +1 -1
  9. package/dist/entity-manager/index.js +122 -3
  10. package/dist/entity-manager/index.js.map +1 -1
  11. package/dist/entity-manager/index.mjs +123 -4
  12. package/dist/entity-manager/index.mjs.map +1 -1
  13. package/dist/entity-manager/morph-relations.d.ts +0 -1
  14. package/dist/entity-manager/morph-relations.d.ts.map +1 -1
  15. package/dist/entity-manager/regular-relations.d.ts +1 -7
  16. package/dist/entity-manager/regular-relations.d.ts.map +1 -1
  17. package/dist/entity-manager/regular-relations.js +1 -1
  18. package/dist/entity-manager/regular-relations.js.map +1 -1
  19. package/dist/entity-manager/regular-relations.mjs +1 -1
  20. package/dist/entity-manager/regular-relations.mjs.map +1 -1
  21. package/dist/entity-manager/relations-orderer.d.ts +3 -3
  22. package/dist/entity-manager/relations-orderer.d.ts.map +1 -1
  23. package/dist/entity-manager/relations-orderer.js +4 -4
  24. package/dist/entity-manager/relations-orderer.js.map +1 -1
  25. package/dist/entity-manager/relations-orderer.mjs +4 -4
  26. package/dist/entity-manager/relations-orderer.mjs.map +1 -1
  27. package/dist/fields/index.d.ts.map +1 -1
  28. package/dist/fields/shared/parsers.d.ts.map +1 -1
  29. package/dist/index.d.ts +2 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/lifecycles/index.d.ts.map +1 -1
  34. package/dist/lifecycles/subscribers/index.d.ts +1 -1
  35. package/dist/lifecycles/subscribers/index.d.ts.map +1 -1
  36. package/dist/metadata/index.d.ts.map +1 -1
  37. package/dist/metadata/metadata.d.ts +1 -1
  38. package/dist/metadata/metadata.d.ts.map +1 -1
  39. package/dist/metadata/relations.d.ts +2 -2
  40. package/dist/metadata/relations.d.ts.map +1 -1
  41. package/dist/migrations/common.d.ts.map +1 -1
  42. package/dist/migrations/index.d.ts.map +1 -1
  43. package/dist/migrations/internal.d.ts.map +1 -1
  44. package/dist/migrations/logger.d.ts.map +1 -1
  45. package/dist/migrations/storage.d.ts.map +1 -1
  46. package/dist/migrations/users.d.ts.map +1 -1
  47. package/dist/query/helpers/join.d.ts.map +1 -1
  48. package/dist/query/helpers/order-by.d.ts.map +1 -1
  49. package/dist/query/helpers/order-by.js +1 -1
  50. package/dist/query/helpers/order-by.js.map +1 -1
  51. package/dist/query/helpers/order-by.mjs +1 -1
  52. package/dist/query/helpers/order-by.mjs.map +1 -1
  53. package/dist/query/helpers/populate/apply.d.ts.map +1 -1
  54. package/dist/query/helpers/populate/apply.js +3 -1
  55. package/dist/query/helpers/populate/apply.js.map +1 -1
  56. package/dist/query/helpers/populate/apply.mjs +3 -1
  57. package/dist/query/helpers/populate/apply.mjs.map +1 -1
  58. package/dist/query/helpers/populate/process.d.ts.map +1 -1
  59. package/dist/query/helpers/search.d.ts.map +1 -1
  60. package/dist/query/helpers/streams/readable.d.ts +0 -1
  61. package/dist/query/helpers/streams/readable.d.ts.map +1 -1
  62. package/dist/query/helpers/transform.d.ts.map +1 -1
  63. package/dist/query/helpers/where.d.ts.map +1 -1
  64. package/dist/query/query-builder.d.ts.map +1 -1
  65. package/dist/query/query-builder.js +3 -3
  66. package/dist/query/query-builder.js.map +1 -1
  67. package/dist/query/query-builder.mjs +3 -3
  68. package/dist/query/query-builder.mjs.map +1 -1
  69. package/dist/repairs/index.d.ts.map +1 -1
  70. package/dist/repairs/operations/process-unidirectional-join-tables.d.ts.map +1 -1
  71. package/dist/repairs/operations/remove-orphan-morph-types.d.ts.map +1 -1
  72. package/dist/schema/builder.d.ts +1 -1
  73. package/dist/schema/builder.d.ts.map +1 -1
  74. package/dist/schema/diff.d.ts.map +1 -1
  75. package/dist/schema/index.d.ts.map +1 -1
  76. package/dist/schema/schema.d.ts.map +1 -1
  77. package/dist/schema/storage.d.ts.map +1 -1
  78. package/dist/transaction-context.d.ts.map +1 -1
  79. package/dist/utils/async-curry.d.ts.map +1 -1
  80. package/dist/utils/identifiers/index.d.ts.map +1 -1
  81. package/dist/utils/knex.d.ts.map +1 -1
  82. package/dist/utils/types.d.ts +1 -1
  83. package/dist/utils/types.d.ts.map +1 -1
  84. package/dist/validations/relations/bidirectional.d.ts.map +1 -1
  85. package/dist/validations/relations/index.d.ts.map +1 -1
  86. package/package.json +8 -4
@@ -165,12 +165,12 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
165
165
  return this;
166
166
  },
167
167
  init (params = {}) {
168
- const { _q, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;
168
+ const { _q: searchQuery, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;
169
169
  if (!___default.default.isNil(where)) {
170
170
  this.where(where);
171
171
  }
172
- if (!___default.default.isNil(_q)) {
173
- this.search(_q);
172
+ if (!___default.default.isNil(searchQuery)) {
173
+ this.search(searchQuery);
174
174
  }
175
175
  if (!___default.default.isNil(select)) {
176
176
  this.select(select);
@@ -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' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: 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 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 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 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 { _q, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;\n\n if (!_.isNil(where)) {\n this.where(where);\n }\n\n if (!_.isNil(_q)) {\n this.search(_q);\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 this.select('id');\n const subQB = this.getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const connection = db.getConnection(tableName);\n\n return (connection[originalType] as Knex)().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 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 (skip raw expressions like status)\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 },\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 '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","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","isNil","join","targetField","model","attribute","attributes","qb","refAlias","attributeName","mustUseAlias","includes","aliasColumn","key","indexOf","raw","bind","shouldUseSubQuery","length","runSubQuery","originalType","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","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/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' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: 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 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 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 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 this.select('id');\n const subQB = this.getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const connection = db.getConnection(tableName);\n\n return (connection[originalType] as Knex)().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 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 (skip raw expressions like status)\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 },\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 '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","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","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","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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"}
@@ -159,12 +159,12 @@ const createQueryBuilder = (uid, db, initialState = {})=>{
159
159
  return this;
160
160
  },
161
161
  init (params = {}) {
162
- const { _q, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;
162
+ const { _q: searchQuery, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;
163
163
  if (!_.isNil(where)) {
164
164
  this.where(where);
165
165
  }
166
- if (!_.isNil(_q)) {
167
- this.search(_q);
166
+ if (!_.isNil(searchQuery)) {
167
+ this.search(searchQuery);
168
168
  }
169
169
  if (!_.isNil(select)) {
170
170
  this.select(select);
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.mjs","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' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: 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 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 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 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 { _q, filters, where, select, limit, offset, orderBy, groupBy, populate } = params;\n\n if (!_.isNil(where)) {\n this.where(where);\n }\n\n if (!_.isNil(_q)) {\n this.search(_q);\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 this.select('id');\n const subQB = this.getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const connection = db.getConnection(tableName);\n\n return (connection[originalType] as Knex)().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 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 (skip raw expressions like status)\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 },\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 '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","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","isNil","join","targetField","model","attribute","attributes","qb","refAlias","attributeName","mustUseAlias","includes","aliasColumn","key","indexOf","raw","bind","shouldUseSubQuery","length","runSubQuery","originalType","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","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.mjs","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' | 'truncate';\n select: Array<string | Knex.Raw>;\n count: string | null;\n max: 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 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 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 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 this.select('id');\n const subQB = this.getKnexQuery();\n\n const nestedSubQuery = db.getConnection().select('id').from(subQB.as('subQuery'));\n const connection = db.getConnection(tableName);\n\n return (connection[originalType] as Knex)().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 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 (skip raw expressions like status)\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 },\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 '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","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","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","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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repairs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAKnC,eAAO,MAAM,mBAAmB,OAAQ,QAAQ;;;CAK/C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repairs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAKnC,eAAO,MAAM,mBAAmB,GAAI,IAAI,QAAQ;;;CAK/C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"process-unidirectional-join-tables.d.ts","sourceRoot":"","sources":["../../../src/repairs/operations/process-unidirectional-join-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B,OACtC,QAAQ,sBACQ,CAClB,EAAE,EAAE,QAAQ,EACZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,GAAG,KACb,QAAQ,MAAM,CAAC,KACnB,QAAQ,MAAM,CA4BhB,CAAC"}
1
+ {"version":3,"file":"process-unidirectional-join-tables.d.ts","sourceRoot":"","sources":["../../../src/repairs/operations/process-unidirectional-join-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B,GAC1C,IAAI,QAAQ,EACZ,oBAAoB,CAClB,EAAE,EAAE,QAAQ,EACZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,GAAG,KACb,OAAO,CAAC,MAAM,CAAC,KACnB,OAAO,CAAC,MAAM,CA4BhB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-orphan-morph-types.d.ts","sourceRoot":"","sources":["../../../src/repairs/operations/remove-orphan-morph-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,OAC5B,QAAQ,aACD,4BAA4B,kBA2CxC,CAAC"}
1
+ {"version":3,"file":"remove-orphan-morph-types.d.ts","sourceRoot":"","sources":["../../../src/repairs/operations/remove-orphan-morph-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,QAAQ,EACZ,WAAW,4BAA4B,kBA2CxC,CAAC"}
@@ -27,7 +27,7 @@ declare const _default: (db: Database) => {
27
27
  * Applies a schema diff update in the DB
28
28
  * @param {*} schemaDiff
29
29
  */
30
- updateSchema(schemaDiff: SchemaDiff['diff']): Promise<void>;
30
+ updateSchema(schemaDiff: SchemaDiff["diff"]): Promise<void>;
31
31
  };
32
32
  export default _default;
33
33
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/schema/builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAwC,MAAM,SAAS,CAAC;6BAI3E,QAAQ;IAIxB;;;OAGG;0BACmB,KAAK,WAAW;IAItC;;OAEG;yBACwB,MAAM;IAMjC;;;;OAIG;yBACwB,KAAK,EAAE,OAAO,KAAK,WAAW;IAczD;;OAEG;uBACsB,MAAM;;;IAc/B;;;OAGG;6BAE4B,UAAU,CAAC,MAAM,CAAC;;AA9DrD,wBA8HE"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/schema/builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAwC,MAAM,SAAS,CAAC;yBAI/E,IAAI,QAAQ;IAIxB;;;OAGG;0BACmB,IAAI,CAAC,WAAW;IAItC;;OAEG;yBACwB,MAAM;IAMjC;;;;OAIG;yBACwB,KAAK,EAAE,OAAO,IAAI,CAAC,WAAW;IAczD;;OAEG;uBACsB,MAAM;;;IAc/B;;;OAGG;6BAE4B,UAAU,CAAC,MAAM,CAAC;;AA9DrD,wBA8HE"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/schema/diff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAWX,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAanC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;6BA8CkB,QAAQ;0BAoTgB,iBAAiB,KAAG,QAAQ,UAAU,CAAC;;AApTnF,wBA0ZE"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/schema/diff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAWX,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAanC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;yBA8Cc,IAAI,QAAQ;0BAoTgB,iBAAiB,KAAG,OAAO,CAAC,UAAU,CAAC;;AApTnF,wBA0ZE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAC5C,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEnC,mBAAmB,SAAS,CAAC;AAI7B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAChD,UAAU,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAChD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACtD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,eAAO,MAAM,oBAAoB,OAAQ,QAAQ,KAAG,cA0GnD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAC5C,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEnC,mBAAmB,SAAS,CAAC;AAI7B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAChD,UAAU,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAChD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACtD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,eAAO,MAAM,oBAAoB,GAAI,IAAI,QAAQ,KAAG,cA0GnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAU,MAAM,EAAS,MAAM,SAAS,CAAC;AA0NrD,eAAO,MAAM,gBAAgB,aAAc,QAAQ,KAAG,MAUrD,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAU,MAAM,EAAS,MAAM,SAAS,CAAC;AA0NrD,eAAO,MAAM,gBAAgB,GAAI,UAAU,QAAQ,KAAG,MAUrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/schema/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;6BAIlB,QAAQ;YAmBV,QAAQ;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;uBAmCU,MAAM;gBASP,MAAM;;;AApE5B,wBA4FE"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/schema/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;yBAItB,IAAI,QAAQ;YAmBV,OAAO,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;uBAmCU,MAAM;gBASP,MAAM;;;AApE5B,wBA4FE"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../src/transaction-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAc5B,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC;CAC7B;AACD,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,iBAAiB,EAAE,QAAQ,EAAE,CAAC;CAC/B;AAID,QAAA,MAAM,cAAc;yCACyB,KAAK,WAAW,MAAM,SAAS;;gBAkBxD,KAAK,WAAW;kBA0Bd,KAAK,WAAW;iBA0BvB,QAAQ;mBAON,QAAQ;CAMxB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../src/transaction-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAc5B,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC;CAC7B;AACD,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,iBAAiB,EAAE,QAAQ,EAAE,CAAC;CAC/B;AAID,QAAA,MAAM,cAAc;QACR,SAAS,SAAS,QAAQ,OAAO,IAAI,CAAC,WAAW,MAAM,SAAS;;gBAkBxD,IAAI,CAAC,WAAW;kBA0Bd,IAAI,CAAC,WAAW;iBA0BvB,QAAQ;mBAON,QAAQ;CAMxB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"async-curry.d.ts","sourceRoot":"","sources":["../../src/utils/async-curry.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,UAAU,8BACjB,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,KAChC,qBAAqB,IAAI,EAAE,CAAC,CAS9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC/F,IAAI,SAAS,EAAE,GACb,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1B,CAAC,GAAG,EAAE,KAAK,KAAK,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,GAC/C,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"async-curry.d.ts","sourceRoot":"","sources":["../../src/utils/async-curry.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC,EAC9C,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAChC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAS9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC/F,IAAI,SAAS,EAAE,GACb,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1B,CAAC,GAAG,EAAE,KAAK,KAAK,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,GAC/C,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/identifiers/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,SAAS,EAEV,MAAM,SAAS,CAAC;AAIjB,qBAAa,WAAW;;IACtB,SAAS,OAAiB;IAE1B,YAAY,UAAoB;IAEhC,YAAY,UAAoB;IAEhC,WAAW,IAAc;IAEzB,cAAc,KAAe;IAE7B,oBAAoB,MAAgB;IAEpC,gBAAgB,IAAc;gBAmBlB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;IAI1C,IAAI,cAAc;;;;;;;;;;;;MAEjB;IAED,IAAI,OAAO,uBAEV;IAED,aAAa,SAAU,MAAM,KAAG,MAAM,GAAG,SAAS,CAKhD;IAGF;;;;;SAKK;IACL,OAAO,UAAW,SAAS,YAAY,WAAW,YAyBhD;IAEF;;OAEG;IAEH,YAAY,SAAU,MAAM,YAAY,WAAW,YAEjD;IAEF,gBAAgB,mBAAoB,MAAM,iBAAiB,MAAM,YAAY,WAAW,YAKtF;IAEF,iBAAiB,mBAAoB,MAAM,iBAAiB,MAAM,YAAY,WAAW,YAKvF;IAEF;;OAEG;IAEH,aAAa,kBAAmB,MAAM,YAAY,WAAW,YAE3D;IAEF,4BAA4B,kBAAmB,MAAM,YAAY,WAAW,YAE1E;IAEF,mCAAmC,kBAAmB,MAAM,YAAY,WAAW,YAEjF;IAEF,kBAAkB,iBAAkB,MAAM,YAAY,WAAW,YAE/D;IAEF,yBAAyB,iBAAkB,MAAM,YAAY,WAAW,YAMtE;IAEF;;OAEG;IACH,6BAA6B,iBAAkB,MAAM,YAAY,WAAW,YAE1E;IAEF,6BAA6B,kBAAmB,MAAM,YAAY,WAAW,YAE3E;IAEF,sBAAsB,kBAAmB,MAAM,YAAY,WAAW,YAEpE;IAEF;;;;;;;;;;OAUG;IAGH,YAAY,UAAW,SAAS,YAAY,WAAW,YAErD;IAEF,cAAc,UAAW,SAAS,YAAY,WAAW,YAEvD;IAEF,kBAAkB,UAAW,SAAS,YAAY,WAAW,YAE3D;IAEF,mBAAmB,UAAW,SAAS,YAAY,WAAW,YAE5D;IAGF,qBAAqB,UAAW,SAAS,YAAY,WAAW,YAE9D;IAEF,mBAAmB,UAAW,SAAS,YAAY,WAAW,YAE5D;IAEF,0BAA0B,UAAW,SAAS,YAAY,WAAW,YAEnE;IAEF,oBAAoB,UAAW,SAAS,YAAY,WAAW,YAE7D;IAEF,iBAAiB,UAAW,SAAS,YAAY,WAAW,YAE1D;IAEF;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,SAAU,MAAM,OAAO,MAAM,YAwB3C;IAEF;;;;;;;OAOG;IACH,iBAAiB,eAAgB,SAAS,EAAE,KAAG,MAAM,CAqJnD;IAIF,OAAO,sBAA6B;IAEpC,kBAAkB,cAAe,MAAM,YAErC;IAEF,kBAAkB,cAAe,MAAM,YAAY,MAAM,UAUvD;IAEF,YAAY,cAAe,MAAM,YAE/B;CACH;AAID,eAAO,MAAM,WAAW,aAAwD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/identifiers/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,SAAS,EAEV,MAAM,SAAS,CAAC;AAIjB,qBAAa,WAAW;;IACtB,SAAS,EAAG,IAAI,CAAU;IAE1B,YAAY,EAAG,OAAO,CAAU;IAEhC,YAAY,EAAG,OAAO,CAAU;IAEhC,WAAW,EAAG,CAAC,CAAU;IAEzB,cAAc,EAAG,EAAE,CAAU;IAE7B,oBAAoB,EAAG,GAAG,CAAU;IAEpC,gBAAgB,EAAG,CAAC,CAAU;gBAmBlB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;IAI1C,IAAI,cAAc;;;;;;;;;;;;MAEjB;IAED,IAAI,OAAO,uBAEV;IAED,aAAa,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAAS,CAKhD;IAGF;;;;;SAKK;IACL,OAAO,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAyBhD;IAEF;;OAEG;IAEH,YAAY,GAAI,MAAM,MAAM,EAAE,UAAU,WAAW,YAEjD;IAEF,gBAAgB,GAAI,gBAAgB,MAAM,EAAE,eAAe,MAAM,EAAE,UAAU,WAAW,YAKtF;IAEF,iBAAiB,GAAI,gBAAgB,MAAM,EAAE,eAAe,MAAM,EAAE,UAAU,WAAW,YAKvF;IAEF;;OAEG;IAEH,aAAa,GAAI,eAAe,MAAM,EAAE,UAAU,WAAW,YAE3D;IAEF,4BAA4B,GAAI,eAAe,MAAM,EAAE,UAAU,WAAW,YAE1E;IAEF,mCAAmC,GAAI,eAAe,MAAM,EAAE,UAAU,WAAW,YAEjF;IAEF,kBAAkB,GAAI,cAAc,MAAM,EAAE,UAAU,WAAW,YAE/D;IAEF,yBAAyB,GAAI,cAAc,MAAM,EAAE,UAAU,WAAW,YAMtE;IAEF;;OAEG;IACH,6BAA6B,GAAI,cAAc,MAAM,EAAE,UAAU,WAAW,YAE1E;IAEF,6BAA6B,GAAI,eAAe,MAAM,EAAE,UAAU,WAAW,YAE3E;IAEF,sBAAsB,GAAI,eAAe,MAAM,EAAE,UAAU,WAAW,YAEpE;IAEF;;;;;;;;;;OAUG;IAGH,YAAY,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAErD;IAEF,cAAc,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAEvD;IAEF,kBAAkB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE3D;IAEF,mBAAmB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE5D;IAGF,qBAAqB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE9D;IAEF,mBAAmB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE5D;IAEF,0BAA0B,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAEnE;IAEF,oBAAoB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE7D;IAEF,iBAAiB,GAAI,OAAO,SAAS,EAAE,UAAU,WAAW,YAE1D;IAEF;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,YAwB3C;IAEF;;;;;;;OAOG;IACH,iBAAiB,GAAI,YAAY,SAAS,EAAE,KAAG,MAAM,CAqJnD;IAIF,OAAO,sBAA6B;IAEpC,kBAAkB,GAAI,WAAW,MAAM,YAErC;IAEF,kBAAkB,GAAI,WAAW,MAAM,EAAE,UAAU,MAAM,UAUvD;IAEF,YAAY,GAAI,WAAW,MAAM,YAE/B;CACH;AAID,eAAO,MAAM,WAAW,aAAwD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../src/utils/knex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEnC;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAEjF;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,OAAQ,QAAQ,aAAa,MAAM,KAAG,MAG3D,CAAC"}
1
+ {"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../src/utils/knex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEnC;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAEjF;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,QAAQ,EAAE,WAAW,MAAM,KAAG,MAG3D,CAAC"}
@@ -2,7 +2,7 @@ import type { Attribute, ScalarAttribute, RelationalAttribute } from '../types';
2
2
  export declare const isString: (type: string) => boolean;
3
3
  export declare const isNumber: (type: string) => boolean;
4
4
  export declare const isScalar: (type: string) => boolean;
5
- export declare const isRelation: (type: string) => boolean;
5
+ export declare const isRelation: (type: string) => type is "relation";
6
6
  export declare const isScalarAttribute: (attribute: Attribute) => attribute is ScalarAttribute;
7
7
  export declare const isRelationalAttribute: (attribute: Attribute) => attribute is RelationalAttribute;
8
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA2BhF,eAAO,MAAM,QAAQ,SAAU,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,QAAQ,SAAU,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,QAAQ,SAAU,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,UAAU,SAAU,MAAM,YAAwB,CAAC;AAChE,eAAO,MAAM,iBAAiB,cAAe,SAAS,iCAC5B,CAAC;AAC3B,eAAO,MAAM,qBAAqB,cAAe,SAAS,qCAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA2BhF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,YAAgC,CAAC;AACtE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,uBAAwB,CAAC;AAChE,eAAO,MAAM,iBAAiB,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,eAC5C,CAAC;AAC3B,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,mBAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bidirectional.d.ts","sourceRoot":"","sources":["../../../src/validations/relations/bidirectional.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA+CtC;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,OAAc,QAAQ,kBAqChE,CAAC"}
1
+ {"version":3,"file":"bidirectional.d.ts","sourceRoot":"","sources":["../../../src/validations/relations/bidirectional.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA+CtC;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GAAU,IAAI,QAAQ,kBAqChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validations/relations/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,OAAc,QAAQ,kBAEnD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validations/relations/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,IAAI,QAAQ,kBAEnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/database",
3
- "version": "5.49.0",
3
+ "version": "5.50.1",
4
4
  "description": "Strapi's database layer",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -39,11 +39,13 @@
39
39
  "lint": "run -T tsc --noEmit && run -T eslint .",
40
40
  "test:unit": "run -T jest",
41
41
  "test:unit:watch": "run -T jest --watch",
42
+ "test:unit:vitest": "vitest run",
43
+ "test:unit:vitest:watch": "vitest --watch",
42
44
  "watch": "run -T rollup -c -w"
43
45
  },
44
46
  "dependencies": {
45
47
  "@paralleldrive/cuid2": "2.2.2",
46
- "@strapi/utils": "5.49.0",
48
+ "@strapi/utils": "5.50.1",
47
49
  "ajv": "8.20.0",
48
50
  "date-fns": "2.30.0",
49
51
  "debug": "4.3.4",
@@ -55,8 +57,10 @@
55
57
  },
56
58
  "devDependencies": {
57
59
  "@types/fs-extra": "11.0.4",
58
- "eslint-config-custom": "5.49.0",
59
- "tsconfig": "5.49.0"
60
+ "eslint-config-custom": "5.50.1",
61
+ "tsconfig": "5.50.1",
62
+ "vitest": "catalog:",
63
+ "vitest-config": "5.50.1"
60
64
  },
61
65
  "engines": {
62
66
  "node": ">=20.0.0 <=26.x.x",