@mikro-orm/knex 6.5.7-dev.9 → 6.5.7
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
CHANGED
|
@@ -75,7 +75,7 @@ export declare abstract class AbstractSqlDriver<Connection extends AbstractSqlCo
|
|
|
75
75
|
protected buildPopulateOrderBy<T extends object>(qb: QueryBuilder<T, any, any, any>, meta: EntityMetadata<T>, populateOrderBy: QueryOrderMap<T>[], parentPath: string, explicit: boolean, parentAlias?: string): QueryOrderMap<T>[];
|
|
76
76
|
protected buildJoinedPropsOrderBy<T extends object>(qb: QueryBuilder<T, any, any, any>, meta: EntityMetadata<T>, populate: PopulateOptions<T>[], options?: Pick<FindOptions<any>, 'strategy' | 'orderBy' | 'populateOrderBy'>, parentPath?: string): QueryOrderMap<T>[];
|
|
77
77
|
protected normalizeFields<T extends object>(fields: Field<T>[], prefix?: string): string[];
|
|
78
|
-
protected processField<T extends object>(meta: EntityMetadata<T>, prop: EntityProperty<T> | undefined, field: string, ret: Field<T>[]
|
|
78
|
+
protected processField<T extends object>(meta: EntityMetadata<T>, prop: EntityProperty<T> | undefined, field: string, ret: Field<T>[]): void;
|
|
79
79
|
protected isPopulated<T extends object>(meta: EntityMetadata<T>, prop: EntityProperty<T>, hint: PopulateOptions<T>, name?: string): boolean;
|
|
80
80
|
protected buildFields<T extends object>(meta: EntityMetadata<T>, populate: PopulateOptions<T>[], joinedProps: PopulateOptions<T>[], qb: QueryBuilder<T, any, any, any>, alias: string, options: Pick<FindOptions<T, any, any, any>, 'strategy' | 'fields' | 'exclude'>): Field<T>[];
|
|
81
81
|
}
|
package/AbstractSqlDriver.js
CHANGED
|
@@ -992,6 +992,11 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
|
|
|
992
992
|
* @internal
|
|
993
993
|
*/
|
|
994
994
|
mapPropToFieldNames(qb, prop, tableAlias) {
|
|
995
|
+
if (prop.kind === core_1.ReferenceKind.EMBEDDED && !prop.object) {
|
|
996
|
+
return Object.values(prop.embeddedProps).flatMap(childProp => {
|
|
997
|
+
return this.mapPropToFieldNames(qb, childProp, tableAlias);
|
|
998
|
+
});
|
|
999
|
+
}
|
|
995
1000
|
const aliased = this.platform.quoteIdentifier(tableAlias ? `${tableAlias}__${prop.fieldNames[0]}` : prop.fieldNames[0]);
|
|
996
1001
|
if (tableAlias && prop.customTypes?.some(type => type?.convertToJSValueSQL)) {
|
|
997
1002
|
return prop.fieldNames.map((col, idx) => {
|
|
@@ -1216,7 +1221,7 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
|
|
|
1216
1221
|
}
|
|
1217
1222
|
return ret;
|
|
1218
1223
|
}
|
|
1219
|
-
processField(meta, prop, field, ret
|
|
1224
|
+
processField(meta, prop, field, ret) {
|
|
1220
1225
|
if (!prop || (prop.kind === core_1.ReferenceKind.ONE_TO_ONE && !prop.owner)) {
|
|
1221
1226
|
return;
|
|
1222
1227
|
}
|
|
@@ -1229,7 +1234,7 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
|
|
|
1229
1234
|
const top = parts.shift();
|
|
1230
1235
|
for (const key of Object.keys(prop.embeddedProps)) {
|
|
1231
1236
|
if (!top || key === top) {
|
|
1232
|
-
this.processField(meta, prop.embeddedProps[key], parts.join('.'), ret
|
|
1237
|
+
this.processField(meta, prop.embeddedProps[key], parts.join('.'), ret);
|
|
1233
1238
|
}
|
|
1234
1239
|
}
|
|
1235
1240
|
return;
|
|
@@ -1271,7 +1276,7 @@ class AbstractSqlDriver extends core_1.DatabaseDriver {
|
|
|
1271
1276
|
where: {},
|
|
1272
1277
|
aliasMap: qb.getAliasMap(),
|
|
1273
1278
|
});
|
|
1274
|
-
this.processField(meta, prop, parts.join('.'), ret
|
|
1279
|
+
this.processField(meta, prop, parts.join('.'), ret);
|
|
1275
1280
|
}
|
|
1276
1281
|
if (!options.fields.includes('*') && !options.fields.includes(`${qb.alias}.*`)) {
|
|
1277
1282
|
ret.unshift(...meta.primaryKeys.filter(pk => !options.fields.includes(pk)));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/knex",
|
|
3
|
-
"version": "6.5.7
|
|
3
|
+
"version": "6.5.7",
|
|
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",
|
|
@@ -63,10 +63,10 @@
|
|
|
63
63
|
"sqlstring": "2.3.3"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@mikro-orm/core": "^6.5.
|
|
66
|
+
"@mikro-orm/core": "^6.5.7"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@mikro-orm/core": "6.
|
|
69
|
+
"@mikro-orm/core": "^6.0.0",
|
|
70
70
|
"better-sqlite3": "*",
|
|
71
71
|
"libsql": "*",
|
|
72
72
|
"mariadb": "*"
|
|
@@ -281,6 +281,10 @@ class QueryBuilderHelper {
|
|
|
281
281
|
}
|
|
282
282
|
const [fromAlias, fromField] = this.splitField(key);
|
|
283
283
|
const prop = this.getProperty(fromField, fromAlias);
|
|
284
|
+
if (core_1.Utils.isPlainObject(value) && prop?.kind === core_1.ReferenceKind.EMBEDDED) {
|
|
285
|
+
const parts = Object.entries(value).map(([k, v]) => this.processJoinClause(`${alias}.${prop.embeddedProps[k].name}`, v, alias, params));
|
|
286
|
+
return this.wrapQueryGroup(parts);
|
|
287
|
+
}
|
|
284
288
|
operator = operator === '$not' ? '$eq' : operator;
|
|
285
289
|
const column = this.mapper(key, undefined, undefined, null);
|
|
286
290
|
if (value === null) {
|