nestjs-query-mikro-orm 0.1.2 → 0.1.3

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/dist/index.cjs CHANGED
@@ -3,7 +3,9 @@
3
3
  var nestjs = require('@mikro-orm/nestjs');
4
4
  var nestjsQueryCore = require('@ptc-org/nestjs-query-core');
5
5
  var core = require('@mikro-orm/core');
6
+ var assembler_serializer = require('@ptc-org/nestjs-query-core/src/assemblers/assembler.serializer');
6
7
  var common = require('@nestjs/common');
8
+ var classTransformer = require('class-transformer');
7
9
  var merge = require('lodash.merge');
8
10
 
9
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -1569,6 +1571,34 @@ var MikroOrmQueryService = class extends RelationQueryService {
1569
1571
  super(), this.repo = repo;
1570
1572
  this.filterQueryBuilder = opts?.filterQueryBuilder ?? new FilterQueryBuilder(this.repo);
1571
1573
  this.useSoftDelete = opts?.useSoftDelete ?? false;
1574
+ const serializer = assembler_serializer.getAssemblerSerializer(this.EntityClass);
1575
+ if (!serializer) {
1576
+ nestjsQueryCore.AssemblerSerializer((e) => {
1577
+ const json = classTransformer.instanceToPlain(e, {
1578
+ enableImplicitConversion: true,
1579
+ excludeExtraneousValues: true,
1580
+ exposeDefaultValues: true
1581
+ });
1582
+ const jsonWithRemovedEmptyObjects = Object.fromEntries(Object.entries(json).filter(([, value]) => !(value && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0)));
1583
+ const wrapped = core.wrap(e, true);
1584
+ const ormJson = "toObject" in wrapped ? wrapped.toObject() : {};
1585
+ const data = {
1586
+ ...ormJson,
1587
+ ...jsonWithRemovedEmptyObjects
1588
+ };
1589
+ return data;
1590
+ })(this.EntityClass);
1591
+ nestjsQueryCore.AssemblerDeserializer((d) => {
1592
+ const wrapped = core.wrap(d, true);
1593
+ if (wrapped.getPrimaryKey()) {
1594
+ const entity = this.repo.getEntityManager().merge(this.EntityClass, d);
1595
+ return entity;
1596
+ } else {
1597
+ const entity = this.repo.getEntityManager().create(this.EntityClass, d);
1598
+ return entity;
1599
+ }
1600
+ })(this.EntityClass);
1601
+ }
1572
1602
  }
1573
1603
  get EntityClass() {
1574
1604
  const em = this.repo.getEntityManager();
@@ -1854,7 +1884,8 @@ var MikroOrmQueryService = class extends RelationQueryService {
1854
1884
  * @param opts - Additional options.
1855
1885
  */
1856
1886
  async updateOne(id, update, opts) {
1857
- const dateWithClearUndefined = Object.fromEntries(Object.entries(update).filter(([, value]) => value !== void 0));
1887
+ const data = "toPOJO" in core.wrap(update) ? core.wrap(update).toPOJO() : update;
1888
+ const dateWithClearUndefined = Object.fromEntries(Object.entries(data).filter(([, value]) => value !== void 0));
1858
1889
  this.ensureIdIsNotPresent(dateWithClearUndefined);
1859
1890
  const entity = await this.getById(id, opts);
1860
1891
  core.wrap(entity).assign(dateWithClearUndefined);
@@ -1875,12 +1906,14 @@ var MikroOrmQueryService = class extends RelationQueryService {
1875
1906
  * @param filter - A Filter used to find the records to update
1876
1907
  */
1877
1908
  async updateMany(update, filter) {
1909
+ const data = "toPOJO" in core.wrap(update) ? core.wrap(update).toPOJO() : update;
1910
+ const dateWithClearUndefined = Object.fromEntries(Object.entries(data).filter(([, value]) => value !== void 0));
1878
1911
  this.ensureIdIsNotPresent(update);
1879
1912
  const entities = await this.query({
1880
1913
  filter
1881
1914
  });
1882
1915
  for (const entity of entities) {
1883
- core.wrap(entity).assign(update);
1916
+ core.wrap(entity).assign(dateWithClearUndefined);
1884
1917
  }
1885
1918
  await this.repo.getEntityManager().flush();
1886
1919
  return {