@mikro-orm/core 6.4.14-dev.8 → 6.4.14

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/EntityManager.js CHANGED
@@ -710,6 +710,7 @@ class EntityManager {
710
710
  ctx: em.transactionContext,
711
711
  convertCustomTypes: true,
712
712
  connectionType: 'write',
713
+ schema: options.schema,
713
714
  });
714
715
  em.getHydrator().hydrate(entity, meta, data2, em.entityFactory, 'full', false, true);
715
716
  }
@@ -891,6 +892,7 @@ class EntityManager {
891
892
  ctx: em.transactionContext,
892
893
  convertCustomTypes: true,
893
894
  connectionType: 'write',
895
+ schema: options.schema,
894
896
  });
895
897
  for (const [entity, cond] of loadPK.entries()) {
896
898
  const row = data2.find(row => {
@@ -1261,7 +1263,7 @@ class EntityManager {
1261
1263
  delete options.orderBy;
1262
1264
  const cacheKey = em.cacheKey(entityName, options, 'em.count', where);
1263
1265
  const cached = await em.tryCache(entityName, options.cache, cacheKey);
1264
- if (cached?.data) {
1266
+ if (cached?.data !== undefined) {
1265
1267
  return cached.data;
1266
1268
  }
1267
1269
  const count = await em.driver.count(entityName, where, { ctx: em.transactionContext, ...options });
@@ -1685,34 +1687,31 @@ class EntityManager {
1685
1687
  const em = this.getContext();
1686
1688
  const cacheKey = Array.isArray(config) ? config[0] : JSON.stringify(key);
1687
1689
  const cached = await em.resultCache.get(cacheKey);
1688
- if (cached === null) {
1689
- return { key: cacheKey, data: null };
1690
- }
1691
- if (cached) {
1692
- let data;
1693
- if (Array.isArray(cached) && merge) {
1694
- data = cached.map(item => em.entityFactory.create(entityName, item, {
1695
- merge: true,
1696
- convertCustomTypes: true,
1697
- refresh,
1698
- recomputeSnapshot: true,
1699
- }));
1700
- }
1701
- else if (utils_1.Utils.isObject(cached) && merge) {
1702
- data = em.entityFactory.create(entityName, cached, {
1703
- merge: true,
1704
- convertCustomTypes: true,
1705
- refresh,
1706
- recomputeSnapshot: true,
1707
- });
1708
- }
1709
- else {
1710
- data = cached;
1711
- }
1712
- await em.unitOfWork.dispatchOnLoadEvent();
1713
- return { key: cacheKey, data };
1690
+ if (!cached) {
1691
+ return { key: cacheKey, data: cached };
1692
+ }
1693
+ let data;
1694
+ if (Array.isArray(cached) && merge) {
1695
+ data = cached.map(item => em.entityFactory.create(entityName, item, {
1696
+ merge: true,
1697
+ convertCustomTypes: true,
1698
+ refresh,
1699
+ recomputeSnapshot: true,
1700
+ }));
1701
+ }
1702
+ else if (utils_1.Utils.isObject(cached) && merge) {
1703
+ data = em.entityFactory.create(entityName, cached, {
1704
+ merge: true,
1705
+ convertCustomTypes: true,
1706
+ refresh,
1707
+ recomputeSnapshot: true,
1708
+ });
1714
1709
  }
1715
- return { key: cacheKey };
1710
+ else {
1711
+ data = cached;
1712
+ }
1713
+ await em.unitOfWork.dispatchOnLoadEvent();
1714
+ return { key: cacheKey, data };
1716
1715
  }
1717
1716
  /**
1718
1717
  * @internal
@@ -27,4 +27,6 @@ export interface ManyToOneOptions<Owner, Target> extends ReferenceOptions<Owner,
27
27
  updateRule?: 'cascade' | 'no action' | 'set null' | 'set default' | AnyString;
28
28
  /** Set the constraint type. Immediate constraints are checked for each statement, while deferred ones are only checked at the end of the transaction. Only for postgres unique constraints. */
29
29
  deferMode?: DeferMode | `${DeferMode}`;
30
+ /** Set a custom foreign key constraint name, overriding NamingStrategy.indexName(). */
31
+ foreignKeyName?: string;
30
32
  }
@@ -21,4 +21,6 @@ export interface OneToOneOptions<Owner, Target> extends Partial<Omit<OneToManyOp
21
21
  updateRule?: 'cascade' | 'no action' | 'set null' | 'set default' | AnyString;
22
22
  /** Set the constraint type. Immediate constraints are checked for each statement, while deferred ones are only checked at the end of the transaction. Only for postgres unique constraints. */
23
23
  deferMode?: DeferMode | `${DeferMode}`;
24
+ /** Set a custom foreign key constraint name, overriding NamingStrategy.indexName(). */
25
+ foreignKeyName?: string;
24
26
  }
@@ -264,7 +264,8 @@ class MetadataDiscovery {
264
264
  // initialize global metadata for given entity
265
265
  MetadataStorage_1.MetadataStorage.getMetadata(entity.meta.className, filepath);
266
266
  }
267
- return entity;
267
+ const meta = Utils_1.Utils.copy(entity.meta, false);
268
+ return EntitySchema_1.EntitySchema.fromMetadata(meta);
268
269
  }
269
270
  const path = entity[MetadataStorage_1.MetadataStorage.PATH_SYMBOL];
270
271
  if (path) {
@@ -1137,6 +1138,9 @@ class MetadataDiscovery {
1137
1138
  prop.runtimeType ??= prop.customType.runtimeType;
1138
1139
  }
1139
1140
  }
1141
+ else if (prop.runtimeType === 'object') {
1142
+ prop.runtimeType = mappedType.runtimeType;
1143
+ }
1140
1144
  else {
1141
1145
  prop.runtimeType ??= mappedType.runtimeType;
1142
1146
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/core",
3
- "version": "6.4.14-dev.8",
3
+ "version": "6.4.14",
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",
@@ -64,7 +64,7 @@
64
64
  "esprima": "4.0.1",
65
65
  "fs-extra": "11.3.0",
66
66
  "globby": "11.1.0",
67
- "mikro-orm": "6.4.14-dev.8",
67
+ "mikro-orm": "6.4.14",
68
68
  "reflect-metadata": "0.2.2"
69
69
  }
70
70
  }
package/typings.d.ts CHANGED
@@ -208,14 +208,17 @@ type ExpandRequiredEntityPropObject<T, I = never, C extends boolean = false> = {
208
208
  } & {
209
209
  [K in keyof T as OptionalKeys<T, K, I>]?: RequiredEntityDataProp<ExpandProperty<T[K]>, T, C> | EntityDataPropValue<ExpandProperty<T[K]>> | null | undefined;
210
210
  };
211
+ type NonArrayObject = object & {
212
+ [Symbol.iterator]?: never;
213
+ };
211
214
  export type EntityDataProp<T, C extends boolean> = T extends Date ? string | Date : T extends Scalar ? T : T extends {
212
215
  __runtime?: infer Runtime;
213
216
  __raw?: infer Raw;
214
- } ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? EntityDataNested<U, C> : T extends ScalarReference<infer U> ? EntityDataProp<U, C> : T extends Collection<infer U, any> ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : T extends readonly (infer U)[] ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : EntityDataNested<T, C>;
217
+ } ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? EntityDataNested<U, C> : T extends ScalarReference<infer U> ? EntityDataProp<U, C> : T extends Collection<infer U, any> ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : T extends readonly (infer U)[] ? U extends NonArrayObject ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : U[] | EntityDataNested<U, C>[] : EntityDataNested<T, C>;
215
218
  export type RequiredEntityDataProp<T, O, C extends boolean> = T extends Date ? string | Date : T extends Scalar ? T : T extends {
216
219
  __runtime?: infer Runtime;
217
220
  __raw?: infer Raw;
218
- } ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? RequiredEntityDataNested<U, O, C> : T extends ScalarReference<infer U> ? RequiredEntityDataProp<U, O, C> : T extends Collection<infer U, any> ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : T extends readonly (infer U)[] ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : RequiredEntityDataNested<T, O, C>;
221
+ } ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? RequiredEntityDataNested<U, O, C> : T extends ScalarReference<infer U> ? RequiredEntityDataProp<U, O, C> : T extends Collection<infer U, any> ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : T extends readonly (infer U)[] ? U extends NonArrayObject ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : U[] | RequiredEntityDataNested<U, O, C>[] : RequiredEntityDataNested<T, O, C>;
219
222
  export type EntityDataNested<T, C extends boolean = false> = T extends undefined ? never : T extends any[] ? Readonly<T> : EntityData<T, C> | ExpandEntityProp<T, C>;
220
223
  type EntityDataItem<T, C extends boolean> = C extends false ? T | EntityDataProp<T, C> | null : EntityDataProp<T, C> | null;
221
224
  export type RequiredEntityDataNested<T, O, C extends boolean> = T extends any[] ? Readonly<T> : RequiredEntityData<T, O> | ExpandRequiredEntityProp<T, O, C>;
@@ -381,6 +384,7 @@ export interface EntityProperty<Owner = any, Target = any> {
381
384
  optional?: boolean;
382
385
  ignoreSchemaChanges?: ('type' | 'extra' | 'default')[];
383
386
  deferMode?: DeferMode;
387
+ foreignKeyName?: string;
384
388
  }
385
389
  export declare class EntityMetadata<T = any> {
386
390
  private static counter;