@node-c/api-rest 1.0.0-alpha9 → 1.0.0-beta1
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/entityController/dto/base.dto.d.ts +2 -2
- package/dist/entityController/dto/base.dto.js +3 -2
- package/dist/entityController/dto/base.dto.js.map +1 -1
- package/dist/entityController/dto/bulkCreate.dto.d.ts +1 -1
- package/dist/entityController/dto/bulkCreate.dto.js +2 -2
- package/dist/entityController/dto/bulkCreate.dto.js.map +1 -1
- package/dist/entityController/dto/create.dto.d.ts +1 -1
- package/dist/entityController/dto/create.dto.js +1 -1
- package/dist/entityController/dto/create.dto.js.map +1 -1
- package/dist/entityController/dto/delete.dto.d.ts +1 -0
- package/dist/entityController/dto/delete.dto.js +6 -0
- package/dist/entityController/dto/delete.dto.js.map +1 -1
- package/dist/entityController/dto/find.dto.d.ts +3 -2
- package/dist/entityController/dto/find.dto.js +12 -5
- package/dist/entityController/dto/find.dto.js.map +1 -1
- package/dist/entityController/dto/findOne.dto.d.ts +6 -4
- package/dist/entityController/dto/findOne.dto.js +6 -3
- package/dist/entityController/dto/findOne.dto.js.map +1 -1
- package/dist/entityController/dto/index.d.ts +0 -1
- package/dist/entityController/dto/index.js +0 -1
- package/dist/entityController/dto/index.js.map +1 -1
- package/dist/entityController/dto/update.dto.d.ts +2 -1
- package/dist/entityController/dto/update.dto.js +7 -2
- package/dist/entityController/dto/update.dto.js.map +1 -1
- package/dist/entityController/index.d.ts +1 -0
- package/dist/entityController/index.js +1 -0
- package/dist/entityController/index.js.map +1 -1
- package/dist/entityController/rest.entity.controller.d.ts +16 -17
- package/dist/entityController/rest.entity.controller.definitions.d.ts +2 -1
- package/dist/entityController/rest.entity.controller.dto.definitions.d.ts +11 -0
- package/dist/entityController/rest.entity.controller.dto.definitions.js +3 -0
- package/dist/entityController/rest.entity.controller.dto.definitions.js.map +1 -0
- package/dist/entityController/rest.entity.controller.js +16 -8
- package/dist/entityController/rest.entity.controller.js.map +1 -1
- package/package.json +8 -5
- package/src/entityController/dto/base.dto.ts +5 -4
- package/src/entityController/dto/bulkCreate.dto.ts +4 -4
- package/src/entityController/dto/create.dto.ts +2 -2
- package/src/entityController/dto/delete.dto.ts +6 -1
- package/src/entityController/dto/find.dto.ts +14 -8
- package/src/entityController/dto/findOne.dto.ts +17 -8
- package/src/entityController/dto/index.ts +0 -1
- package/src/entityController/dto/update.dto.ts +8 -4
- package/src/entityController/index.ts +1 -0
- package/src/entityController/rest.entity.controller.definitions.ts +17 -0
- package/src/entityController/rest.entity.controller.dto.definitions.ts +21 -0
- package/src/entityController/rest.entity.controller.ts +35 -39
- package/dist/entityController/dto/numberItem.dto.d.ts +0 -5
- package/dist/entityController/dto/numberItem.dto.js +0 -27
- package/dist/entityController/dto/numberItem.dto.js.map +0 -1
- package/src/entityController/dto/numberItem.dto.ts +0 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DomainBaseAdditionalServiceOptionsOverrides,
|
|
1
|
+
import { DomainBaseAdditionalServiceOptionsOverrides, DomainDataServicesKey, GenericObject } from '@node-c/core';
|
|
2
2
|
export declare class BaseDto<Options> {
|
|
3
3
|
optionsOverridesByService?: GenericObject<Partial<Options>> & DomainBaseAdditionalServiceOptionsOverrides;
|
|
4
|
-
|
|
4
|
+
dataServices?: DomainDataServicesKey[];
|
|
5
5
|
}
|
|
@@ -15,13 +15,14 @@ class BaseDto {
|
|
|
15
15
|
}
|
|
16
16
|
exports.BaseDto = BaseDto;
|
|
17
17
|
__decorate([
|
|
18
|
-
(0, class_validator_1.
|
|
18
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
19
19
|
(0, class_validator_1.IsObject)(),
|
|
20
|
+
(0, class_validator_1.IsOptional)(),
|
|
20
21
|
__metadata("design:type", Object)
|
|
21
22
|
], BaseDto.prototype, "optionsOverridesByService", void 0);
|
|
22
23
|
__decorate([
|
|
23
24
|
(0, class_validator_1.IsArray)(),
|
|
24
25
|
(0, class_validator_1.IsOptional)(),
|
|
25
26
|
__metadata("design:type", Array)
|
|
26
|
-
], BaseDto.prototype, "
|
|
27
|
+
], BaseDto.prototype, "dataServices", void 0);
|
|
27
28
|
//# sourceMappingURL=base.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/base.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"base.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/base.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAkF;AAKlF,MAAa,OAAO;CASnB;AATD,0BASC;AALC;IAHC,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DAC6F;AAI1G;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;6CAC0B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseDto } from './base.dto';
|
|
2
2
|
import { BulkCreateBody, BulkCreateOptions } from '../rest.entity.controller.definitions';
|
|
3
3
|
export declare class BulkCreateDto<Entity, Options extends BulkCreateOptions<Entity>> extends BaseDto<Options> implements BulkCreateBody<Entity> {
|
|
4
|
-
data: Entity[];
|
|
4
|
+
data: Partial<Entity>[];
|
|
5
5
|
}
|
|
@@ -16,9 +16,9 @@ class BulkCreateDto extends base_dto_1.BaseDto {
|
|
|
16
16
|
}
|
|
17
17
|
exports.BulkCreateDto = BulkCreateDto;
|
|
18
18
|
__decorate([
|
|
19
|
+
(0, class_validator_1.ArrayNotEmpty)(),
|
|
20
|
+
(0, class_validator_1.IsArray)(),
|
|
19
21
|
(0, class_validator_1.IsDefined)(),
|
|
20
|
-
(0, class_validator_1.IsObject)(),
|
|
21
|
-
(0, class_validator_1.IsNotEmptyObject)(),
|
|
22
22
|
__metadata("design:type", Array)
|
|
23
23
|
], BulkCreateDto.prototype, "data", void 0);
|
|
24
24
|
//# sourceMappingURL=bulkCreate.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulkCreate.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/bulkCreate.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"bulkCreate.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/bulkCreate.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAoE;AAEpE,yCAAqC;AAIrC,MAAa,aACX,SAAQ,kBAAgB;CAOzB;AARD,sCAQC;AADC;IAHC,IAAA,+BAAa,GAAE;IACf,IAAA,yBAAO,GAAE;IACT,IAAA,2BAAS,GAAE;;2CACY"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseDto } from './base.dto';
|
|
2
2
|
import { CreateBody, CreateOptions } from '../rest.entity.controller.definitions';
|
|
3
3
|
export declare class CreateDto<Entity, Options extends CreateOptions<Entity>> extends BaseDto<Options> implements CreateBody<Entity> {
|
|
4
|
-
data: Entity
|
|
4
|
+
data: Partial<Entity>;
|
|
5
5
|
}
|
|
@@ -17,8 +17,8 @@ class CreateDto extends base_dto_1.BaseDto {
|
|
|
17
17
|
exports.CreateDto = CreateDto;
|
|
18
18
|
__decorate([
|
|
19
19
|
(0, class_validator_1.IsDefined)(),
|
|
20
|
-
(0, class_validator_1.IsObject)(),
|
|
21
20
|
(0, class_validator_1.IsNotEmptyObject)(),
|
|
21
|
+
(0, class_validator_1.IsObject)(),
|
|
22
22
|
__metadata("design:type", Object)
|
|
23
23
|
], CreateDto.prototype, "data", void 0);
|
|
24
24
|
//# sourceMappingURL=create.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/create.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAwE;AAExE,yCAAqC;AAIrC,MAAa,SACX,SAAQ,kBAAgB;CAOzB;AARD,8BAQC;AADC;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,
|
|
1
|
+
{"version":3,"file":"create.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/create.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAwE;AAExE,yCAAqC;AAIrC,MAAa,SACX,SAAQ,kBAAgB;CAOzB;AARD,8BAQC;AADC;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;;uCACW"}
|
|
@@ -2,4 +2,5 @@ import { DomainDeleteOptions, GenericObject } from '@node-c/core';
|
|
|
2
2
|
import { BaseDto } from './base.dto';
|
|
3
3
|
export declare class DeleteDto<Options extends DomainDeleteOptions> extends BaseDto<Options> implements DomainDeleteOptions {
|
|
4
4
|
filters: GenericObject<unknown>;
|
|
5
|
+
returnOriginalItems?: boolean;
|
|
5
6
|
}
|
|
@@ -17,7 +17,13 @@ class DeleteDto extends base_dto_1.BaseDto {
|
|
|
17
17
|
exports.DeleteDto = DeleteDto;
|
|
18
18
|
__decorate([
|
|
19
19
|
(0, class_validator_1.IsDefined)(),
|
|
20
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
20
21
|
(0, class_validator_1.IsObject)(),
|
|
21
22
|
__metadata("design:type", Object)
|
|
22
23
|
], DeleteDto.prototype, "filters", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsBoolean)(),
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
__metadata("design:type", Boolean)
|
|
28
|
+
], DeleteDto.prototype, "returnOriginalItems", void 0);
|
|
23
29
|
//# sourceMappingURL=delete.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/delete.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"delete.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/delete.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAA+F;AAE/F,yCAAqC;AAErC,MAAa,SAA+C,SAAQ,kBAAgB;CASnF;AATD,8BASC;AALC;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;;0CACqB;AAIhC;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;sDACiB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { DomainFindOptions, GenericObject
|
|
1
|
+
import { DataOrderByDirection, DomainFindOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
import { BaseDto } from './base.dto';
|
|
3
3
|
export declare class FindDto<Options extends DomainFindOptions> extends BaseDto<Options> implements DomainFindOptions {
|
|
4
4
|
filters?: GenericObject;
|
|
5
5
|
findAll?: boolean;
|
|
6
6
|
include?: string[];
|
|
7
|
-
|
|
7
|
+
individualSearch?: boolean;
|
|
8
|
+
orderBy?: GenericObject<DataOrderByDirection>;
|
|
8
9
|
page?: number;
|
|
9
10
|
perPage?: number;
|
|
10
11
|
select?: string[];
|
|
@@ -16,38 +16,45 @@ class FindDto extends base_dto_1.BaseDto {
|
|
|
16
16
|
}
|
|
17
17
|
exports.FindDto = FindDto;
|
|
18
18
|
__decorate([
|
|
19
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
19
20
|
(0, class_validator_1.IsObject)(),
|
|
20
21
|
(0, class_validator_1.IsOptional)(),
|
|
21
22
|
__metadata("design:type", Object)
|
|
22
23
|
], FindDto.prototype, "filters", void 0);
|
|
23
24
|
__decorate([
|
|
24
|
-
(0, class_validator_1.IsOptional)(),
|
|
25
25
|
(0, class_validator_1.IsBooleanString)(),
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
26
27
|
__metadata("design:type", Boolean)
|
|
27
28
|
], FindDto.prototype, "findAll", void 0);
|
|
28
29
|
__decorate([
|
|
29
|
-
(0, class_validator_1.IsOptional)(),
|
|
30
30
|
(0, class_validator_1.IsArray)(),
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
31
32
|
__metadata("design:type", Array)
|
|
32
33
|
], FindDto.prototype, "include", void 0);
|
|
33
34
|
__decorate([
|
|
35
|
+
(0, class_validator_1.IsBooleanString)(),
|
|
34
36
|
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
__metadata("design:type", Boolean)
|
|
38
|
+
], FindDto.prototype, "individualSearch", void 0);
|
|
39
|
+
__decorate([
|
|
35
40
|
(0, class_validator_1.IsObject)(),
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
36
43
|
__metadata("design:type", Object)
|
|
37
44
|
], FindDto.prototype, "orderBy", void 0);
|
|
38
45
|
__decorate([
|
|
39
|
-
(0, class_validator_1.IsOptional)(),
|
|
40
46
|
(0, class_validator_1.IsNumberString)(),
|
|
47
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
48
|
__metadata("design:type", Number)
|
|
42
49
|
], FindDto.prototype, "page", void 0);
|
|
43
50
|
__decorate([
|
|
44
|
-
(0, class_validator_1.IsOptional)(),
|
|
45
51
|
(0, class_validator_1.IsNumberString)(),
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
46
53
|
__metadata("design:type", Number)
|
|
47
54
|
], FindDto.prototype, "perPage", void 0);
|
|
48
55
|
__decorate([
|
|
49
|
-
(0, class_validator_1.IsOptional)(),
|
|
50
56
|
(0, class_validator_1.IsArray)(),
|
|
57
|
+
(0, class_validator_1.IsOptional)(),
|
|
51
58
|
__metadata("design:type", Array)
|
|
52
59
|
], FindDto.prototype, "select", void 0);
|
|
53
60
|
//# sourceMappingURL=find.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/find.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"find.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/find.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAmH;AAEnH,yCAAqC;AAErC,MAAa,OAA2C,SAAQ,kBAAgB;CAkC/E;AAlCD,0BAkCC;AA9BC;IAHC,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wCACW;AAIxB;IAFC,IAAA,iCAAe,GAAE;IACjB,IAAA,4BAAU,GAAE;;wCACK;AAIlB;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;wCACM;AAInB;IAFC,IAAA,iCAAe,GAAE;IACjB,IAAA,4BAAU,GAAE;;iDACc;AAK3B;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,kCAAgB,GAAE;;wCAC2B;AAI9C;IAFC,IAAA,gCAAc,GAAE;IAChB,IAAA,4BAAU,GAAE;;qCACC;AAId;IAFC,IAAA,gCAAc,GAAE;IAChB,IAAA,4BAAU,GAAE;;wCACI;AAIjB;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;uCACK"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { DomainFindOneOptions, GenericObject
|
|
1
|
+
import { DataOrderByDirection, DomainFindOneOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
import { BaseDto } from './base.dto';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type DomainFindOneOptionsWithOptionalFilters = Omit<DomainFindOneOptions, 'filters'> & Partial<Pick<DomainFindOneOptions, 'filters'>>;
|
|
4
|
+
export declare class FindOneDto<Options extends DomainFindOneOptionsWithOptionalFilters> extends BaseDto<Options> implements DomainFindOneOptionsWithOptionalFilters {
|
|
5
|
+
filters?: GenericObject<unknown>;
|
|
5
6
|
include?: string[];
|
|
6
|
-
orderBy?: GenericObject<
|
|
7
|
+
orderBy?: GenericObject<DataOrderByDirection>;
|
|
7
8
|
select?: string[];
|
|
8
9
|
}
|
|
10
|
+
export {};
|
|
@@ -16,22 +16,25 @@ class FindOneDto extends base_dto_1.BaseDto {
|
|
|
16
16
|
}
|
|
17
17
|
exports.FindOneDto = FindOneDto;
|
|
18
18
|
__decorate([
|
|
19
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
19
20
|
(0, class_validator_1.IsObject)(),
|
|
21
|
+
(0, class_validator_1.IsOptional)(),
|
|
20
22
|
__metadata("design:type", Object)
|
|
21
23
|
], FindOneDto.prototype, "filters", void 0);
|
|
22
24
|
__decorate([
|
|
23
|
-
(0, class_validator_1.IsOptional)(),
|
|
24
25
|
(0, class_validator_1.IsArray)(),
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
25
27
|
__metadata("design:type", Array)
|
|
26
28
|
], FindOneDto.prototype, "include", void 0);
|
|
27
29
|
__decorate([
|
|
28
|
-
(0, class_validator_1.
|
|
30
|
+
(0, class_validator_1.IsNotEmptyObject)(),
|
|
29
31
|
(0, class_validator_1.IsObject)(),
|
|
32
|
+
(0, class_validator_1.IsOptional)(),
|
|
30
33
|
__metadata("design:type", Object)
|
|
31
34
|
], FindOneDto.prototype, "orderBy", void 0);
|
|
32
35
|
__decorate([
|
|
33
|
-
(0, class_validator_1.IsOptional)(),
|
|
34
36
|
(0, class_validator_1.IsArray)(),
|
|
37
|
+
(0, class_validator_1.IsOptional)(),
|
|
35
38
|
__metadata("design:type", Array)
|
|
36
39
|
], FindOneDto.prototype, "select", void 0);
|
|
37
40
|
//# sourceMappingURL=findOne.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findOne.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/findOne.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"findOne.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/findOne.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAkF;AAElF,yCAAqC;AAKrC,MAAa,UACX,SAAQ,kBAAgB;CAoBzB;AArBD,gCAqBC;AAdC;IAHC,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;2CACoB;AAIjC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;2CACM;AAKnB;IAHC,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;2CACiC;AAI9C;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;0CACK"}
|
|
@@ -20,7 +20,6 @@ __exportStar(require("./create.dto"), exports);
|
|
|
20
20
|
__exportStar(require("./delete.dto"), exports);
|
|
21
21
|
__exportStar(require("./find.dto"), exports);
|
|
22
22
|
__exportStar(require("./findOne.dto"), exports);
|
|
23
|
-
__exportStar(require("./numberItem.dto"), exports);
|
|
24
23
|
__exportStar(require("./update.dto"), exports);
|
|
25
24
|
__exportStar(require("./uploadFile.dto"), exports);
|
|
26
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entityController/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,gDAA8B;AAC9B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entityController/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,gDAA8B;AAC9B,+CAA6B;AAC7B,mDAAiC"}
|
|
@@ -2,6 +2,7 @@ import { GenericObject } from '@node-c/core';
|
|
|
2
2
|
import { BaseDto } from './base.dto';
|
|
3
3
|
import { UpdateBody, UpdateOptions } from '../rest.entity.controller.definitions';
|
|
4
4
|
export declare class UpdateDto<Entity, Options extends UpdateOptions<Entity>> extends BaseDto<Options> implements UpdateBody<Entity> {
|
|
5
|
-
data: Entity
|
|
5
|
+
data: Partial<Entity>;
|
|
6
6
|
filters: GenericObject<unknown>;
|
|
7
|
+
returnData?: boolean;
|
|
7
8
|
}
|
|
@@ -17,14 +17,19 @@ class UpdateDto extends base_dto_1.BaseDto {
|
|
|
17
17
|
exports.UpdateDto = UpdateDto;
|
|
18
18
|
__decorate([
|
|
19
19
|
(0, class_validator_1.IsDefined)(),
|
|
20
|
-
(0, class_validator_1.IsObject)(),
|
|
21
20
|
(0, class_validator_1.IsNotEmptyObject)(),
|
|
21
|
+
(0, class_validator_1.IsObject)(),
|
|
22
22
|
__metadata("design:type", Object)
|
|
23
23
|
], UpdateDto.prototype, "data", void 0);
|
|
24
24
|
__decorate([
|
|
25
25
|
(0, class_validator_1.IsDefined)(),
|
|
26
|
-
(0, class_validator_1.IsObject)(),
|
|
27
26
|
(0, class_validator_1.IsNotEmptyObject)(),
|
|
27
|
+
(0, class_validator_1.IsObject)(),
|
|
28
28
|
__metadata("design:type", Object)
|
|
29
29
|
], UpdateDto.prototype, "filters", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsBoolean)(),
|
|
33
|
+
__metadata("design:type", Boolean)
|
|
34
|
+
], UpdateDto.prototype, "returnData", void 0);
|
|
30
35
|
//# sourceMappingURL=update.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/update.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"update.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/update.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAA+F;AAE/F,yCAAqC;AAIrC,MAAa,SACX,SAAQ,kBAAgB;CAgBzB;AAjBD,8BAiBC;AAVC;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;;uCACW;AAKtB;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,kCAAgB,GAAE;IAClB,IAAA,0BAAQ,GAAE;;0CACqB;AAIhC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;6CACS"}
|
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./dto"), exports);
|
|
18
18
|
__exportStar(require("./rest.entity.controller"), exports);
|
|
19
19
|
__exportStar(require("./rest.entity.controller.definitions"), exports);
|
|
20
|
+
__exportStar(require("./rest.entity.controller.dto.definitions"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entityController/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,2DAAyC;AACzC,uEAAqD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entityController/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,2DAAyC;AACzC,uEAAqD;AACrD,2EAAyD"}
|
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
import { ValidationPipe } from '@nestjs/common';
|
|
2
|
-
import { DomainBulkCreateResult, DomainCreateResult, DomainDeleteOptions, DomainDeleteResult,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
export interface DefaultDtos<Entity> {
|
|
7
|
-
BulkCreate: BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
8
|
-
Create: BaseCreateDto<Entity, CreateOptions<Entity>>;
|
|
9
|
-
Delete: BaseDeleteDto<DomainDeleteOptions>;
|
|
10
|
-
Find: BaseFindDto<DomainFindOptions>;
|
|
11
|
-
FindOne: BaseFindOneDto<DomainFindOneOptions>;
|
|
12
|
-
Update: BaseUpdateDto<Entity, UpdateOptions<Entity>>;
|
|
13
|
-
}
|
|
14
|
-
export declare class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extends DefaultDomainEntityService<Entity>> {
|
|
1
|
+
import { LoggerService, ValidationPipe } from '@nestjs/common';
|
|
2
|
+
import { DataDefaultData, DomainBulkCreateResult, DomainCreateResult, DomainDeleteOptions, DomainDeleteResult, DomainEntityServiceDefaultData, DomainFindOneOptions, DomainFindOneResult, DomainFindOptions, DomainFindResult, DomainUpdateResult } from '@node-c/core';
|
|
3
|
+
import { BulkCreateBody, CreateBody, DefaultDomainEntityService, UpdateBody } from './rest.entity.controller.definitions';
|
|
4
|
+
import { DefaultDtos } from './rest.entity.controller.dto.definitions';
|
|
5
|
+
export declare class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>, DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>, DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>> {
|
|
15
6
|
protected domainEntityService: EntityDomainService;
|
|
7
|
+
protected logger: LoggerService;
|
|
16
8
|
protected defaultRouteMethods?: string[] | undefined;
|
|
17
9
|
inUseDefaultRoutes: {
|
|
18
10
|
[handlerName: string]: boolean;
|
|
19
11
|
};
|
|
20
|
-
constructor(domainEntityService: EntityDomainService, defaultRouteMethods?: string[] | undefined);
|
|
12
|
+
constructor(domainEntityService: EntityDomainService, logger: LoggerService, defaultRouteMethods?: string[] | undefined);
|
|
21
13
|
protected checkRoute(handlerName: string): void;
|
|
22
14
|
bulkCreate(_body: BulkCreateBody<Entity>, ..._args: unknown[]): Promise<DomainBulkCreateResult<Entity> | void>;
|
|
23
15
|
create(_body: CreateBody<Entity>, ..._args: unknown[]): Promise<DomainCreateResult<Entity> | void>;
|
|
@@ -27,7 +19,7 @@ export declare class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainServic
|
|
|
27
19
|
refreshDefaultRoutes(newDefaultRoutes?: string[]): void;
|
|
28
20
|
update(_body: UpdateBody<Entity>, ..._args: unknown[]): Promise<DomainUpdateResult<Entity> | void>;
|
|
29
21
|
}
|
|
30
|
-
export declare class RESTAPIEntityControler<Entity, EntityDomainService extends DefaultDomainEntityService<Entity>, Dto extends DefaultDtos<Entity> = DefaultDtos<Entity>> extends RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService> {
|
|
22
|
+
export declare class RESTAPIEntityControler<Entity, EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>, Dto extends DefaultDtos<Entity> = DefaultDtos<Entity>, DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>, DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>> extends RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService> {
|
|
31
23
|
protected domainEntityService: EntityDomainService;
|
|
32
24
|
protected dto: {
|
|
33
25
|
bulkCreate?: Dto['BulkCreate'];
|
|
@@ -37,7 +29,11 @@ export declare class RESTAPIEntityControler<Entity, EntityDomainService extends
|
|
|
37
29
|
findOne?: Dto['FindOne'];
|
|
38
30
|
update?: Dto['Update'];
|
|
39
31
|
};
|
|
32
|
+
protected logger: LoggerService;
|
|
40
33
|
protected defaultRouteMethods: string[];
|
|
34
|
+
protected settings: {
|
|
35
|
+
validationWhitelist?: boolean;
|
|
36
|
+
};
|
|
41
37
|
protected validationPipe: ValidationPipe;
|
|
42
38
|
constructor(domainEntityService: EntityDomainService, dto: {
|
|
43
39
|
bulkCreate?: Dto['BulkCreate'];
|
|
@@ -46,7 +42,7 @@ export declare class RESTAPIEntityControler<Entity, EntityDomainService extends
|
|
|
46
42
|
find?: Dto['Find'];
|
|
47
43
|
findOne?: Dto['FindOne'];
|
|
48
44
|
update?: Dto['Update'];
|
|
49
|
-
}, defaultRouteMethods?: string[]);
|
|
45
|
+
}, logger: LoggerService, defaultRouteMethods?: string[]);
|
|
50
46
|
bulkCreate(body: Dto['BulkCreate'], ...args: unknown[]): Promise<DomainBulkCreateResult<Entity> | void>;
|
|
51
47
|
create(body: Dto['Create'], ...args: unknown[]): Promise<DomainCreateResult<Entity> | void>;
|
|
52
48
|
delete(body: Dto['Delete'], ...args: unknown[]): Promise<DomainDeleteResult<Entity> | void>;
|
|
@@ -54,8 +50,11 @@ export declare class RESTAPIEntityControler<Entity, EntityDomainService extends
|
|
|
54
50
|
findOne(id: number | string, query: Dto['FindOne'], ...args: unknown[]): Promise<DomainFindOneResult<Entity> | void>;
|
|
55
51
|
static getDefaultDtos<EntityForDtos>(): {
|
|
56
52
|
bulkCreate: DefaultDtos<EntityForDtos>['BulkCreate'];
|
|
53
|
+
create: DefaultDtos<EntityForDtos>['Create'];
|
|
54
|
+
delete: DefaultDtos<EntityForDtos>['Delete'];
|
|
57
55
|
find: DefaultDtos<EntityForDtos>['Find'];
|
|
58
56
|
findOne: DefaultDtos<EntityForDtos>['FindOne'];
|
|
57
|
+
update: DefaultDtos<EntityForDtos>['Update'];
|
|
59
58
|
};
|
|
60
59
|
update(body: Dto['Update'], ...args: unknown[]): Promise<DomainUpdateResult<Entity> | void>;
|
|
61
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DomainBulkCreateData, DomainBulkCreateOptions, DomainCreateData, DomainCreateOptions, DomainUpdateData, DomainUpdateOptions, GenericObject } from '@node-c/core';
|
|
1
|
+
import { DataDefaultData, DataEntityService, DomainBulkCreateData, DomainBulkCreateOptions, DomainCreateData, DomainCreateOptions, DomainEntityService, DomainEntityServiceDefaultData, DomainUpdateData, DomainUpdateOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
export interface BulkCreateBody<Entity> extends DomainBulkCreateOptions {
|
|
3
3
|
data: DomainBulkCreateData<Entity>;
|
|
4
4
|
}
|
|
@@ -7,6 +7,7 @@ export interface CreateBody<Entity> extends DomainCreateOptions {
|
|
|
7
7
|
data: DomainCreateData<Entity>;
|
|
8
8
|
}
|
|
9
9
|
export type CreateOptions<Entity> = Omit<CreateBody<Entity>, 'data'>;
|
|
10
|
+
export type DefaultDomainEntityService<Entity, DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>, DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>> = DomainEntityService<Entity, DataEntityService<Entity, DataEntityServiceData>, DomainEntityServiceData, Record<string, DataEntityService<Partial<Entity>, DataDefaultData<object>>>, DataEntityServiceData>;
|
|
10
11
|
export interface UpdateBody<Entity> extends DomainUpdateOptions {
|
|
11
12
|
data: DomainUpdateData<Entity>;
|
|
12
13
|
filters: GenericObject<unknown>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DomainDeleteOptions, DomainFindOneOptions, DomainFindOptions } from '@node-c/core';
|
|
2
|
+
import { BulkCreateDto as BaseBulkCreateDto, CreateDto as BaseCreateDto, DeleteDto as BaseDeleteDto, FindDto as BaseFindDto, FindOneDto as BaseFindOneDto, UpdateDto as BaseUpdateDto } from './dto';
|
|
3
|
+
import { BulkCreateOptions, CreateOptions, UpdateOptions } from './rest.entity.controller.definitions';
|
|
4
|
+
export interface DefaultDtos<Entity> {
|
|
5
|
+
BulkCreate: BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
6
|
+
Create: BaseCreateDto<Entity, CreateOptions<Entity>>;
|
|
7
|
+
Delete: BaseDeleteDto<DomainDeleteOptions>;
|
|
8
|
+
Find: BaseFindDto<DomainFindOptions>;
|
|
9
|
+
FindOne: BaseFindOneDto<DomainFindOneOptions>;
|
|
10
|
+
Update: BaseUpdateDto<Entity, UpdateOptions<Entity>>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.entity.controller.dto.definitions.js","sourceRoot":"","sources":["../../src/entityController/rest.entity.controller.dto.definitions.ts"],"names":[],"mappings":""}
|
|
@@ -37,8 +37,9 @@ const common_1 = require("@nestjs/common");
|
|
|
37
37
|
const api_http_1 = require("@node-c/api-http");
|
|
38
38
|
const dto_1 = require("./dto");
|
|
39
39
|
let RESTAPIEntityControlerWithoutDto = class RESTAPIEntityControlerWithoutDto {
|
|
40
|
-
constructor(domainEntityService, defaultRouteMethods) {
|
|
40
|
+
constructor(domainEntityService, logger, defaultRouteMethods) {
|
|
41
41
|
this.domainEntityService = domainEntityService;
|
|
42
|
+
this.logger = logger;
|
|
42
43
|
this.defaultRouteMethods = defaultRouteMethods;
|
|
43
44
|
this.refreshDefaultRoutes();
|
|
44
45
|
}
|
|
@@ -95,7 +96,8 @@ let RESTAPIEntityControlerWithoutDto = class RESTAPIEntityControlerWithoutDto {
|
|
|
95
96
|
update(body) {
|
|
96
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
97
98
|
this.checkRoute('update');
|
|
98
|
-
|
|
99
|
+
const { data } = body, options = __rest(body, ["data"]);
|
|
100
|
+
return yield this.domainEntityService.update(data, options);
|
|
99
101
|
});
|
|
100
102
|
}
|
|
101
103
|
};
|
|
@@ -144,15 +146,18 @@ __decorate([
|
|
|
144
146
|
__metadata("design:returntype", Promise)
|
|
145
147
|
], RESTAPIEntityControlerWithoutDto.prototype, "update", null);
|
|
146
148
|
exports.RESTAPIEntityControlerWithoutDto = RESTAPIEntityControlerWithoutDto = __decorate([
|
|
147
|
-
(0, common_1.UseInterceptors)(api_http_1.
|
|
148
|
-
__metadata("design:paramtypes", [Object, Array])
|
|
149
|
+
(0, common_1.UseInterceptors)(api_http_1.HTTPAccessControlInterceptor, api_http_1.HTTPErrorInterceptor),
|
|
150
|
+
__metadata("design:paramtypes", [Object, Object, Array])
|
|
149
151
|
], RESTAPIEntityControlerWithoutDto);
|
|
150
152
|
class RESTAPIEntityControler extends RESTAPIEntityControlerWithoutDto {
|
|
151
|
-
constructor(domainEntityService, dto, defaultRouteMethods) {
|
|
152
|
-
super(domainEntityService, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
153
|
+
constructor(domainEntityService, dto, logger, defaultRouteMethods) {
|
|
154
|
+
super(domainEntityService, logger, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
153
155
|
this.domainEntityService = domainEntityService;
|
|
154
156
|
this.dto = dto;
|
|
155
|
-
this.
|
|
157
|
+
this.logger = logger;
|
|
158
|
+
this.settings = { validationWhitelist: true };
|
|
159
|
+
const { validationWhitelist } = this.settings;
|
|
160
|
+
this.validationPipe = new common_1.ValidationPipe({ whitelist: validationWhitelist });
|
|
156
161
|
}
|
|
157
162
|
bulkCreate(body, ...args) {
|
|
158
163
|
const _super = Object.create(null, {
|
|
@@ -228,8 +233,11 @@ class RESTAPIEntityControler extends RESTAPIEntityControlerWithoutDto {
|
|
|
228
233
|
static getDefaultDtos() {
|
|
229
234
|
return {
|
|
230
235
|
bulkCreate: dto_1.BulkCreateDto,
|
|
236
|
+
create: dto_1.CreateDto,
|
|
237
|
+
delete: dto_1.DeleteDto,
|
|
231
238
|
find: dto_1.FindDto,
|
|
232
|
-
findOne: dto_1.
|
|
239
|
+
findOne: dto_1.FindOneDto,
|
|
240
|
+
update: dto_1.UpdateDto
|
|
233
241
|
};
|
|
234
242
|
}
|
|
235
243
|
update(body, ...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.entity.controller.js","sourceRoot":"","sources":["../../src/entityController/rest.entity.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"rest.entity.controller.js","sourceRoot":"","sources":["../../src/entityController/rest.entity.controller.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-c/api-rest",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-beta1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc -p tsconfig.build.json",
|
|
8
|
+
"build:clean": "rm -rf dist/* && rm -f *.tsbuildinfo && npm run build",
|
|
8
9
|
"check-types": "tsc -p tsconfig.build.json --noEmit",
|
|
9
10
|
"dev": "tsc -p tsconfig.build.json --watch",
|
|
10
|
-
"
|
|
11
|
+
"lint": "eslint src",
|
|
12
|
+
"lint:fix": "eslint src --fix",
|
|
13
|
+
"publish-package": "npm run build:clean && npm publish --access public",
|
|
11
14
|
"test": "vitest --config src/vitest.config.ts",
|
|
12
15
|
"test:coverage": "vitest --config src/vitest.config.ts --coverage"
|
|
13
16
|
},
|
|
14
17
|
"dependencies": {
|
|
15
|
-
"@nestjs/common": "^
|
|
18
|
+
"@nestjs/common": "^11.1.16",
|
|
16
19
|
"class-transformer": "^0.5.1",
|
|
17
20
|
"class-validator": "^0.14.1"
|
|
18
21
|
},
|
|
19
22
|
"peerDependencies": {
|
|
20
|
-
"@node-c/api-http": "^1.0.0-
|
|
21
|
-
"@node-c/core": "^1.0.0-
|
|
23
|
+
"@node-c/api-http": "^1.0.0-beta1",
|
|
24
|
+
"@node-c/core": "^1.0.0-beta1"
|
|
22
25
|
}
|
|
23
26
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { DomainBaseAdditionalServiceOptionsOverrides,
|
|
1
|
+
import { DomainBaseAdditionalServiceOptionsOverrides, DomainDataServicesKey, GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { IsArray, IsObject, IsOptional } from 'class-validator';
|
|
3
|
+
import { IsArray, IsNotEmptyObject, IsObject, IsOptional } from 'class-validator';
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
* We need the Options type here, so we can easily extend overriden classes' BaseDto
|
|
7
7
|
*/
|
|
8
8
|
export class BaseDto<Options> {
|
|
9
|
-
@
|
|
9
|
+
@IsNotEmptyObject()
|
|
10
10
|
@IsObject()
|
|
11
|
+
@IsOptional()
|
|
11
12
|
optionsOverridesByService?: GenericObject<Partial<Options>> & DomainBaseAdditionalServiceOptionsOverrides;
|
|
12
13
|
|
|
13
14
|
@IsArray()
|
|
14
15
|
@IsOptional()
|
|
15
|
-
|
|
16
|
+
dataServices?: DomainDataServicesKey[];
|
|
16
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArrayNotEmpty, IsArray, IsDefined } from 'class-validator';
|
|
2
2
|
|
|
3
3
|
import { BaseDto } from './base.dto';
|
|
4
4
|
|
|
@@ -8,8 +8,8 @@ export class BulkCreateDto<Entity, Options extends BulkCreateOptions<Entity>>
|
|
|
8
8
|
extends BaseDto<Options>
|
|
9
9
|
implements BulkCreateBody<Entity>
|
|
10
10
|
{
|
|
11
|
+
@ArrayNotEmpty()
|
|
12
|
+
@IsArray()
|
|
11
13
|
@IsDefined()
|
|
12
|
-
|
|
13
|
-
@IsNotEmptyObject()
|
|
14
|
-
data: Entity[];
|
|
14
|
+
data: Partial<Entity>[];
|
|
15
15
|
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { DomainDeleteOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { IsDefined, IsObject } from 'class-validator';
|
|
3
|
+
import { IsBoolean, IsDefined, IsNotEmptyObject, IsObject, IsOptional } from 'class-validator';
|
|
4
4
|
|
|
5
5
|
import { BaseDto } from './base.dto';
|
|
6
6
|
|
|
7
7
|
export class DeleteDto<Options extends DomainDeleteOptions> extends BaseDto<Options> implements DomainDeleteOptions {
|
|
8
8
|
@IsDefined()
|
|
9
|
+
@IsNotEmptyObject()
|
|
9
10
|
@IsObject()
|
|
10
11
|
filters: GenericObject<unknown>;
|
|
12
|
+
|
|
13
|
+
@IsBoolean()
|
|
14
|
+
@IsOptional()
|
|
15
|
+
returnOriginalItems?: boolean;
|
|
11
16
|
}
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
import { DomainFindOptions, GenericObject
|
|
1
|
+
import { DataOrderByDirection, DomainFindOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { IsArray, IsBooleanString, IsNumberString, IsObject, IsOptional } from 'class-validator';
|
|
3
|
+
import { IsArray, IsBooleanString, IsNotEmptyObject, IsNumberString, IsObject, IsOptional } from 'class-validator';
|
|
4
4
|
|
|
5
5
|
import { BaseDto } from './base.dto';
|
|
6
6
|
|
|
7
7
|
export class FindDto<Options extends DomainFindOptions> extends BaseDto<Options> implements DomainFindOptions {
|
|
8
|
+
@IsNotEmptyObject()
|
|
8
9
|
@IsObject()
|
|
9
10
|
@IsOptional()
|
|
10
11
|
filters?: GenericObject;
|
|
11
12
|
|
|
12
|
-
@IsOptional()
|
|
13
13
|
@IsBooleanString()
|
|
14
|
+
@IsOptional()
|
|
14
15
|
findAll?: boolean;
|
|
15
16
|
|
|
16
|
-
@IsOptional()
|
|
17
17
|
@IsArray()
|
|
18
|
+
@IsOptional()
|
|
18
19
|
include?: string[];
|
|
19
20
|
|
|
21
|
+
@IsBooleanString()
|
|
20
22
|
@IsOptional()
|
|
21
|
-
|
|
22
|
-
orderBy?: GenericObject<PersistanceOrderByDirection>;
|
|
23
|
+
individualSearch?: boolean;
|
|
23
24
|
|
|
25
|
+
@IsObject()
|
|
24
26
|
@IsOptional()
|
|
27
|
+
@IsNotEmptyObject()
|
|
28
|
+
orderBy?: GenericObject<DataOrderByDirection>;
|
|
29
|
+
|
|
25
30
|
@IsNumberString()
|
|
31
|
+
@IsOptional()
|
|
26
32
|
page?: number;
|
|
27
33
|
|
|
28
|
-
@IsOptional()
|
|
29
34
|
@IsNumberString()
|
|
35
|
+
@IsOptional()
|
|
30
36
|
perPage?: number;
|
|
31
37
|
|
|
32
|
-
@IsOptional()
|
|
33
38
|
@IsArray()
|
|
39
|
+
@IsOptional()
|
|
34
40
|
select?: string[];
|
|
35
41
|
}
|
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
import { DomainFindOneOptions, GenericObject
|
|
1
|
+
import { DataOrderByDirection, DomainFindOneOptions, GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { IsArray, IsObject, IsOptional } from 'class-validator';
|
|
3
|
+
import { IsArray, IsNotEmptyObject, IsObject, IsOptional } from 'class-validator';
|
|
4
4
|
|
|
5
5
|
import { BaseDto } from './base.dto';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
filters: GenericObject<unknown>;
|
|
7
|
+
type DomainFindOneOptionsWithOptionalFilters = Omit<DomainFindOneOptions, 'filters'> &
|
|
8
|
+
Partial<Pick<DomainFindOneOptions, 'filters'>>;
|
|
10
9
|
|
|
10
|
+
export class FindOneDto<Options extends DomainFindOneOptionsWithOptionalFilters>
|
|
11
|
+
extends BaseDto<Options>
|
|
12
|
+
implements DomainFindOneOptionsWithOptionalFilters
|
|
13
|
+
{
|
|
14
|
+
@IsNotEmptyObject()
|
|
15
|
+
@IsObject()
|
|
11
16
|
@IsOptional()
|
|
17
|
+
filters?: GenericObject<unknown>;
|
|
18
|
+
|
|
12
19
|
@IsArray()
|
|
20
|
+
@IsOptional()
|
|
13
21
|
include?: string[];
|
|
14
22
|
|
|
15
|
-
@
|
|
23
|
+
@IsNotEmptyObject()
|
|
16
24
|
@IsObject()
|
|
17
|
-
orderBy?: GenericObject<PersistanceOrderByDirection>;
|
|
18
|
-
|
|
19
25
|
@IsOptional()
|
|
26
|
+
orderBy?: GenericObject<DataOrderByDirection>;
|
|
27
|
+
|
|
20
28
|
@IsArray()
|
|
29
|
+
@IsOptional()
|
|
21
30
|
select?: string[];
|
|
22
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { IsDefined, IsNotEmptyObject, IsObject } from 'class-validator';
|
|
3
|
+
import { IsBoolean, IsDefined, IsNotEmptyObject, IsObject, IsOptional } from 'class-validator';
|
|
4
4
|
|
|
5
5
|
import { BaseDto } from './base.dto';
|
|
6
6
|
|
|
@@ -11,12 +11,16 @@ export class UpdateDto<Entity, Options extends UpdateOptions<Entity>>
|
|
|
11
11
|
implements UpdateBody<Entity>
|
|
12
12
|
{
|
|
13
13
|
@IsDefined()
|
|
14
|
-
@IsObject()
|
|
15
14
|
@IsNotEmptyObject()
|
|
16
|
-
|
|
15
|
+
@IsObject()
|
|
16
|
+
data: Partial<Entity>;
|
|
17
17
|
|
|
18
18
|
@IsDefined()
|
|
19
|
-
@IsObject()
|
|
20
19
|
@IsNotEmptyObject()
|
|
20
|
+
@IsObject()
|
|
21
21
|
filters: GenericObject<unknown>;
|
|
22
|
+
|
|
23
|
+
@IsOptional()
|
|
24
|
+
@IsBoolean()
|
|
25
|
+
returnData?: boolean;
|
|
22
26
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
+
DataDefaultData,
|
|
3
|
+
DataEntityService,
|
|
2
4
|
DomainBulkCreateData,
|
|
3
5
|
DomainBulkCreateOptions,
|
|
4
6
|
DomainCreateData,
|
|
5
7
|
DomainCreateOptions,
|
|
8
|
+
DomainEntityService,
|
|
9
|
+
DomainEntityServiceDefaultData,
|
|
6
10
|
DomainUpdateData,
|
|
7
11
|
DomainUpdateOptions,
|
|
8
12
|
GenericObject
|
|
@@ -20,6 +24,19 @@ export interface CreateBody<Entity> extends DomainCreateOptions {
|
|
|
20
24
|
|
|
21
25
|
export type CreateOptions<Entity> = Omit<CreateBody<Entity>, 'data'>;
|
|
22
26
|
|
|
27
|
+
// These types and interfaces have to be here to avoid circular dependencies.
|
|
28
|
+
export type DefaultDomainEntityService<
|
|
29
|
+
Entity,
|
|
30
|
+
DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>,
|
|
31
|
+
DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>
|
|
32
|
+
> = DomainEntityService<
|
|
33
|
+
Entity,
|
|
34
|
+
DataEntityService<Entity, DataEntityServiceData>,
|
|
35
|
+
DomainEntityServiceData,
|
|
36
|
+
Record<string, DataEntityService<Partial<Entity>, DataDefaultData<object>>>,
|
|
37
|
+
DataEntityServiceData
|
|
38
|
+
>;
|
|
39
|
+
|
|
23
40
|
export interface UpdateBody<Entity> extends DomainUpdateOptions {
|
|
24
41
|
data: DomainUpdateData<Entity>;
|
|
25
42
|
filters: GenericObject<unknown>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DomainDeleteOptions, DomainFindOneOptions, DomainFindOptions } from '@node-c/core';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
BulkCreateDto as BaseBulkCreateDto,
|
|
5
|
+
CreateDto as BaseCreateDto,
|
|
6
|
+
DeleteDto as BaseDeleteDto,
|
|
7
|
+
FindDto as BaseFindDto,
|
|
8
|
+
FindOneDto as BaseFindOneDto,
|
|
9
|
+
UpdateDto as BaseUpdateDto
|
|
10
|
+
} from './dto';
|
|
11
|
+
|
|
12
|
+
import { BulkCreateOptions, CreateOptions, UpdateOptions } from './rest.entity.controller.definitions';
|
|
13
|
+
|
|
14
|
+
export interface DefaultDtos<Entity> {
|
|
15
|
+
BulkCreate: BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
16
|
+
Create: BaseCreateDto<Entity, CreateOptions<Entity>>;
|
|
17
|
+
Delete: BaseDeleteDto<DomainDeleteOptions>;
|
|
18
|
+
Find: BaseFindDto<DomainFindOptions>;
|
|
19
|
+
FindOne: BaseFindOneDto<DomainFindOneOptions>;
|
|
20
|
+
Update: BaseUpdateDto<Entity, UpdateOptions<Entity>>;
|
|
21
|
+
}
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
Get,
|
|
5
5
|
HttpException,
|
|
6
6
|
HttpStatus,
|
|
7
|
+
LoggerService,
|
|
7
8
|
Param,
|
|
8
9
|
Patch,
|
|
9
10
|
Post,
|
|
@@ -13,21 +14,20 @@ import {
|
|
|
13
14
|
ValidationPipe
|
|
14
15
|
} from '@nestjs/common';
|
|
15
16
|
|
|
16
|
-
import {
|
|
17
|
+
import { HTTPAccessControlInterceptor, HTTPErrorInterceptor } from '@node-c/api-http';
|
|
17
18
|
|
|
18
19
|
import {
|
|
20
|
+
DataDefaultData,
|
|
19
21
|
DomainBulkCreateResult,
|
|
20
22
|
DomainCreateResult,
|
|
21
23
|
DomainDeleteOptions,
|
|
22
24
|
DomainDeleteResult,
|
|
23
|
-
DomainEntityService,
|
|
24
25
|
DomainEntityServiceDefaultData,
|
|
25
26
|
DomainFindOneOptions,
|
|
26
27
|
DomainFindOneResult,
|
|
27
28
|
DomainFindOptions,
|
|
28
29
|
DomainFindResult,
|
|
29
|
-
DomainUpdateResult
|
|
30
|
-
PersistanceEntityService
|
|
30
|
+
DomainUpdateResult
|
|
31
31
|
} from '@node-c/core';
|
|
32
32
|
|
|
33
33
|
import {
|
|
@@ -40,39 +40,28 @@ import {
|
|
|
40
40
|
} from './dto';
|
|
41
41
|
import {
|
|
42
42
|
BulkCreateBody,
|
|
43
|
-
BulkCreateOptions,
|
|
44
43
|
CreateBody,
|
|
45
|
-
|
|
46
|
-
UpdateBody
|
|
47
|
-
UpdateOptions
|
|
44
|
+
DefaultDomainEntityService,
|
|
45
|
+
UpdateBody
|
|
48
46
|
} from './rest.entity.controller.definitions';
|
|
49
|
-
|
|
50
|
-
// These types and interfaces have to be here to avoid circular dependencies.
|
|
51
|
-
export type DefaultDomainEntityService<Entity> = DomainEntityService<
|
|
52
|
-
Entity,
|
|
53
|
-
PersistanceEntityService<Entity>,
|
|
54
|
-
DomainEntityServiceDefaultData<Entity>,
|
|
55
|
-
Record<string, PersistanceEntityService<Partial<Entity>>>
|
|
56
|
-
>;
|
|
57
|
-
|
|
58
|
-
export interface DefaultDtos<Entity> {
|
|
59
|
-
BulkCreate: BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
60
|
-
Create: BaseCreateDto<Entity, CreateOptions<Entity>>;
|
|
61
|
-
Delete: BaseDeleteDto<DomainDeleteOptions>;
|
|
62
|
-
Find: BaseFindDto<DomainFindOptions>;
|
|
63
|
-
FindOne: BaseFindOneDto<DomainFindOneOptions>;
|
|
64
|
-
Update: BaseUpdateDto<Entity, UpdateOptions<Entity>>;
|
|
65
|
-
}
|
|
47
|
+
import { DefaultDtos } from './rest.entity.controller.dto.definitions';
|
|
66
48
|
|
|
67
49
|
// TODO: a middleware for converting string booleans to booleans
|
|
68
|
-
@UseInterceptors(
|
|
69
|
-
export class RESTAPIEntityControlerWithoutDto<
|
|
50
|
+
@UseInterceptors(HTTPAccessControlInterceptor, HTTPErrorInterceptor)
|
|
51
|
+
export class RESTAPIEntityControlerWithoutDto<
|
|
52
|
+
Entity,
|
|
53
|
+
EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>,
|
|
54
|
+
DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>,
|
|
55
|
+
DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>
|
|
56
|
+
> {
|
|
70
57
|
inUseDefaultRoutes: { [handlerName: string]: boolean };
|
|
71
58
|
|
|
72
59
|
constructor(
|
|
73
60
|
// eslint-disable-next-line no-unused-vars
|
|
74
61
|
protected domainEntityService: EntityDomainService,
|
|
75
62
|
// eslint-disable-next-line no-unused-vars
|
|
63
|
+
protected logger: LoggerService,
|
|
64
|
+
// eslint-disable-next-line no-unused-vars
|
|
76
65
|
protected defaultRouteMethods?: string[]
|
|
77
66
|
) {
|
|
78
67
|
this.refreshDefaultRoutes();
|
|
@@ -146,21 +135,25 @@ export class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extend
|
|
|
146
135
|
@Patch()
|
|
147
136
|
async update(@Body() body: UpdateBody<Entity>): Promise<DomainUpdateResult<Entity>> {
|
|
148
137
|
this.checkRoute('update');
|
|
149
|
-
|
|
138
|
+
const { data, ...options } = body;
|
|
139
|
+
return await this.domainEntityService.update(data, options);
|
|
150
140
|
}
|
|
151
141
|
}
|
|
152
142
|
|
|
153
143
|
/*
|
|
154
144
|
* For reference on why the dto validation was done in this way - it's a limitation of Typescript itself:
|
|
155
145
|
* the compiler doesn't emit generic type metadata, making it impossible to achieve a DRY OOP base class with schema validation.
|
|
156
|
-
* At this point, it's a decade-old issue
|
|
146
|
+
* At this point, it's a decade-old issue.
|
|
157
147
|
*/
|
|
158
148
|
export class RESTAPIEntityControler<
|
|
159
149
|
Entity,
|
|
160
|
-
EntityDomainService extends DefaultDomainEntityService<Entity>,
|
|
161
|
-
Dto extends DefaultDtos<Entity> = DefaultDtos<Entity
|
|
150
|
+
EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>,
|
|
151
|
+
Dto extends DefaultDtos<Entity> = DefaultDtos<Entity>,
|
|
152
|
+
DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>,
|
|
153
|
+
DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>
|
|
162
154
|
> extends RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService> {
|
|
163
155
|
protected defaultRouteMethods: string[];
|
|
156
|
+
protected settings: { validationWhitelist?: boolean } = { validationWhitelist: true };
|
|
164
157
|
protected validationPipe: ValidationPipe;
|
|
165
158
|
|
|
166
159
|
constructor(
|
|
@@ -173,12 +166,14 @@ export class RESTAPIEntityControler<
|
|
|
173
166
|
findOne?: Dto['FindOne'];
|
|
174
167
|
update?: Dto['Update'];
|
|
175
168
|
},
|
|
169
|
+
protected logger: LoggerService,
|
|
176
170
|
defaultRouteMethods?: string[]
|
|
177
171
|
) {
|
|
178
|
-
super(domainEntityService, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
172
|
+
super(domainEntityService, logger, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
179
173
|
// const finalDto: typeof dto = {};
|
|
180
174
|
// finalDto.bulkCreate = dto?.bulkCreate || BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
181
|
-
|
|
175
|
+
const { validationWhitelist } = this.settings;
|
|
176
|
+
this.validationPipe = new ValidationPipe({ whitelist: validationWhitelist });
|
|
182
177
|
}
|
|
183
178
|
|
|
184
179
|
@Post('bulk')
|
|
@@ -250,18 +245,19 @@ export class RESTAPIEntityControler<
|
|
|
250
245
|
|
|
251
246
|
static getDefaultDtos<EntityForDtos>(): {
|
|
252
247
|
bulkCreate: DefaultDtos<EntityForDtos>['BulkCreate'];
|
|
248
|
+
create: DefaultDtos<EntityForDtos>['Create'];
|
|
249
|
+
delete: DefaultDtos<EntityForDtos>['Delete'];
|
|
253
250
|
find: DefaultDtos<EntityForDtos>['Find'];
|
|
254
251
|
findOne: DefaultDtos<EntityForDtos>['FindOne'];
|
|
252
|
+
update: DefaultDtos<EntityForDtos>['Update'];
|
|
255
253
|
} {
|
|
256
254
|
return {
|
|
257
255
|
bulkCreate: BaseBulkCreateDto as unknown as DefaultDtos<EntityForDtos>['BulkCreate'],
|
|
256
|
+
create: BaseCreateDto as unknown as DefaultDtos<EntityForDtos>['Create'],
|
|
257
|
+
delete: BaseDeleteDto as unknown as DefaultDtos<EntityForDtos>['Delete'],
|
|
258
258
|
find: BaseFindDto as unknown as DefaultDtos<EntityForDtos>['Find'],
|
|
259
|
-
findOne:
|
|
260
|
-
|
|
261
|
-
// delete: BaseDeleteDto,
|
|
262
|
-
// find: BaseFindDto,
|
|
263
|
-
// findOne: BaseFindOneDto,
|
|
264
|
-
// update: BaseUpdateDto
|
|
259
|
+
findOne: BaseFindOneDto as unknown as DefaultDtos<EntityForDtos>['FindOne'],
|
|
260
|
+
update: BaseUpdateDto as unknown as DefaultDtos<EntityForDtos>['Update']
|
|
265
261
|
};
|
|
266
262
|
}
|
|
267
263
|
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.NumberItemDto = void 0;
|
|
13
|
-
const class_validator_1 = require("class-validator");
|
|
14
|
-
class NumberItemDto {
|
|
15
|
-
}
|
|
16
|
-
exports.NumberItemDto = NumberItemDto;
|
|
17
|
-
__decorate([
|
|
18
|
-
(0, class_validator_1.IsOptional)(),
|
|
19
|
-
(0, class_validator_1.IsBoolean)(),
|
|
20
|
-
__metadata("design:type", Boolean)
|
|
21
|
-
], NumberItemDto.prototype, "deleted", void 0);
|
|
22
|
-
__decorate([
|
|
23
|
-
(0, class_validator_1.IsDefined)(),
|
|
24
|
-
(0, class_validator_1.IsNumber)(),
|
|
25
|
-
__metadata("design:type", Number)
|
|
26
|
-
], NumberItemDto.prototype, "value", void 0);
|
|
27
|
-
//# sourceMappingURL=numberItem.dto.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"numberItem.dto.js","sourceRoot":"","sources":["../../../src/entityController/dto/numberItem.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qDAA6E;AAE7E,MAAa,aAAa;CAQzB;AARD,sCAQC;AALC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;8CACM;AAIlB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAQ,GAAE;;4CACG"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { PersistanceNumberItem } from '@node-c/core';
|
|
2
|
-
import { IsBoolean, IsDefined, IsNumber, IsOptional } from 'class-validator';
|
|
3
|
-
|
|
4
|
-
export class NumberItemDto implements PersistanceNumberItem {
|
|
5
|
-
@IsOptional()
|
|
6
|
-
@IsBoolean()
|
|
7
|
-
deleted?: boolean;
|
|
8
|
-
|
|
9
|
-
@IsDefined()
|
|
10
|
-
@IsNumber()
|
|
11
|
-
value: number;
|
|
12
|
-
}
|