@mikro-orm/knex 6.5.7-dev.2 → 6.5.7-dev.20

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/index.mjs CHANGED
@@ -62,6 +62,7 @@ export const DeadlockException = mod.DeadlockException;
62
62
  export const DecimalType = mod.DecimalType;
63
63
  export const DefaultLogger = mod.DefaultLogger;
64
64
  export const DeferMode = mod.DeferMode;
65
+ export const DefineConfig = mod.DefineConfig;
65
66
  export const DoubleType = mod.DoubleType;
66
67
  export const DriverException = mod.DriverException;
67
68
  export const EagerProps = mod.EagerProps;
@@ -102,6 +103,7 @@ export const ForeignKeyConstraintViolationException = mod.ForeignKeyConstraintVi
102
103
  export const Formula = mod.Formula;
103
104
  export const GeneratedCacheAdapter = mod.GeneratedCacheAdapter;
104
105
  export const GroupOperator = mod.GroupOperator;
106
+ export const Hidden = mod.Hidden;
105
107
  export const HiddenProps = mod.HiddenProps;
106
108
  export const Hydrator = mod.Hydrator;
107
109
  export const IdentityMap = mod.IdentityMap;
@@ -156,6 +158,7 @@ export const OneToManyOptionsBuilder = mod.OneToManyOptionsBuilder;
156
158
  export const OneToManyOptionsBuilderOnlyMappedBy = mod.OneToManyOptionsBuilderOnlyMappedBy;
157
159
  export const OneToOne = mod.OneToOne;
158
160
  export const OneToOneOptionsBuilder = mod.OneToOneOptionsBuilder;
161
+ export const Opt = mod.Opt;
159
162
  export const OptimisticLockError = mod.OptimisticLockError;
160
163
  export const OptionalProps = mod.OptionalProps;
161
164
  export const PlainObject = mod.PlainObject;
@@ -183,6 +186,7 @@ export const ReferenceKind = mod.ReferenceKind;
183
186
  export const ReferenceOptionsBuilder = mod.ReferenceOptionsBuilder;
184
187
  export const ReflectMetadataProvider = mod.ReflectMetadataProvider;
185
188
  export const RequestContext = mod.RequestContext;
189
+ export const RequiredNullable = mod.RequiredNullable;
186
190
  export const SCALAR_TYPES = mod.SCALAR_TYPES;
187
191
  export const ScalarCriteriaNode = mod.ScalarCriteriaNode;
188
192
  export const ScalarReference = mod.ScalarReference;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/knex",
3
- "version": "6.5.7-dev.2",
3
+ "version": "6.5.7-dev.20",
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,7 +66,7 @@
66
66
  "@mikro-orm/core": "^6.5.6"
67
67
  },
68
68
  "peerDependencies": {
69
- "@mikro-orm/core": "6.5.7-dev.2",
69
+ "@mikro-orm/core": "6.5.7-dev.20",
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) {