@foxiko/nest-common 0.2.4 → 0.2.6

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.
@@ -0,0 +1,16 @@
1
+ import { EntityRepository, FilterQuery, FindOptions, RequiredEntityData, AnyEntity } from '@mikro-orm/core';
2
+ import { EventEmitter2 } from '@nestjs/event-emitter';
3
+ import { BaseService } from './base.service';
4
+ export declare abstract class BaseRelatedService<T extends AnyEntity, R extends AnyEntity> extends BaseService<T> {
5
+ protected readonly repository: EntityRepository<T>;
6
+ protected readonly relatedRepository: EntityRepository<R>;
7
+ protected readonly eventEmitter?: EventEmitter2;
8
+ slug: string;
9
+ protected constructor(repository: EntityRepository<T>, relatedRepository: EntityRepository<R>, eventEmitter?: EventEmitter2);
10
+ findAll(where: FilterQuery<T>): Promise<import("@mikro-orm/core").Loaded<T, never, "*", never>[]>;
11
+ query(where: FilterQuery<T>, options: FindOptions<T>): Promise<[import("@mikro-orm/core").Loaded<T, never, import("@mikro-orm/core").PopulatePath.ALL, never>[], number]>;
12
+ findOne(where: FilterQuery<T>): Promise<import("@mikro-orm/core").Loaded<T, never, "*", never>>;
13
+ create(data: RequiredEntityData<T>): Promise<T>;
14
+ createMany(data: RequiredEntityData<T>[]): Promise<T[]>;
15
+ private validateRelatedEntity;
16
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRelatedService = void 0;
4
+ const core_1 = require("@mikro-orm/core");
5
+ const common_1 = require("@nestjs/common");
6
+ const entity_name_util_1 = require("./utils/entity-name.util");
7
+ const base_service_1 = require("./base.service");
8
+ class BaseRelatedService extends base_service_1.BaseService {
9
+ constructor(repository, relatedRepository, eventEmitter) {
10
+ super(repository, eventEmitter);
11
+ this.repository = repository;
12
+ this.relatedRepository = relatedRepository;
13
+ this.eventEmitter = eventEmitter;
14
+ }
15
+ async findAll(where) {
16
+ return this.repository.find(where);
17
+ }
18
+ async query(where, options) {
19
+ return this.repository.findAndCount(where, options);
20
+ }
21
+ async findOne(where) {
22
+ return this.repository.findOne(where);
23
+ }
24
+ async create(data) {
25
+ await this.validateRelatedEntity(data);
26
+ return super.create(data);
27
+ }
28
+ async createMany(data) {
29
+ for (const item of data) {
30
+ await this.validateRelatedEntity(item);
31
+ }
32
+ return super.createMany(data);
33
+ }
34
+ async validateRelatedEntity(data) {
35
+ const em = this.repository.getEntityManager();
36
+ const meta = em.getMetadata().get(this.repository.getEntityName());
37
+ const relatedName = this.relatedRepository.getEntityName();
38
+ for (const prop of meta.relations) {
39
+ if (prop.target === relatedName && (prop.kind === core_1.ReferenceKind.MANY_TO_ONE || prop.kind === core_1.ReferenceKind.ONE_TO_ONE)) {
40
+ const val = data[prop.name];
41
+ if (val) {
42
+ const related = await this.relatedRepository.findOne(val);
43
+ if (!related) {
44
+ throw new common_1.NotFoundException(`${entity_name_util_1.EntityNameUtil.classToName({ name: relatedName })} not found`);
45
+ }
46
+ data[prop.name] = related;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ exports.BaseRelatedService = BaseRelatedService;
53
+ //# sourceMappingURL=base-related.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-related.service.js","sourceRoot":"","sources":["../../src/common/base-related.service.ts"],"names":[],"mappings":";;;AAAA,0CAA2H;AAE3H,2CAAmD;AACnD,+DAA0D;AAC1D,iDAA6C;AAE7C,MAAsB,kBAA6D,SAAQ,0BAAc;IAIvG,YACqB,UAA+B,EAC/B,iBAAsC,EACtC,YAA4B;QAE/C,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAJb,eAAU,GAAV,UAAU,CAAqB;QAC/B,sBAAiB,GAAjB,iBAAiB,CAAqB;QACtC,iBAAY,GAAZ,YAAY,CAAgB;IAGjD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAqB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAqB,EAAE,OAAuB;QACxD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAqB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA2B;QACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAA6B;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,IAA2B;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,IAAK,IAAY,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAa,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAa,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChI,MAAM,GAAG,GAAI,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,IAAI,0BAAiB,CAAC,GAAG,iCAAc,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC;oBAChG,CAAC;oBACA,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CAEF;AAvDD,gDAuDC"}
@@ -30,8 +30,7 @@ class BaseService {
30
30
  async create(data) {
31
31
  var _a;
32
32
  const entity = this.repository.create(data);
33
- const result = await this.repository.insert(entity);
34
- await this.repository.getEntityManager().persist(data).flush();
33
+ await this.repository.getEntityManager().persist(entity).flush();
35
34
  (_a = this.eventEmitter) === null || _a === void 0 ? void 0 : _a.emit(`${this.slug}.created`, new base_event_1.CRUDEventCreate(entity));
36
35
  return entity;
37
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.service.js","sourceRoot":"","sources":["../../src/common/base.service.ts"],"names":[],"mappings":";;;AAEA,+DAA0D;AAC1D,6CAAiF;AAEjF,MAAsB,WAAW;IAI/B,YACqB,UAA+B,EAC/B,YAA4B;QAD5B,eAAU,GAAV,UAAU,CAAqB;QAC/B,iBAAY,GAAZ,YAAY,CAAgB;QAE/C,IAAI,CAAC,IAAI,GAAG,iCAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAqB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAqB,EAAE,OAAuB;QACxD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAqB,EAAE,OAAwB;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAqB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAqB;;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC;QACxC,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,IAAI,4BAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA2B;;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,IAAI,4BAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAA6B;;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACnE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,IAAI,4BAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAqB,EAAE,IAAmB;;QACrD,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC;QAC1C,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,IAAI,4BAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;CAEF;AAzDD,kCAyDC"}
1
+ {"version":3,"file":"base.service.js","sourceRoot":"","sources":["../../src/common/base.service.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -6,4 +6,5 @@ export * from './common/base.service';
6
6
  export * from './common/dto/pagination.dto';
7
7
  export * from './common/utils/entity-name.util';
8
8
  export * from './common/base.event';
9
+ export * from './common/base-related.service';
9
10
  export * from './common/constants';
package/build/index.js CHANGED
@@ -22,5 +22,6 @@ __exportStar(require("./common/base.service"), exports);
22
22
  __exportStar(require("./common/dto/pagination.dto"), exports);
23
23
  __exportStar(require("./common/utils/entity-name.util"), exports);
24
24
  __exportStar(require("./common/base.event"), exports);
25
+ __exportStar(require("./common/base-related.service"), exports);
25
26
  __exportStar(require("./common/constants"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,8EAA4D;AAC5D,wDAAsC;AACtC,8DAA4C;AAC5C,kEAAgD;AAChD,sDAAoC;AACpC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,8EAA4D;AAC5D,wDAAsC;AACtC,8DAA4C;AAC5C,kEAAgD;AAChD,sDAAoC;AACpC,gEAA8C;AAC9C,qDAAmC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxiko/nest-common",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "typings": "./build/index.d.ts",