@mikro-orm/core 6.4.17-dev.47 → 6.4.17-dev.48
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.d.ts +2 -0
- package/EntityManager.js +9 -5
- package/package.json +2 -2
package/EntityManager.d.ts
CHANGED
|
@@ -552,6 +552,8 @@ export interface MergeOptions {
|
|
|
552
552
|
refresh?: boolean;
|
|
553
553
|
convertCustomTypes?: boolean;
|
|
554
554
|
schema?: string;
|
|
555
|
+
disableContextResolution?: boolean;
|
|
556
|
+
keepIdentity?: boolean;
|
|
555
557
|
}
|
|
556
558
|
export interface ForkOptions {
|
|
557
559
|
/** do we want a clear identity map? defaults to true */
|
package/EntityManager.js
CHANGED
|
@@ -988,8 +988,7 @@ class EntityManager {
|
|
|
988
988
|
if (propagateToUpperContext) {
|
|
989
989
|
// ensure all entities from inner context are merged to the upper one
|
|
990
990
|
for (const entity of fork.unitOfWork.getIdentityMap()) {
|
|
991
|
-
em.
|
|
992
|
-
entity.__helper.__em = em;
|
|
991
|
+
em.merge(entity, { disableContextResolution: true, keepIdentity: true, refresh: true });
|
|
993
992
|
}
|
|
994
993
|
}
|
|
995
994
|
return ret;
|
|
@@ -1174,10 +1173,10 @@ class EntityManager {
|
|
|
1174
1173
|
* via second parameter. By default, it will return already loaded entities without modifying them.
|
|
1175
1174
|
*/
|
|
1176
1175
|
merge(entityName, data, options = {}) {
|
|
1177
|
-
const em = this.getContext();
|
|
1178
1176
|
if (utils_1.Utils.isEntity(entityName)) {
|
|
1179
|
-
return
|
|
1177
|
+
return this.merge(entityName.constructor.name, entityName, data);
|
|
1180
1178
|
}
|
|
1179
|
+
const em = options.disableContextResolution ? this : this.getContext();
|
|
1181
1180
|
options.schema ??= em._schema;
|
|
1182
1181
|
entityName = utils_1.Utils.className(entityName);
|
|
1183
1182
|
em.validator.validatePrimaryKey(data, em.metadata.get(entityName));
|
|
@@ -1187,7 +1186,12 @@ class EntityManager {
|
|
|
1187
1186
|
}
|
|
1188
1187
|
const meta = em.metadata.find(entityName);
|
|
1189
1188
|
const childMeta = em.metadata.getByDiscriminatorColumn(meta, data);
|
|
1190
|
-
|
|
1189
|
+
const dataIsEntity = utils_1.Utils.isEntity(data);
|
|
1190
|
+
if (options.keepIdentity && entity && dataIsEntity && entity !== data) {
|
|
1191
|
+
em.entityFactory.mergeData(meta, entity, (0, entity_1.helper)(data).__originalEntityData, { initialized: true, merge: true, ...options });
|
|
1192
|
+
return entity;
|
|
1193
|
+
}
|
|
1194
|
+
entity = dataIsEntity ? data : em.entityFactory.create(entityName, data, { merge: true, ...options });
|
|
1191
1195
|
em.validator.validate(entity, data, childMeta ?? meta);
|
|
1192
1196
|
em.unitOfWork.merge(entity);
|
|
1193
1197
|
return entity;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/core",
|
|
3
|
-
"version": "6.4.17-dev.
|
|
3
|
+
"version": "6.4.17-dev.48",
|
|
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.17-dev.
|
|
67
|
+
"mikro-orm": "6.4.17-dev.48",
|
|
68
68
|
"reflect-metadata": "0.2.2"
|
|
69
69
|
}
|
|
70
70
|
}
|