@foxiko/nest-common 0.2.5 → 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"}
|
package/build/index.d.ts
CHANGED
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
|
package/build/index.js.map
CHANGED
|
@@ -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"}
|