@node-c/api-rest 1.0.0-alpha8 → 1.0.0-beta0
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 +3 -3
- package/dist/entityController/dto/base.dto.js +4 -3
- 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 +13 -16
- 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 +10 -4
- package/dist/entityController/rest.entity.controller.js.map +1 -1
- package/package.json +7 -5
- package/src/entityController/dto/base.dto.ts +7 -6
- 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 +32 -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 {
|
|
1
|
+
import { DomainBaseAdditionalServiceOptionsOverrides, DomainDataServicesKey, GenericObject } from '@node-c/core';
|
|
2
2
|
export declare class BaseDto<Options> {
|
|
3
|
-
optionsOverridesByService?: GenericObject<Partial<Options
|
|
4
|
-
|
|
3
|
+
optionsOverridesByService?: GenericObject<Partial<Options>> & DomainBaseAdditionalServiceOptionsOverrides;
|
|
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([
|
|
24
|
+
(0, class_validator_1.IsArray)(),
|
|
23
25
|
(0, class_validator_1.IsOptional)(),
|
|
24
|
-
(0, class_validator_1.IsObject)(),
|
|
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,17 +1,8 @@
|
|
|
1
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>> {
|
|
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;
|
|
16
7
|
protected defaultRouteMethods?: string[] | undefined;
|
|
17
8
|
inUseDefaultRoutes: {
|
|
@@ -21,13 +12,13 @@ export declare class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainServic
|
|
|
21
12
|
protected checkRoute(handlerName: string): void;
|
|
22
13
|
bulkCreate(_body: BulkCreateBody<Entity>, ..._args: unknown[]): Promise<DomainBulkCreateResult<Entity> | void>;
|
|
23
14
|
create(_body: CreateBody<Entity>, ..._args: unknown[]): Promise<DomainCreateResult<Entity> | void>;
|
|
24
|
-
delete(_body: DomainDeleteOptions, ..._args: unknown[]): Promise<DomainDeleteResult | void>;
|
|
15
|
+
delete(_body: DomainDeleteOptions, ..._args: unknown[]): Promise<DomainDeleteResult<Entity> | void>;
|
|
25
16
|
find(_query: DomainFindOptions, ..._args: unknown[]): Promise<DomainFindResult<Entity> | void>;
|
|
26
17
|
findOne(_id: number | string, _query: DomainFindOneOptions, ..._args: unknown[]): Promise<DomainFindOneResult<Entity> | void>;
|
|
27
18
|
refreshDefaultRoutes(newDefaultRoutes?: string[]): void;
|
|
28
19
|
update(_body: UpdateBody<Entity>, ..._args: unknown[]): Promise<DomainUpdateResult<Entity> | void>;
|
|
29
20
|
}
|
|
30
|
-
export declare class RESTAPIEntityControler<Entity, EntityDomainService extends DefaultDomainEntityService<Entity>, Dto extends DefaultDtos<Entity> = DefaultDtos<Entity>> extends RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService> {
|
|
21
|
+
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
22
|
protected domainEntityService: EntityDomainService;
|
|
32
23
|
protected dto: {
|
|
33
24
|
bulkCreate?: Dto['BulkCreate'];
|
|
@@ -38,6 +29,9 @@ export declare class RESTAPIEntityControler<Entity, EntityDomainService extends
|
|
|
38
29
|
update?: Dto['Update'];
|
|
39
30
|
};
|
|
40
31
|
protected defaultRouteMethods: string[];
|
|
32
|
+
protected settings: {
|
|
33
|
+
validationWhitelist?: boolean;
|
|
34
|
+
};
|
|
41
35
|
protected validationPipe: ValidationPipe;
|
|
42
36
|
constructor(domainEntityService: EntityDomainService, dto: {
|
|
43
37
|
bulkCreate?: Dto['BulkCreate'];
|
|
@@ -49,13 +43,16 @@ export declare class RESTAPIEntityControler<Entity, EntityDomainService extends
|
|
|
49
43
|
}, defaultRouteMethods?: string[]);
|
|
50
44
|
bulkCreate(body: Dto['BulkCreate'], ...args: unknown[]): Promise<DomainBulkCreateResult<Entity> | void>;
|
|
51
45
|
create(body: Dto['Create'], ...args: unknown[]): Promise<DomainCreateResult<Entity> | void>;
|
|
52
|
-
delete(body: Dto['Delete'], ...args: unknown[]): Promise<DomainDeleteResult | void>;
|
|
46
|
+
delete(body: Dto['Delete'], ...args: unknown[]): Promise<DomainDeleteResult<Entity> | void>;
|
|
53
47
|
find(query: Dto['Find'], ...args: unknown[]): Promise<DomainFindResult<Entity> | void>;
|
|
54
48
|
findOne(id: number | string, query: Dto['FindOne'], ...args: unknown[]): Promise<DomainFindOneResult<Entity> | void>;
|
|
55
49
|
static getDefaultDtos<EntityForDtos>(): {
|
|
56
50
|
bulkCreate: DefaultDtos<EntityForDtos>['BulkCreate'];
|
|
51
|
+
create: DefaultDtos<EntityForDtos>['Create'];
|
|
52
|
+
delete: DefaultDtos<EntityForDtos>['Delete'];
|
|
57
53
|
find: DefaultDtos<EntityForDtos>['Find'];
|
|
58
54
|
findOne: DefaultDtos<EntityForDtos>['FindOne'];
|
|
55
|
+
update: DefaultDtos<EntityForDtos>['Update'];
|
|
59
56
|
};
|
|
60
57
|
update(body: Dto['Update'], ...args: unknown[]): Promise<DomainUpdateResult<Entity> | void>;
|
|
61
58
|
}
|
|
@@ -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":""}
|
|
@@ -95,7 +95,8 @@ let RESTAPIEntityControlerWithoutDto = class RESTAPIEntityControlerWithoutDto {
|
|
|
95
95
|
update(body) {
|
|
96
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
97
97
|
this.checkRoute('update');
|
|
98
|
-
|
|
98
|
+
const { data } = body, options = __rest(body, ["data"]);
|
|
99
|
+
return yield this.domainEntityService.update(data, options);
|
|
99
100
|
});
|
|
100
101
|
}
|
|
101
102
|
};
|
|
@@ -144,7 +145,7 @@ __decorate([
|
|
|
144
145
|
__metadata("design:returntype", Promise)
|
|
145
146
|
], RESTAPIEntityControlerWithoutDto.prototype, "update", null);
|
|
146
147
|
exports.RESTAPIEntityControlerWithoutDto = RESTAPIEntityControlerWithoutDto = __decorate([
|
|
147
|
-
(0, common_1.UseInterceptors)(api_http_1.
|
|
148
|
+
(0, common_1.UseInterceptors)(api_http_1.HTTPAccessControlInterceptor, api_http_1.HTTPErrorInterceptor),
|
|
148
149
|
__metadata("design:paramtypes", [Object, Array])
|
|
149
150
|
], RESTAPIEntityControlerWithoutDto);
|
|
150
151
|
class RESTAPIEntityControler extends RESTAPIEntityControlerWithoutDto {
|
|
@@ -152,7 +153,9 @@ class RESTAPIEntityControler extends RESTAPIEntityControlerWithoutDto {
|
|
|
152
153
|
super(domainEntityService, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
153
154
|
this.domainEntityService = domainEntityService;
|
|
154
155
|
this.dto = dto;
|
|
155
|
-
this.
|
|
156
|
+
this.settings = { validationWhitelist: true };
|
|
157
|
+
const { validationWhitelist } = this.settings;
|
|
158
|
+
this.validationPipe = new common_1.ValidationPipe({ whitelist: validationWhitelist });
|
|
156
159
|
}
|
|
157
160
|
bulkCreate(body, ...args) {
|
|
158
161
|
const _super = Object.create(null, {
|
|
@@ -228,8 +231,11 @@ class RESTAPIEntityControler extends RESTAPIEntityControlerWithoutDto {
|
|
|
228
231
|
static getDefaultDtos() {
|
|
229
232
|
return {
|
|
230
233
|
bulkCreate: dto_1.BulkCreateDto,
|
|
234
|
+
create: dto_1.CreateDto,
|
|
235
|
+
delete: dto_1.DeleteDto,
|
|
231
236
|
find: dto_1.FindDto,
|
|
232
|
-
findOne: dto_1.
|
|
237
|
+
findOne: dto_1.FindOneDto,
|
|
238
|
+
update: dto_1.UpdateDto
|
|
233
239
|
};
|
|
234
240
|
}
|
|
235
241
|
update(body, ...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.entity.controller.js","sourceRoot":"","sources":["../../src/entityController/rest.entity.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAawB;AAExB,+CAAsF;
|
|
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,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-c/api-rest",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-beta0",
|
|
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
|
+
"publish-package": "npm run build:clean && npm publish --access public",
|
|
11
13
|
"test": "vitest --config src/vitest.config.ts",
|
|
12
14
|
"test:coverage": "vitest --config src/vitest.config.ts --coverage"
|
|
13
15
|
},
|
|
14
16
|
"dependencies": {
|
|
15
|
-
"@nestjs/common": "^
|
|
17
|
+
"@nestjs/common": "^11.1.16",
|
|
16
18
|
"class-transformer": "^0.5.1",
|
|
17
19
|
"class-validator": "^0.14.1"
|
|
18
20
|
},
|
|
19
21
|
"peerDependencies": {
|
|
20
|
-
"@node-c/api-http": "^1.0.0-
|
|
21
|
-
"@node-c/core": "^1.0.0-
|
|
22
|
+
"@node-c/api-http": "^1.0.0-beta0",
|
|
23
|
+
"@node-c/core": "^1.0.0-beta0"
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainBaseAdditionalServiceOptionsOverrides, DomainDataServicesKey, GenericObject } from '@node-c/core';
|
|
2
2
|
|
|
3
|
-
import { 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
|
-
|
|
11
|
+
@IsOptional()
|
|
12
|
+
optionsOverridesByService?: GenericObject<Partial<Options>> & DomainBaseAdditionalServiceOptionsOverrides;
|
|
12
13
|
|
|
14
|
+
@IsArray()
|
|
13
15
|
@IsOptional()
|
|
14
|
-
|
|
15
|
-
persistanceServices?: DomainPersistanceServicesKey[];
|
|
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
|
+
}
|
|
@@ -13,21 +13,20 @@ import {
|
|
|
13
13
|
ValidationPipe
|
|
14
14
|
} from '@nestjs/common';
|
|
15
15
|
|
|
16
|
-
import {
|
|
16
|
+
import { HTTPAccessControlInterceptor, HTTPErrorInterceptor } from '@node-c/api-http';
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
|
+
DataDefaultData,
|
|
19
20
|
DomainBulkCreateResult,
|
|
20
21
|
DomainCreateResult,
|
|
21
22
|
DomainDeleteOptions,
|
|
22
23
|
DomainDeleteResult,
|
|
23
|
-
DomainEntityService,
|
|
24
24
|
DomainEntityServiceDefaultData,
|
|
25
25
|
DomainFindOneOptions,
|
|
26
26
|
DomainFindOneResult,
|
|
27
27
|
DomainFindOptions,
|
|
28
28
|
DomainFindResult,
|
|
29
|
-
DomainUpdateResult
|
|
30
|
-
PersistanceEntityService
|
|
29
|
+
DomainUpdateResult
|
|
31
30
|
} from '@node-c/core';
|
|
32
31
|
|
|
33
32
|
import {
|
|
@@ -40,32 +39,20 @@ import {
|
|
|
40
39
|
} from './dto';
|
|
41
40
|
import {
|
|
42
41
|
BulkCreateBody,
|
|
43
|
-
BulkCreateOptions,
|
|
44
42
|
CreateBody,
|
|
45
|
-
|
|
46
|
-
UpdateBody
|
|
47
|
-
UpdateOptions
|
|
43
|
+
DefaultDomainEntityService,
|
|
44
|
+
UpdateBody
|
|
48
45
|
} from './rest.entity.controller.definitions';
|
|
46
|
+
import { DefaultDtos } from './rest.entity.controller.dto.definitions';
|
|
49
47
|
|
|
50
|
-
//
|
|
51
|
-
|
|
48
|
+
// TODO: a middleware for converting string booleans to booleans
|
|
49
|
+
@UseInterceptors(HTTPAccessControlInterceptor, HTTPErrorInterceptor)
|
|
50
|
+
export class RESTAPIEntityControlerWithoutDto<
|
|
52
51
|
Entity,
|
|
53
|
-
|
|
54
|
-
DomainEntityServiceDefaultData<Entity>,
|
|
55
|
-
|
|
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
|
-
}
|
|
66
|
-
|
|
67
|
-
@UseInterceptors(HTTPAuthorizationInterceptor, HTTPErrorInterceptor)
|
|
68
|
-
export class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extends DefaultDomainEntityService<Entity>> {
|
|
52
|
+
EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>,
|
|
53
|
+
DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>,
|
|
54
|
+
DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>
|
|
55
|
+
> {
|
|
69
56
|
inUseDefaultRoutes: { [handlerName: string]: boolean };
|
|
70
57
|
|
|
71
58
|
constructor(
|
|
@@ -99,9 +86,9 @@ export class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extend
|
|
|
99
86
|
return await this.domainEntityService.create(data, options);
|
|
100
87
|
}
|
|
101
88
|
|
|
102
|
-
public delete(_body: DomainDeleteOptions, ..._args: unknown[]): Promise<DomainDeleteResult | void>;
|
|
89
|
+
public delete(_body: DomainDeleteOptions, ..._args: unknown[]): Promise<DomainDeleteResult<Entity> | void>;
|
|
103
90
|
@Delete()
|
|
104
|
-
async delete(@Body() body: DomainDeleteOptions): Promise<DomainDeleteResult
|
|
91
|
+
async delete(@Body() body: DomainDeleteOptions): Promise<DomainDeleteResult<Entity>> {
|
|
105
92
|
this.checkRoute('delete');
|
|
106
93
|
return await this.domainEntityService.delete(body);
|
|
107
94
|
}
|
|
@@ -145,7 +132,8 @@ export class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extend
|
|
|
145
132
|
@Patch()
|
|
146
133
|
async update(@Body() body: UpdateBody<Entity>): Promise<DomainUpdateResult<Entity>> {
|
|
147
134
|
this.checkRoute('update');
|
|
148
|
-
|
|
135
|
+
const { data, ...options } = body;
|
|
136
|
+
return await this.domainEntityService.update(data, options);
|
|
149
137
|
}
|
|
150
138
|
}
|
|
151
139
|
|
|
@@ -156,10 +144,13 @@ export class RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService extend
|
|
|
156
144
|
*/
|
|
157
145
|
export class RESTAPIEntityControler<
|
|
158
146
|
Entity,
|
|
159
|
-
EntityDomainService extends DefaultDomainEntityService<Entity>,
|
|
160
|
-
Dto extends DefaultDtos<Entity> = DefaultDtos<Entity
|
|
147
|
+
EntityDomainService extends DefaultDomainEntityService<Entity, DomainEntityServiceData, DataEntityServiceData>,
|
|
148
|
+
Dto extends DefaultDtos<Entity> = DefaultDtos<Entity>,
|
|
149
|
+
DomainEntityServiceData extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>,
|
|
150
|
+
DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>
|
|
161
151
|
> extends RESTAPIEntityControlerWithoutDto<Entity, EntityDomainService> {
|
|
162
152
|
protected defaultRouteMethods: string[];
|
|
153
|
+
protected settings: { validationWhitelist?: boolean } = { validationWhitelist: true };
|
|
163
154
|
protected validationPipe: ValidationPipe;
|
|
164
155
|
|
|
165
156
|
constructor(
|
|
@@ -177,7 +168,8 @@ export class RESTAPIEntityControler<
|
|
|
177
168
|
super(domainEntityService, Object.keys(dto || {}).concat(defaultRouteMethods || []));
|
|
178
169
|
// const finalDto: typeof dto = {};
|
|
179
170
|
// finalDto.bulkCreate = dto?.bulkCreate || BaseBulkCreateDto<Entity, BulkCreateOptions<Entity>>;
|
|
180
|
-
|
|
171
|
+
const { validationWhitelist } = this.settings;
|
|
172
|
+
this.validationPipe = new ValidationPipe({ whitelist: validationWhitelist });
|
|
181
173
|
}
|
|
182
174
|
|
|
183
175
|
@Post('bulk')
|
|
@@ -210,7 +202,7 @@ export class RESTAPIEntityControler<
|
|
|
210
202
|
}
|
|
211
203
|
|
|
212
204
|
@Delete()
|
|
213
|
-
async delete(@Body() body: Dto['Delete'], ...args: unknown[]): Promise<DomainDeleteResult | void> {
|
|
205
|
+
async delete(@Body() body: Dto['Delete'], ...args: unknown[]): Promise<DomainDeleteResult<Entity> | void> {
|
|
214
206
|
return await super.delete.apply(this, [
|
|
215
207
|
await this.validationPipe.transform(body, {
|
|
216
208
|
metatype: this.dto.delete as unknown as Type,
|
|
@@ -249,18 +241,19 @@ export class RESTAPIEntityControler<
|
|
|
249
241
|
|
|
250
242
|
static getDefaultDtos<EntityForDtos>(): {
|
|
251
243
|
bulkCreate: DefaultDtos<EntityForDtos>['BulkCreate'];
|
|
244
|
+
create: DefaultDtos<EntityForDtos>['Create'];
|
|
245
|
+
delete: DefaultDtos<EntityForDtos>['Delete'];
|
|
252
246
|
find: DefaultDtos<EntityForDtos>['Find'];
|
|
253
247
|
findOne: DefaultDtos<EntityForDtos>['FindOne'];
|
|
248
|
+
update: DefaultDtos<EntityForDtos>['Update'];
|
|
254
249
|
} {
|
|
255
250
|
return {
|
|
256
251
|
bulkCreate: BaseBulkCreateDto as unknown as DefaultDtos<EntityForDtos>['BulkCreate'],
|
|
252
|
+
create: BaseCreateDto as unknown as DefaultDtos<EntityForDtos>['Create'],
|
|
253
|
+
delete: BaseDeleteDto as unknown as DefaultDtos<EntityForDtos>['Delete'],
|
|
257
254
|
find: BaseFindDto as unknown as DefaultDtos<EntityForDtos>['Find'],
|
|
258
|
-
findOne:
|
|
259
|
-
|
|
260
|
-
// delete: BaseDeleteDto,
|
|
261
|
-
// find: BaseFindDto,
|
|
262
|
-
// findOne: BaseFindOneDto,
|
|
263
|
-
// update: BaseUpdateDto
|
|
255
|
+
findOne: BaseFindOneDto as unknown as DefaultDtos<EntityForDtos>['FindOne'],
|
|
256
|
+
update: BaseUpdateDto as unknown as DefaultDtos<EntityForDtos>['Update']
|
|
264
257
|
};
|
|
265
258
|
}
|
|
266
259
|
|
|
@@ -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
|
-
}
|