@mikro-orm/knex 6.0.3-dev.2 → 6.0.3-dev.3

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.
@@ -64,7 +64,7 @@ export declare abstract class AbstractSqlDriver<Connection extends AbstractSqlCo
64
64
  protected processManyToMany<T extends object>(meta: EntityMetadata<T> | undefined, pks: Primary<T>[], collections: EntityData<T>, clear: boolean, options?: DriverMethodOptions): Promise<void>;
65
65
  lockPessimistic<T extends object>(entity: T, options: LockOptions): Promise<void>;
66
66
  protected buildOrderBy<T extends object>(qb: QueryBuilder<T>, meta: EntityMetadata<T>, populate: PopulateOptions<T>[], options: Pick<FindOptions<any>, 'strategy' | 'orderBy' | 'populateOrderBy'>): QueryOrderMap<T>[];
67
- protected buildPopulateOrderBy<T extends object>(qb: QueryBuilder<T>, meta: EntityMetadata<T>, populateOrderBy: QueryOrderMap<T>[], parentPath: string, parentAlias?: string): QueryOrderMap<T>[];
67
+ protected buildPopulateOrderBy<T extends object>(qb: QueryBuilder<T>, meta: EntityMetadata<T>, populateOrderBy: QueryOrderMap<T>[], parentPath: string, explicit: boolean, parentAlias?: string): QueryOrderMap<T>[];
68
68
  protected buildJoinedPropsOrderBy<T extends object>(qb: QueryBuilder<T>, meta: EntityMetadata<T>, populate: PopulateOptions<T>[], options?: Pick<FindOptions<any>, 'strategy' | 'orderBy' | 'populateOrderBy'>, parentPath?: string): QueryOrderMap<T>[];
69
69
  protected normalizeFields<T extends object>(fields: Field<T>[], prefix?: string): string[];
70
70
  protected processField<T extends object>(meta: EntityMetadata<T>, prop: EntityProperty<T> | undefined, field: string, ret: Field<T>[], populate: PopulateOptions<T>[], joinedProps: PopulateOptions<T>[], qb: QueryBuilder<T>): void;
@@ -983,15 +983,22 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
983
983
  // as `options.populateWhere` will be always recomputed to respect filters
984
984
  const populateWhereAll = options._populateWhere !== 'infer' && !core_1.Utils.isEmpty(options._populateWhere);
985
985
  const path = (populateWhereAll ? '[populate]' : '') + meta.className;
986
- const populateOrderBy = this.buildPopulateOrderBy(qb, meta, core_1.Utils.asArray(options.populateOrderBy ?? options.orderBy), path);
986
+ const populateOrderBy = this.buildPopulateOrderBy(qb, meta, core_1.Utils.asArray(options.populateOrderBy ?? options.orderBy), path, !!options.populateOrderBy);
987
987
  const joinedPropsOrderBy = this.buildJoinedPropsOrderBy(qb, meta, joinedProps, options, path);
988
988
  return [...core_1.Utils.asArray(options.orderBy), ...populateOrderBy, ...joinedPropsOrderBy];
989
989
  }
990
- buildPopulateOrderBy(qb, meta, populateOrderBy, parentPath, parentAlias = qb.alias) {
990
+ buildPopulateOrderBy(qb, meta, populateOrderBy, parentPath, explicit, parentAlias = qb.alias) {
991
991
  const orderBy = [];
992
992
  for (let i = 0; i < populateOrderBy.length; i++) {
993
993
  const orderHint = populateOrderBy[i];
994
994
  for (const propName of core_1.Utils.keys(orderHint)) {
995
+ const raw = core_1.RawQueryFragment.getKnownFragment(propName, explicit);
996
+ if (raw) {
997
+ const sql = raw.sql.replace(new RegExp(core_1.ALIAS_REPLACEMENT_RE, 'g'), parentAlias);
998
+ const raw2 = new core_1.RawQueryFragment(sql, raw.params);
999
+ orderBy.push({ [raw2]: orderHint[propName] });
1000
+ continue;
1001
+ }
995
1002
  const prop = meta.properties[propName];
996
1003
  if (!prop) {
997
1004
  throw new Error(`Trying to order by not existing property ${meta.className}.${propName}`);
@@ -1008,7 +1015,7 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
1008
1015
  continue;
1009
1016
  }
1010
1017
  if (![core_1.ReferenceKind.SCALAR, core_1.ReferenceKind.EMBEDDED].includes(prop.kind) && typeof childOrder === 'object') {
1011
- const children = this.buildPopulateOrderBy(qb, meta2, core_1.Utils.asArray(childOrder), path, propAlias);
1018
+ const children = this.buildPopulateOrderBy(qb, meta2, core_1.Utils.asArray(childOrder), path, explicit, propAlias);
1012
1019
  orderBy.push(...children);
1013
1020
  continue;
1014
1021
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/knex",
3
- "version": "6.0.3-dev.2",
3
+ "version": "6.0.3-dev.3",
4
4
  "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -66,6 +66,6 @@
66
66
  "@mikro-orm/core": "^6.0.2"
67
67
  },
68
68
  "peerDependencies": {
69
- "@mikro-orm/core": "6.0.3-dev.2"
69
+ "@mikro-orm/core": "6.0.3-dev.3"
70
70
  }
71
71
  }