@mikro-orm/knex 6.5.7-dev.8 → 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.
@@ -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>[], populate: PopulateOptions<T>[], joinedProps: PopulateOptions<T>[], qb: QueryBuilder<T, any, any, any>): void;
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
  }
@@ -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, populate, joinedProps, qb) {
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, populate, joinedProps, qb);
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, populate, joinedProps, qb);
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-dev.8",
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.6"
66
+ "@mikro-orm/core": "^6.5.7"
67
67
  },
68
68
  "peerDependencies": {
69
- "@mikro-orm/core": "6.5.7-dev.8",
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) {