mongodb-dynamic-api 2.1.2 → 2.1.3

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +1 -1
  3. package/src/dtos/delete.presenter.d.ts +3 -0
  4. package/src/{routes/delete-one/delete-one.presenter.js → dtos/delete.presenter.js} +4 -4
  5. package/src/dtos/index.d.ts +1 -0
  6. package/src/dtos/index.js +1 -0
  7. package/src/helpers/controller-mixin.helper.d.ts +66 -0
  8. package/src/helpers/controller-mixin.helper.js +159 -0
  9. package/src/routes/create-many/create-many-controller.mixin.d.ts +1 -1
  10. package/src/routes/create-many/create-many-controller.mixin.js +6 -50
  11. package/src/routes/create-one/create-one-controller.mixin.d.ts +1 -1
  12. package/src/routes/create-one/create-one-controller.mixin.js +6 -31
  13. package/src/routes/delete-many/base-delete-many.service.d.ts +2 -2
  14. package/src/routes/delete-many/base-delete-many.service.js +2 -2
  15. package/src/routes/delete-many/delete-many-controller.mixin.d.ts +1 -1
  16. package/src/routes/delete-many/delete-many-controller.mixin.js +4 -26
  17. package/src/routes/delete-many/index.d.ts +0 -1
  18. package/src/routes/delete-many/index.js +0 -1
  19. package/src/routes/delete-one/base-delete-one.service.d.ts +2 -2
  20. package/src/routes/delete-one/base-delete-one.service.js +2 -2
  21. package/src/routes/delete-one/delete-one-controller.mixin.d.ts +1 -1
  22. package/src/routes/delete-one/delete-one-controller.mixin.js +5 -31
  23. package/src/routes/delete-one/index.d.ts +0 -1
  24. package/src/routes/delete-one/index.js +0 -1
  25. package/src/routes/duplicate-many/duplicate-many-controller.mixin.d.ts +1 -1
  26. package/src/routes/duplicate-many/duplicate-many-controller.mixin.js +6 -31
  27. package/src/routes/duplicate-one/duplicate-one-controller.mixin.d.ts +1 -1
  28. package/src/routes/duplicate-one/duplicate-one-controller.mixin.js +5 -33
  29. package/src/routes/get-many/get-many-controller.mixin.d.ts +1 -1
  30. package/src/routes/get-many/get-many-controller.mixin.js +5 -31
  31. package/src/routes/get-one/get-one-controller.mixin.d.ts +1 -1
  32. package/src/routes/get-one/get-one-controller.mixin.js +4 -33
  33. package/src/routes/replace-one/replace-one-controller.mixin.d.ts +1 -1
  34. package/src/routes/replace-one/replace-one-controller.mixin.js +6 -35
  35. package/src/routes/update-many/update-many-controller.mixin.d.ts +1 -1
  36. package/src/routes/update-many/update-many-controller.mixin.js +5 -30
  37. package/src/routes/update-one/update-one-controller.mixin.d.ts +1 -1
  38. package/src/routes/update-one/update-one-controller.mixin.js +6 -37
  39. package/src/version.json +1 -1
  40. package/tsconfig.tsbuildinfo +1 -1
  41. package/src/routes/delete-one/delete-one.presenter.d.ts +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
1
  Changelog
2
2
 
3
+ ## [2.1.3](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.1.2...v2.1.3) (2024-03-29)
4
+
3
5
  ## [2.1.2](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.1.1...v2.1.2) (2024-03-26)
4
6
 
5
7
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mongodb-dynamic-api",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "description": "Auto generated CRUD API for MongoDB using NestJS",
5
5
  "readmeFilename": "README.md",
6
6
  "main": "index.js",
@@ -0,0 +1,3 @@
1
+ export declare class DeletePresenter {
2
+ deletedCount: number;
3
+ }
@@ -9,12 +9,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DeleteOnePresenter = void 0;
12
+ exports.DeletePresenter = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
- class DeleteOnePresenter {
14
+ class DeletePresenter {
15
15
  }
16
- exports.DeleteOnePresenter = DeleteOnePresenter;
16
+ exports.DeletePresenter = DeletePresenter;
17
17
  __decorate([
18
18
  (0, swagger_1.ApiProperty)(),
19
19
  __metadata("design:type", Number)
20
- ], DeleteOnePresenter.prototype, "deletedCount", void 0);
20
+ ], DeletePresenter.prototype, "deletedCount", void 0);
@@ -1,3 +1,4 @@
1
1
  export * from './delete-many-entity.query';
2
+ export * from './delete.presenter';
2
3
  export * from './entity.param';
3
4
  export * from './entity.query';
package/src/dtos/index.js CHANGED
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./delete-many-entity.query"), exports);
18
+ __exportStar(require("./delete.presenter"), exports);
18
19
  __exportStar(require("./entity.param"), exports);
19
20
  __exportStar(require("./entity.query"), exports);
@@ -0,0 +1,66 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { EntityParam } from '../dtos';
3
+ import { DynamicApiControllerOptions, DynamicAPIRouteConfig } from '../interfaces';
4
+ import { BaseEntity } from '../models';
5
+ declare function getControllerMixinData<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: DynamicApiControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): {
6
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
7
+ displayedName: string;
8
+ description: string;
9
+ isPublic: boolean;
10
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
11
+ RouteBody: Type<any>;
12
+ RoutePresenter: Type<any>;
13
+ EntityParam?: undefined;
14
+ RouteQuery?: undefined;
15
+ } | {
16
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
17
+ displayedName: string;
18
+ description: string;
19
+ isPublic: boolean;
20
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
21
+ RoutePresenter: Type<any>;
22
+ RouteBody?: undefined;
23
+ EntityParam?: undefined;
24
+ RouteQuery?: undefined;
25
+ } | {
26
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
27
+ displayedName: string;
28
+ description: string;
29
+ isPublic: boolean;
30
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
31
+ EntityParam: typeof EntityParam;
32
+ RoutePresenter: Type<any>;
33
+ RouteBody?: undefined;
34
+ RouteQuery?: undefined;
35
+ } | {
36
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
37
+ displayedName: string;
38
+ description: string;
39
+ isPublic: boolean;
40
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
41
+ RouteBody: Type<any>;
42
+ RoutePresenter: Type<any>;
43
+ EntityParam: typeof EntityParam;
44
+ RouteQuery?: undefined;
45
+ } | {
46
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
47
+ displayedName: string;
48
+ description: string;
49
+ isPublic: boolean;
50
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
51
+ RouteQuery: Type<any>;
52
+ RoutePresenter: Type<any>;
53
+ RouteBody?: undefined;
54
+ EntityParam?: undefined;
55
+ } | {
56
+ routeType: import("../interfaces/dynamic-api-route-type.type").RouteType;
57
+ displayedName: string;
58
+ description: string;
59
+ isPublic: boolean;
60
+ abilityPredicate: import("../interfaces/dynamic-api-casl-ability.interface").RouteAbilityPredicate<Entity>;
61
+ EntityParam: typeof EntityParam;
62
+ RouteQuery: Type<any>;
63
+ RoutePresenter: Type<any>;
64
+ RouteBody?: undefined;
65
+ };
66
+ export { getControllerMixinData };
@@ -0,0 +1,159 @@
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.getControllerMixinData = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ const dtos_1 = require("../dtos");
17
+ const mixins_1 = require("../mixins");
18
+ const controller_ability_predicates_helper_1 = require("./controller-ability-predicates.helper");
19
+ const format_helper_1 = require("./format.helper");
20
+ const versioning_config_helper_1 = require("./versioning-config.helper");
21
+ function buildCreateManyBodyDTO(entity, displayedName, version, CustomBody) {
22
+ class DtoBody extends (0, mixins_1.EntityBodyMixin)(entity) {
23
+ }
24
+ Object.defineProperty(DtoBody, 'name', {
25
+ value: `${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Dto`,
26
+ writable: false,
27
+ });
28
+ class CreateManyBody {
29
+ }
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({ type: [DtoBody] }),
32
+ (0, class_validator_1.ValidateNested)({ each: true }),
33
+ (0, class_validator_1.IsInstance)(DtoBody, { each: true }),
34
+ (0, class_validator_1.ArrayMinSize)(1),
35
+ (0, class_transformer_1.Type)(() => DtoBody),
36
+ __metadata("design:type", Array)
37
+ ], CreateManyBody.prototype, "list", void 0);
38
+ class RouteBody extends (0, swagger_1.PickType)(CustomBody ?? CreateManyBody, ['list']) {
39
+ }
40
+ Object.defineProperty(RouteBody, 'name', {
41
+ value: CustomBody ? CustomBody.name : `CreateMany${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Dto`,
42
+ writable: false,
43
+ });
44
+ return RouteBody;
45
+ }
46
+ function buildDeletePresenterDTO(displayedName, version, CustomPresenter) {
47
+ class RoutePresenter extends (CustomPresenter ?? dtos_1.DeletePresenter) {
48
+ }
49
+ Object.defineProperty(RoutePresenter, 'name', {
50
+ value: CustomPresenter ? CustomPresenter.name : `Delete${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Presenter`,
51
+ writable: false,
52
+ });
53
+ return RoutePresenter;
54
+ }
55
+ function buildDefaultRouteQuery(entity, routeType, displayedName, version, CustomQuery) {
56
+ class RouteQuery extends (CustomQuery ?? dtos_1.EntityQuery) {
57
+ }
58
+ Object.defineProperty(RouteQuery, 'name', {
59
+ value: CustomQuery ? CustomQuery.name : `${routeType}${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Query`,
60
+ writable: false,
61
+ });
62
+ return RouteQuery;
63
+ }
64
+ function buildDefaultRouteBody(entity, routeType, displayedName, version, CustomBody) {
65
+ const optionalBody = routeType !== 'CreateOne' && routeType !== 'ReplaceOne';
66
+ class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity, optionalBody)) {
67
+ }
68
+ Object.defineProperty(RouteBody, 'name', {
69
+ value: CustomBody ? CustomBody.name : `${routeType}${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Dto`,
70
+ writable: false,
71
+ });
72
+ return RouteBody;
73
+ }
74
+ function buildDefaultRoutePresenter(entity, routeType, displayedName, version, CustomPresenter) {
75
+ class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
76
+ }
77
+ Object.defineProperty(RoutePresenter, 'name', {
78
+ value: CustomPresenter ? CustomPresenter.name : `${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Presenter`,
79
+ writable: false,
80
+ });
81
+ return RoutePresenter;
82
+ }
83
+ function getDTOsByRouteType(entity, routeType, displayedName, version, dTOs) {
84
+ const { query: CustomQuery, body: CustomBody, presenter: CustomPresenter, } = dTOs ?? {};
85
+ Object.defineProperty(dtos_1.EntityParam, 'name', {
86
+ value: `${displayedName}${(0, versioning_config_helper_1.addVersionSuffix)(version)}Param`,
87
+ writable: false,
88
+ });
89
+ const RouteQuery = buildDefaultRouteQuery(entity, routeType, displayedName, version, CustomQuery);
90
+ const RouteBody = buildDefaultRouteBody(entity, routeType, displayedName, version, CustomBody);
91
+ const RoutePresenter = buildDefaultRoutePresenter(entity, routeType, displayedName, version, CustomPresenter);
92
+ switch (routeType) {
93
+ case 'CreateMany':
94
+ return {
95
+ RouteBody: buildCreateManyBodyDTO(entity, displayedName, version, CustomBody),
96
+ RoutePresenter,
97
+ };
98
+ case 'DeleteMany':
99
+ return {
100
+ RoutePresenter: buildDeletePresenterDTO(displayedName, version, CustomPresenter),
101
+ };
102
+ case 'DeleteOne':
103
+ return {
104
+ EntityParam: dtos_1.EntityParam,
105
+ RoutePresenter: buildDeletePresenterDTO(displayedName, version, CustomPresenter),
106
+ };
107
+ case 'CreateOne':
108
+ case 'DuplicateMany':
109
+ case 'UpdateMany':
110
+ return {
111
+ RouteBody,
112
+ RoutePresenter,
113
+ };
114
+ case 'DuplicateOne':
115
+ case 'ReplaceOne':
116
+ case 'UpdateOne':
117
+ return {
118
+ RouteBody,
119
+ RoutePresenter,
120
+ EntityParam: dtos_1.EntityParam,
121
+ };
122
+ case 'GetMany':
123
+ return {
124
+ RouteQuery,
125
+ RoutePresenter,
126
+ };
127
+ case 'GetOne':
128
+ return {
129
+ EntityParam: dtos_1.EntityParam,
130
+ RouteQuery,
131
+ RoutePresenter,
132
+ };
133
+ default:
134
+ throw new Error(`Route type ${routeType} is not supported`);
135
+ }
136
+ }
137
+ function getControllerMixinData(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
138
+ const displayedName = (0, format_helper_1.getFormattedApiTag)(apiTag, entity.name);
139
+ let isPublic;
140
+ if (typeof isPublicRoute === 'boolean') {
141
+ isPublic = isPublicRoute;
142
+ }
143
+ else if (typeof isPublicController === 'boolean') {
144
+ isPublic = isPublicController;
145
+ }
146
+ else {
147
+ isPublic = false;
148
+ }
149
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
150
+ return {
151
+ ...getDTOsByRouteType(entity, routeType, displayedName, version, dTOs),
152
+ routeType,
153
+ displayedName,
154
+ description,
155
+ isPublic,
156
+ abilityPredicate,
157
+ };
158
+ }
159
+ exports.getControllerMixinData = getControllerMixinData;
@@ -2,5 +2,5 @@ import { Type } from '@nestjs/common';
2
2
  import { DynamicApiControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { CreateManyControllerConstructor } from './create-many-controller.interface';
5
- declare function CreateManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: DynamicApiControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): CreateManyControllerConstructor<Entity>;
5
+ declare function CreateManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: DynamicApiControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string): CreateManyControllerConstructor<Entity>;
6
6
  export { CreateManyControllerMixin };
@@ -14,62 +14,18 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CreateManyControllerMixin = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
- const swagger_1 = require("@nestjs/swagger");
18
- const class_transformer_1 = require("class-transformer");
19
- const class_validator_1 = require("class-validator");
20
17
  const builders_1 = require("../../builders");
21
18
  const decorators_1 = require("../../decorators");
22
19
  const helpers_1 = require("../../helpers");
23
- const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
+ const controller_mixin_helper_1 = require("../../helpers/controller-mixin.helper");
24
21
  const mixins_1 = require("../../mixins");
25
- function CreateManyControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
26
- const displayedName = (0, helpers_1.getFormattedApiTag)(apiTag, entity.name);
27
- const { body: CustomBody, presenter: CustomPresenter } = dTOs ?? {};
28
- let isPublic;
29
- if (typeof isPublicRoute === 'boolean') {
30
- isPublic = isPublicRoute;
31
- }
32
- else if (typeof isPublicController === 'boolean') {
33
- isPublic = isPublicController;
34
- }
35
- else {
36
- isPublic = false;
37
- }
38
- class DtoBody extends (0, mixins_1.EntityBodyMixin)(entity) {
39
- }
40
- Object.defineProperty(DtoBody, 'name', {
41
- value: `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Dto`,
42
- writable: false,
43
- });
44
- class CreateManyBody {
45
- }
46
- __decorate([
47
- (0, swagger_1.ApiProperty)({ type: [DtoBody] }),
48
- (0, class_validator_1.ValidateNested)({ each: true }),
49
- (0, class_validator_1.IsInstance)(DtoBody, { each: true }),
50
- (0, class_validator_1.ArrayMinSize)(1),
51
- (0, class_transformer_1.Type)(() => DtoBody),
52
- __metadata("design:type", Array)
53
- ], CreateManyBody.prototype, "list", void 0);
54
- class RouteBody extends (0, swagger_1.PickType)(CustomBody ?? CreateManyBody, ['list']) {
55
- }
56
- Object.defineProperty(RouteBody, 'name', {
57
- value: CustomBody ? CustomBody.name : `CreateMany${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Dto`,
58
- writable: false,
59
- });
60
- class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
61
- }
62
- Object.defineProperty(RoutePresenter, 'name', {
63
- value: CustomPresenter ? CustomPresenter.name : `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
64
- writable: false,
65
- });
66
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateMany', entity, version, description, isPublic, {
67
- param: undefined,
68
- query: undefined,
22
+ function CreateManyControllerMixin(entity, controllerOptions, routeConfig, version) {
23
+ var _a;
24
+ const { routeType, description, isPublic, RouteBody, RoutePresenter, abilityPredicate, } = (0, controller_mixin_helper_1.getControllerMixinData)(entity, controllerOptions, routeConfig, version);
25
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder(routeType, entity, version, description, isPublic, {
69
26
  body: RouteBody,
70
27
  presenter: RoutePresenter,
71
28
  });
72
- const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
73
29
  class CreateManyPoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
74
30
  }
75
31
  class BaseCreateManyController {
@@ -87,7 +43,7 @@ function CreateManyControllerMixin(entity, { path, apiTag, isPublic: isPublicCon
87
43
  (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
88
44
  __param(0, (0, common_1.Body)()),
89
45
  __metadata("design:type", Function),
90
- __metadata("design:paramtypes", [RouteBody]),
46
+ __metadata("design:paramtypes", [typeof (_a = typeof RouteBody !== "undefined" && RouteBody) === "function" ? _a : Object]),
91
47
  __metadata("design:returntype", Promise)
92
48
  ], BaseCreateManyController.prototype, "createMany", null);
93
49
  Object.defineProperty(BaseCreateManyController, 'name', {
@@ -2,5 +2,5 @@ import { Type } from '@nestjs/common';
2
2
  import { DynamicApiControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { CreateOneControllerConstructor } from './create-one-controller.interface';
5
- declare function CreateOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: DynamicApiControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): CreateOneControllerConstructor<Entity>;
5
+ declare function CreateOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: DynamicApiControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string): CreateOneControllerConstructor<Entity>;
6
6
  export { CreateOneControllerMixin };
@@ -17,40 +17,15 @@ const common_1 = require("@nestjs/common");
17
17
  const builders_1 = require("../../builders");
18
18
  const decorators_1 = require("../../decorators");
19
19
  const helpers_1 = require("../../helpers");
20
- const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
+ const controller_mixin_helper_1 = require("../../helpers/controller-mixin.helper");
21
21
  const mixins_1 = require("../../mixins");
22
- function CreateOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
23
- const displayedName = (0, helpers_1.getFormattedApiTag)(apiTag, entity.name);
24
- const { body: CustomBody, presenter: CustomPresenter } = dTOs ?? {};
25
- let isPublic;
26
- if (typeof isPublicRoute === 'boolean') {
27
- isPublic = isPublicRoute;
28
- }
29
- else if (typeof isPublicController === 'boolean') {
30
- isPublic = isPublicController;
31
- }
32
- else {
33
- isPublic = false;
34
- }
35
- class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity)) {
36
- }
37
- Object.defineProperty(RouteBody, 'name', {
38
- value: CustomBody ? CustomBody.name : `CreateOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Dto`,
39
- writable: false,
40
- });
41
- class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
42
- }
43
- Object.defineProperty(RoutePresenter, 'name', {
44
- value: CustomPresenter ? CustomPresenter.name : `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
45
- writable: false,
46
- });
47
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateOne', entity, version, description, isPublic, {
48
- param: undefined,
49
- query: undefined,
22
+ function CreateOneControllerMixin(entity, controllerOptions, routeConfig, version) {
23
+ var _a;
24
+ const { routeType, description, isPublic, RouteBody, RoutePresenter, abilityPredicate, } = (0, controller_mixin_helper_1.getControllerMixinData)(entity, controllerOptions, routeConfig, version);
25
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder(routeType, entity, version, description, isPublic, {
50
26
  body: RouteBody,
51
27
  presenter: RoutePresenter,
52
28
  });
53
- const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
54
29
  class CreateOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
55
30
  }
56
31
  class BaseCreateOneController {
@@ -68,7 +43,7 @@ function CreateOneControllerMixin(entity, { path, apiTag, isPublic: isPublicCont
68
43
  (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
69
44
  __param(0, (0, common_1.Body)()),
70
45
  __metadata("design:type", Function),
71
- __metadata("design:paramtypes", [RouteBody]),
46
+ __metadata("design:paramtypes", [typeof (_a = typeof RouteBody !== "undefined" && RouteBody) === "function" ? _a : Object]),
72
47
  __metadata("design:returntype", Promise)
73
48
  ], BaseCreateOneController.prototype, "createOne", null);
74
49
  Object.defineProperty(BaseCreateOneController, 'name', {
@@ -23,12 +23,12 @@
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import { Model } from 'mongoose';
26
+ import { DeletePresenter } from '../../dtos';
26
27
  import { BaseEntity } from '../../models';
27
28
  import { BaseService } from '../../services';
28
29
  import { DeleteManyService } from './delete-many-service.interface';
29
- import { DeleteManyPresenter } from './delete-many.presenter';
30
30
  export declare abstract class BaseDeleteManyService<Entity extends BaseEntity> extends BaseService<Entity> implements DeleteManyService<Entity> {
31
31
  protected readonly model: Model<Entity>;
32
32
  protected constructor(model: Model<Entity>);
33
- deleteMany(ids: string[]): Promise<DeleteManyPresenter>;
33
+ deleteMany(ids: string[]): Promise<DeletePresenter>;
34
34
  }
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseDeleteManyService = void 0;
4
4
  const builder_pattern_1 = require("builder-pattern");
5
+ const dtos_1 = require("../../dtos");
5
6
  const services_1 = require("../../services");
6
- const delete_many_presenter_1 = require("./delete-many.presenter");
7
7
  class BaseDeleteManyService extends services_1.BaseService {
8
8
  constructor(model) {
9
9
  super(model);
@@ -23,7 +23,7 @@ class BaseDeleteManyService extends services_1.BaseService {
23
23
  else {
24
24
  op = await this.model.deleteMany({ _id: { $in: ids } }).exec();
25
25
  }
26
- return (0, builder_pattern_1.Builder)(delete_many_presenter_1.DeleteManyPresenter).deletedCount(op.deletedCount).build();
26
+ return (0, builder_pattern_1.Builder)(dtos_1.DeletePresenter).deletedCount(op.deletedCount).build();
27
27
  }
28
28
  }
29
29
  exports.BaseDeleteManyService = BaseDeleteManyService;
@@ -2,5 +2,5 @@ import { Type } from '@nestjs/common';
2
2
  import { DynamicApiControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { DeleteManyControllerConstructor } from './delete-many-controller.interface';
5
- declare function DeleteManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: DynamicApiControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): DeleteManyControllerConstructor<Entity>;
5
+ declare function DeleteManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: DynamicApiControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string): DeleteManyControllerConstructor<Entity>;
6
6
  export { DeleteManyControllerMixin };
@@ -17,35 +17,13 @@ const common_1 = require("@nestjs/common");
17
17
  const builders_1 = require("../../builders");
18
18
  const decorators_1 = require("../../decorators");
19
19
  const helpers_1 = require("../../helpers");
20
- const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
+ const controller_mixin_helper_1 = require("../../helpers/controller-mixin.helper");
21
21
  const mixins_1 = require("../../mixins");
22
- const delete_many_presenter_1 = require("./delete-many.presenter");
23
- function DeleteManyControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
24
- const displayedName = (0, helpers_1.getFormattedApiTag)(apiTag, entity.name);
25
- const { presenter: CustomPresenter } = dTOs ?? {};
26
- let isPublic;
27
- if (typeof isPublicRoute === 'boolean') {
28
- isPublic = isPublicRoute;
29
- }
30
- else if (typeof isPublicController === 'boolean') {
31
- isPublic = isPublicController;
32
- }
33
- else {
34
- isPublic = false;
35
- }
36
- class RoutePresenter extends (CustomPresenter ?? delete_many_presenter_1.DeleteManyPresenter) {
37
- }
38
- Object.defineProperty(RoutePresenter, 'name', {
39
- value: CustomPresenter ? CustomPresenter.name : `DeleteMany${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
40
- writable: false,
41
- });
42
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DeleteMany', entity, version, description, isPublic, {
43
- param: undefined,
44
- query: undefined,
45
- body: undefined,
22
+ function DeleteManyControllerMixin(entity, controllerOptions, routeConfig, version) {
23
+ const { routeType, description, isPublic, RoutePresenter, abilityPredicate, } = (0, controller_mixin_helper_1.getControllerMixinData)(entity, controllerOptions, routeConfig, version);
24
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder(routeType, entity, version, description, isPublic, {
46
25
  presenter: RoutePresenter,
47
26
  });
48
- const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
49
27
  class DeleteManyPoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
50
28
  }
51
29
  class BaseDeleteManyController {
@@ -1,7 +1,6 @@
1
1
  export * from './base-delete-many.service';
2
2
  export * from './delete-many.helper';
3
3
  export * from './delete-many.module';
4
- export * from './delete-many.presenter';
5
4
  export * from './delete-many-controller.interface';
6
5
  export * from './delete-many-controller.mixin';
7
6
  export * from './delete-many-service.interface';
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./base-delete-many.service"), exports);
18
18
  __exportStar(require("./delete-many.helper"), exports);
19
19
  __exportStar(require("./delete-many.module"), exports);
20
- __exportStar(require("./delete-many.presenter"), exports);
21
20
  __exportStar(require("./delete-many-controller.interface"), exports);
22
21
  __exportStar(require("./delete-many-controller.mixin"), exports);
23
22
  __exportStar(require("./delete-many-service.interface"), exports);
@@ -23,12 +23,12 @@
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import { Model } from 'mongoose';
26
+ import { DeletePresenter } from '../../dtos';
26
27
  import { BaseEntity } from '../../models';
27
28
  import { BaseService } from '../../services';
28
29
  import { DeleteOneService } from './delete-one-service.interface';
29
- import { DeleteOnePresenter } from './delete-one.presenter';
30
30
  export declare abstract class BaseDeleteOneService<Entity extends BaseEntity> extends BaseService<Entity> implements DeleteOneService<Entity> {
31
31
  protected readonly model: Model<Entity>;
32
32
  protected constructor(model: Model<Entity>);
33
- deleteOne(id: string): Promise<DeleteOnePresenter>;
33
+ deleteOne(id: string): Promise<DeletePresenter>;
34
34
  }
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseDeleteOneService = void 0;
4
4
  const builder_pattern_1 = require("builder-pattern");
5
+ const dtos_1 = require("../../dtos");
5
6
  const services_1 = require("../../services");
6
- const delete_one_presenter_1 = require("./delete-one.presenter");
7
7
  class BaseDeleteOneService extends services_1.BaseService {
8
8
  constructor(model) {
9
9
  super(model);
@@ -23,7 +23,7 @@ class BaseDeleteOneService extends services_1.BaseService {
23
23
  else {
24
24
  op = await this.model.deleteOne({ _id: id }).exec();
25
25
  }
26
- return (0, builder_pattern_1.Builder)(delete_one_presenter_1.DeleteOnePresenter).deletedCount(op.deletedCount).build();
26
+ return (0, builder_pattern_1.Builder)(dtos_1.DeletePresenter).deletedCount(op.deletedCount).build();
27
27
  }
28
28
  }
29
29
  exports.BaseDeleteOneService = BaseDeleteOneService;
@@ -2,5 +2,5 @@ import { Type } from '@nestjs/common';
2
2
  import { DynamicApiControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { DeleteOneControllerConstructor } from './delete-one-controller.interface';
5
- declare function DeleteOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: DynamicApiControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): DeleteOneControllerConstructor<Entity>;
5
+ declare function DeleteOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: DynamicApiControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string): DeleteOneControllerConstructor<Entity>;
6
6
  export { DeleteOneControllerMixin };
@@ -16,41 +16,15 @@ exports.DeleteOneControllerMixin = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const builders_1 = require("../../builders");
18
18
  const decorators_1 = require("../../decorators");
19
- const dtos_1 = require("../../dtos");
20
19
  const helpers_1 = require("../../helpers");
21
- const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
+ const controller_mixin_helper_1 = require("../../helpers/controller-mixin.helper");
22
21
  const mixins_1 = require("../../mixins");
23
- const delete_one_presenter_1 = require("./delete-one.presenter");
24
- function DeleteOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
25
- const displayedName = (0, helpers_1.getFormattedApiTag)(apiTag, entity.name);
26
- const { presenter: CustomPresenter } = dTOs ?? {};
27
- let isPublic;
28
- if (typeof isPublicRoute === 'boolean') {
29
- isPublic = isPublicRoute;
30
- }
31
- else if (typeof isPublicController === 'boolean') {
32
- isPublic = isPublicController;
33
- }
34
- else {
35
- isPublic = false;
36
- }
37
- Object.defineProperty(dtos_1.EntityParam, 'name', {
38
- value: `DeleteOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Param`,
39
- writable: false,
40
- });
41
- class RoutePresenter extends (CustomPresenter ?? delete_one_presenter_1.DeleteOnePresenter) {
42
- }
43
- Object.defineProperty(RoutePresenter, 'name', {
44
- value: CustomPresenter ? CustomPresenter.name : `DeleteOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
45
- writable: false,
46
- });
47
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DeleteOne', entity, version, description, isPublic, {
48
- param: dtos_1.EntityParam,
49
- query: undefined,
50
- body: undefined,
22
+ function DeleteOneControllerMixin(entity, controllerOptions, routeConfig, version) {
23
+ const { routeType, description, isPublic, EntityParam, RoutePresenter, abilityPredicate, } = (0, controller_mixin_helper_1.getControllerMixinData)(entity, controllerOptions, routeConfig, version);
24
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder(routeType, entity, version, description, isPublic, {
25
+ param: EntityParam,
51
26
  presenter: RoutePresenter,
52
27
  });
53
- const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
54
28
  class DeleteOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
55
29
  }
56
30
  class BaseDeleteOneController {
@@ -1,7 +1,6 @@
1
1
  export * from './base-delete-one.service';
2
2
  export * from './delete-one.helper';
3
3
  export * from './delete-one.module';
4
- export * from './delete-one.presenter';
5
4
  export * from './delete-one-controller.interface';
6
5
  export * from './delete-one-controller.mixin';
7
6
  export * from './delete-one-service.interface';