@steroidsjs/nest 2.2.0 → 3.0.0
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/infrastructure/decorators/fields/BaseField.js +1 -2
- package/infrastructure/decorators/fields/BaseField.js.map +1 -1
- package/infrastructure/decorators/fields/DecimalField.d.ts +4 -0
- package/infrastructure/decorators/fields/DecimalField.js +32 -1
- package/infrastructure/decorators/fields/DecimalField.js.map +1 -1
- package/infrastructure/decorators/fields/DecimalNumberField.js +8 -0
- package/infrastructure/decorators/fields/DecimalNumberField.js.map +1 -1
- package/infrastructure/helpers/ModuleHelper.js.map +1 -1
- package/infrastructure/tests/app/tables/ArticleTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/ArticleTable.js +1 -1
- package/infrastructure/tests/app/tables/ArticleTable.js.map +1 -1
- package/infrastructure/tests/app/tables/CommentTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/CommentTable.js +1 -1
- package/infrastructure/tests/app/tables/CommentTable.js.map +1 -1
- package/infrastructure/tests/app/tables/FileTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/FileTable.js +1 -1
- package/infrastructure/tests/app/tables/FileTable.js.map +1 -1
- package/infrastructure/tests/app/tables/ImageTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/ImageTable.js +1 -1
- package/infrastructure/tests/app/tables/ImageTable.js.map +1 -1
- package/infrastructure/tests/app/tables/TagTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/TagTable.js +1 -1
- package/infrastructure/tests/app/tables/TagTable.js.map +1 -1
- package/infrastructure/tests/app/tables/UserInfoTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/UserInfoTable.js +1 -1
- package/infrastructure/tests/app/tables/UserInfoTable.js.map +1 -1
- package/infrastructure/tests/app/tables/UserTable.d.ts +1 -1
- package/infrastructure/tests/app/tables/UserTable.js +1 -1
- package/infrastructure/tests/app/tables/UserTable.js.map +1 -1
- package/package.json +8 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/usecases/services/CrudService.d.ts +1 -1
- package/usecases/services/CrudService.js +15 -8
- package/usecases/services/CrudService.js.map +1 -1
- package/usecases/services/ReadService.d.ts +3 -2
- package/usecases/services/ReadService.js +3 -0
- package/usecases/services/ReadService.js.map +1 -1
|
@@ -9,7 +9,7 @@ export declare class CrudService<TModel, TSearchDto = ISearchInputDto, TSaveDto
|
|
|
9
9
|
update<TSchema>(id: number | string, dto: Partial<TModel>, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<TSchema>;
|
|
10
10
|
save<TSchema>(id: number | string, dto: Partial<TModel>, context?: ContextDto | null): Promise<TModel>;
|
|
11
11
|
save<TSchema>(id: number | string, dto: Partial<TModel>, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<TSchema>;
|
|
12
|
-
saveInternal(prevModel: TModel | null, nextModel: TModel, context?: ContextDto): Promise<void>;
|
|
12
|
+
saveInternal(prevModel: TModel | null, nextModel: TModel, diffModel: TModel, context?: ContextDto): Promise<void>;
|
|
13
13
|
checkHasRelatedModels(id: string | number, service: CrudService<any>): Promise<void>;
|
|
14
14
|
remove(rawId: number | string, context?: ContextDto): Promise<void>;
|
|
15
15
|
removeInternal(id: number, context?: ContextDto): Promise<void>;
|
|
@@ -16,12 +16,16 @@ class CrudService extends ReadService_1.ReadService {
|
|
|
16
16
|
return this.save(rawId, dto, context, schemaClass);
|
|
17
17
|
}
|
|
18
18
|
async save(rawId, dto, context = null, schemaClass = null) {
|
|
19
|
+
if (this.isModel(dto)) {
|
|
20
|
+
throw new Error('The model itself shouldn\'t be used as a DTO');
|
|
21
|
+
}
|
|
19
22
|
const id = rawId ? (0, lodash_1.toInteger)(rawId) : null;
|
|
20
23
|
let prevModel = null;
|
|
21
24
|
if (id) {
|
|
22
|
-
prevModel = await this.
|
|
25
|
+
prevModel = await this.createQuery()
|
|
26
|
+
.with((0, BaseField_1.getMetaRelations)(dto.constructor))
|
|
23
27
|
.where({ [this.primaryKey]: id })
|
|
24
|
-
.
|
|
28
|
+
.one();
|
|
25
29
|
if (!prevModel) {
|
|
26
30
|
throw new Error('Not found model by id: ' + id);
|
|
27
31
|
}
|
|
@@ -31,10 +35,11 @@ class CrudService extends ReadService_1.ReadService {
|
|
|
31
35
|
if (prevModel) {
|
|
32
36
|
DataMapper_1.DataMapper.applyValues(nextModel, prevModel);
|
|
33
37
|
}
|
|
34
|
-
|
|
38
|
+
const diffModel = this.dtoToModel(dto);
|
|
35
39
|
if (id) {
|
|
36
|
-
|
|
40
|
+
diffModel[this.primaryKey] = id;
|
|
37
41
|
}
|
|
42
|
+
DataMapper_1.DataMapper.applyValues(nextModel, diffModel);
|
|
38
43
|
await this.validate(dto, {
|
|
39
44
|
prevModel,
|
|
40
45
|
nextModel,
|
|
@@ -45,11 +50,13 @@ class CrudService extends ReadService_1.ReadService {
|
|
|
45
50
|
nextModel,
|
|
46
51
|
context,
|
|
47
52
|
});
|
|
48
|
-
await this.saveInternal(prevModel, nextModel, context);
|
|
49
|
-
return schemaClass
|
|
53
|
+
await this.saveInternal(prevModel, nextModel, diffModel, context);
|
|
54
|
+
return schemaClass
|
|
55
|
+
? this.findById(nextModel[this.primaryKey], context, schemaClass)
|
|
56
|
+
: nextModel;
|
|
50
57
|
}
|
|
51
|
-
async saveInternal(prevModel, nextModel, context) {
|
|
52
|
-
await this.repository.save(
|
|
58
|
+
async saveInternal(prevModel, nextModel, diffModel, context) {
|
|
59
|
+
await this.repository.save(diffModel);
|
|
53
60
|
}
|
|
54
61
|
async checkHasRelatedModels(id, service) {
|
|
55
62
|
const relations = (0, BaseField_1.getRelationsByFilter)(this.modelClass, (relation) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAC/C,sDAAiD;AAEjD,qDAA8C;AAE9C,gFAAwG;AACxG,0EAAqE;AACrE,8CAA4C;AAC5C,+CAA0C;AAM1C,MAAa,WAKX,SAAQ,yBAA+B;IAerC,KAAK,CAAC,MAAM,CACR,GAAoB,EACpB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAiBD,KAAK,CAAC,MAAM,CACR,KAAsB,EACtB,GAAoB,EACpB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;
|
|
1
|
+
{"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@ import { IType } from '../interfaces/IType';
|
|
|
8
8
|
export declare class ReadService<TModel, TSearchDto = ISearchInputDto> {
|
|
9
9
|
protected primaryKey: string;
|
|
10
10
|
protected repository: ICrudRepository<TModel>;
|
|
11
|
-
protected modelClass:
|
|
11
|
+
protected modelClass: IType<TModel>;
|
|
12
12
|
validators: IValidator[];
|
|
13
|
-
init(repository: ICrudRepository<TModel>, ModelClass:
|
|
13
|
+
init(repository: ICrudRepository<TModel>, ModelClass: IType<TModel>): void;
|
|
14
14
|
search(dto: TSearchDto, context?: ContextDto | null): Promise<SearchResultDto<TModel>>;
|
|
15
15
|
search<TSchema>(dto: TSearchDto, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<SearchResultDto<TSchema>>;
|
|
16
16
|
findById(id: number | string, context?: ContextDto | null): Promise<TModel>;
|
|
@@ -20,4 +20,5 @@ export declare class ReadService<TModel, TSearchDto = ISearchInputDto> {
|
|
|
20
20
|
createQuery(config?: ISearchQueryConfig<TModel>): SearchQuery<TModel>;
|
|
21
21
|
protected modelToSchema<TSchema>(model: TModel, schemaClass: IType<TSchema>): TSchema;
|
|
22
22
|
protected validate(dto: any, params?: IValidatorParams): Promise<void>;
|
|
23
|
+
protected isModel(obj: unknown): obj is TModel;
|
|
23
24
|
}
|
|
@@ -44,6 +44,9 @@ class ReadService {
|
|
|
44
44
|
async validate(dto, params) {
|
|
45
45
|
await ValidationHelper_1.ValidationHelper.validate(dto, params, this.validators);
|
|
46
46
|
}
|
|
47
|
+
isModel(obj) {
|
|
48
|
+
return obj instanceof this.modelClass;
|
|
49
|
+
}
|
|
47
50
|
}
|
|
48
51
|
exports.ReadService = ReadService;
|
|
49
52
|
//# sourceMappingURL=ReadService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadService.js","sourceRoot":"","sources":["../../../src/usecases/services/ReadService.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C,sDAAiD;AAGjD,kEAA6D;AAC7D,qDAAoE;AAQpE,MAAa,WAAW;IAAxB;QAIc,eAAU,GAAW,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadService.js","sourceRoot":"","sources":["../../../src/usecases/services/ReadService.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C,sDAAiD;AAGjD,kEAA6D;AAC7D,qDAAoE;AAQpE,MAAa,WAAW;IAAxB;QAIc,eAAU,GAAW,IAAI,CAAC;IAyHxC,CAAC;IAtGG,IAAI,CAAC,UAAmC,EAAE,UAAyB;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAeD,KAAK,CAAC,MAAM,CACR,GAAe,EACf,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrB,OAAO;SACV,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CACvC,GAAG,EACH,WAAW,CAAC,CAAC,CAAC,qBAAW,CAAC,gBAAgB,CAAS,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAW,EAAE,CACtF,CAAC;QACF,IAAI,WAAW,EAAE;YACb,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAU,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;SACvG;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAeD,KAAK,CAAC,QAAQ,CACV,EAAmB,EACnB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAW,CAAC,gBAAgB,CAAS,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAW,EAAU,CAAC;QAChH,WAAW,CAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAA,kBAAU,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAU,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,CAAC;IAMD,KAAK,CAAC,OAAO,CAAC,WAAgC;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAMD,KAAK,CAAC,QAAQ,CAAC,WAAgC;QAC3C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,MAAmC;QAC3C,OAAO,IAAI,qBAAW,iBAClB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EACnC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAC9B,CAAC,MAAM,IAAI,EAAE,CAAC,EACnB,CAAC;IACP,CAAC;IAQS,aAAa,CAAU,KAAa,EAAE,WAA2B;QACvE,OAAO,uBAAU,CAAC,MAAM,CAAC,WAAW,EAAE,KAAY,CAAC,CAAC;IACxD,CAAC;IAES,KAAK,CAAC,QAAQ,CAAC,GAAQ,EAAE,MAAyB;QACxD,MAAM,mCAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAES,OAAO,CAAC,GAAY;QAC1B,OAAO,GAAG,YAAY,IAAI,CAAC,UAAU,CAAC;IAC1C,CAAC;CACJ;AA7HD,kCA6HC"}
|