@mikro-orm/core 6.5.9-dev.0 → 6.5.9-dev.10
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 +5 -4
- package/entity/EntityFactory.js +4 -0
- package/entity/defineEntity.d.ts +278 -405
- package/entity/defineEntity.js +33 -190
- package/index.mjs +2 -8
- package/metadata/EntitySchema.d.ts +2 -2
- package/metadata/MetadataDiscovery.js +3 -0
- package/package.json +2 -2
- package/platforms/Platform.d.ts +1 -1
- package/platforms/Platform.js +2 -6
- package/serialization/SerializationContext.js +1 -1
- package/types/JsonType.d.ts +1 -1
- package/types/JsonType.js +7 -2
- package/types/Type.d.ts +2 -1
- package/types/Type.js +1 -1
- package/unit-of-work/UnitOfWork.js +2 -2
- package/utils/TransactionManager.js +0 -2
package/EntityManager.js
CHANGED
|
@@ -493,8 +493,9 @@ class EntityManager {
|
|
|
493
493
|
async refresh(entity, options = {}) {
|
|
494
494
|
const fork = this.fork({ keepTransactionContext: true });
|
|
495
495
|
const entityName = entity.constructor.name;
|
|
496
|
+
const wrapped = (0, entity_1.helper)(entity);
|
|
496
497
|
const reloaded = await fork.findOne(entityName, entity, {
|
|
497
|
-
schema:
|
|
498
|
+
schema: wrapped.__schema,
|
|
498
499
|
...options,
|
|
499
500
|
flushMode: enums_1.FlushMode.COMMIT,
|
|
500
501
|
});
|
|
@@ -508,13 +509,13 @@ class EntityManager {
|
|
|
508
509
|
const ref = em.getReference(e.constructor.name, (0, entity_1.helper)(e).getPrimaryKey());
|
|
509
510
|
const data = (0, entity_1.helper)(e).serialize({ ignoreSerializers: true, includeHidden: true });
|
|
510
511
|
em.config.getHydrator(this.metadata).hydrate(ref, (0, entity_1.helper)(ref).__meta, data, em.entityFactory, 'full', false, true);
|
|
511
|
-
(0, entity_1.helper)(ref).__originalEntityData
|
|
512
|
+
utils_1.Utils.merge((0, entity_1.helper)(ref).__originalEntityData, this.comparator.prepareEntity(e));
|
|
512
513
|
found ||= ref === entity;
|
|
513
514
|
}
|
|
514
515
|
if (!found) {
|
|
515
516
|
const data = (0, entity_1.helper)(reloaded).serialize({ ignoreSerializers: true, includeHidden: true });
|
|
516
|
-
em.config.getHydrator(this.metadata).hydrate(entity,
|
|
517
|
-
|
|
517
|
+
em.config.getHydrator(this.metadata).hydrate(entity, wrapped.__meta, data, em.entityFactory, 'full', false, true);
|
|
518
|
+
utils_1.Utils.merge(wrapped.__originalEntityData, this.comparator.prepareEntity(reloaded));
|
|
518
519
|
}
|
|
519
520
|
return entity;
|
|
520
521
|
}
|
package/entity/EntityFactory.js
CHANGED
|
@@ -139,6 +139,10 @@ class EntityFactory {
|
|
|
139
139
|
if ([enums_1.ReferenceKind.MANY_TO_ONE, enums_1.ReferenceKind.ONE_TO_ONE].includes(prop.kind) && Utils_1.Utils.isPlainObject(data[prop.name])) {
|
|
140
140
|
diff2[key] = entity[prop.name] ? (0, wrap_1.helper)(entity[prop.name]).getPrimaryKey(options.convertCustomTypes) : null;
|
|
141
141
|
}
|
|
142
|
+
if ([enums_1.ReferenceKind.MANY_TO_ONE, enums_1.ReferenceKind.ONE_TO_ONE, enums_1.ReferenceKind.SCALAR].includes(prop.kind) && prop.customType?.ensureComparable(meta, prop) && diff2[key] != null) {
|
|
143
|
+
const converted = prop.customType.convertToJSValue(diff2[key], this.platform, { force: true });
|
|
144
|
+
diff2[key] = prop.customType.convertToDatabaseValue(converted, this.platform, { fromQuery: true });
|
|
145
|
+
}
|
|
142
146
|
originalEntityData[key] = diff2[key] === null ? nullVal : diff2[key];
|
|
143
147
|
(0, wrap_1.helper)(entity).__loadedProperties.add(key);
|
|
144
148
|
});
|