@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.
- package/AbstractSqlDriver.d.ts +1 -1
- package/AbstractSqlDriver.js +10 -3
- package/package.json +2 -2
package/AbstractSqlDriver.d.ts
CHANGED
|
@@ -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;
|
package/AbstractSqlDriver.js
CHANGED
|
@@ -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.
|
|
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.
|
|
69
|
+
"@mikro-orm/core": "6.0.3-dev.3"
|
|
70
70
|
}
|
|
71
71
|
}
|