mongodb-dynamic-api 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +23 -14
  2. package/README.md +250 -22
  3. package/package.json +3 -3
  4. package/src/builders/route-decorators.builder.d.ts +3 -1
  5. package/src/builders/route-decorators.builder.js +16 -4
  6. package/src/dtos/delete-many-entity.query.d.ts +3 -0
  7. package/src/dtos/delete-many-entity.query.js +24 -0
  8. package/src/dtos/index.d.ts +1 -0
  9. package/src/dtos/index.js +1 -0
  10. package/src/dynamic-api.module.d.ts +1 -1
  11. package/src/dynamic-api.module.js +32 -13
  12. package/src/helpers/format.helper.d.ts +2 -0
  13. package/src/helpers/format.helper.js +12 -0
  14. package/src/helpers/index.d.ts +5 -1
  15. package/src/helpers/index.js +5 -1
  16. package/src/helpers/route-description.helper.d.ts +3 -0
  17. package/src/helpers/route-description.helper.js +34 -0
  18. package/src/helpers/swagger-config.helper.d.ts +4 -0
  19. package/src/helpers/{config.helper.js → swagger-config.helper.js} +36 -21
  20. package/src/helpers/validation-config.helper.d.ts +3 -0
  21. package/src/helpers/validation-config.helper.js +8 -0
  22. package/src/helpers/versioning-config.helper.d.ts +4 -0
  23. package/src/helpers/versioning-config.helper.js +15 -0
  24. package/src/{helpers/config.helper.d.ts → interfaces/dynamic-api-swagger-options.type.d.ts} +23 -15
  25. package/src/interfaces/dynamic-api-swagger-options.type.js +2 -0
  26. package/src/interfaces/index.d.ts +1 -1
  27. package/src/interfaces/index.js +1 -1
  28. package/src/interfaces/route-config.interface.d.ts +1 -1
  29. package/src/modules/create-many/create-many-controller.mixin.js +6 -6
  30. package/src/modules/create-many/create-many.helper.d.ts +1 -1
  31. package/src/modules/create-many/create-many.helper.js +8 -7
  32. package/src/modules/create-many/create-many.module.d.ts +2 -2
  33. package/src/modules/create-many/create-many.module.js +2 -2
  34. package/src/modules/create-one/create-one-controller.mixin.js +5 -5
  35. package/src/modules/create-one/create-one.helper.d.ts +1 -1
  36. package/src/modules/create-one/create-one.helper.js +8 -7
  37. package/src/modules/create-one/create-one.module.d.ts +2 -2
  38. package/src/modules/create-one/create-one.module.js +2 -2
  39. package/src/modules/delete-many/base-delete-many.service.d.ts +34 -0
  40. package/src/modules/delete-many/base-delete-many.service.js +29 -0
  41. package/src/modules/delete-many/delete-many-controller.interface.d.ts +8 -0
  42. package/src/modules/delete-many/delete-many-controller.interface.js +2 -0
  43. package/src/modules/delete-many/delete-many-controller.mixin.d.ts +6 -0
  44. package/src/modules/delete-many/delete-many-controller.mixin.js +54 -0
  45. package/src/modules/delete-many/delete-many-service.interface.d.ts +6 -0
  46. package/src/modules/delete-many/delete-many-service.interface.js +2 -0
  47. package/src/modules/delete-many/delete-many.helper.d.ts +7 -0
  48. package/src/modules/delete-many/delete-many.helper.js +69 -0
  49. package/src/modules/delete-many/delete-many.module.d.ts +6 -0
  50. package/src/modules/delete-many/delete-many.module.js +28 -0
  51. package/src/modules/delete-many/delete-many.presenter.d.ts +3 -0
  52. package/src/modules/delete-many/delete-many.presenter.js +20 -0
  53. package/src/modules/delete-many/index.d.ts +7 -0
  54. package/src/modules/delete-many/index.js +23 -0
  55. package/src/modules/delete-one/delete-one-controller.mixin.js +5 -5
  56. package/src/modules/delete-one/delete-one.helper.d.ts +1 -1
  57. package/src/modules/delete-one/delete-one.helper.js +8 -7
  58. package/src/modules/delete-one/delete-one.module.d.ts +2 -2
  59. package/src/modules/delete-one/delete-one.module.js +2 -2
  60. package/src/modules/duplicate-many/base-duplicate-many.service.d.ts +33 -0
  61. package/src/modules/duplicate-many/base-duplicate-many.service.js +43 -0
  62. package/src/modules/duplicate-many/duplicate-many-controller.interface.d.ts +7 -0
  63. package/src/modules/duplicate-many/duplicate-many-controller.interface.js +2 -0
  64. package/src/modules/duplicate-many/duplicate-many-controller.mixin.d.ts +6 -0
  65. package/src/modules/duplicate-many/duplicate-many-controller.mixin.js +63 -0
  66. package/src/modules/duplicate-many/duplicate-many-service.interface.d.ts +5 -0
  67. package/src/modules/duplicate-many/duplicate-many-service.interface.js +2 -0
  68. package/src/modules/duplicate-many/duplicate-many.helper.d.ts +7 -0
  69. package/src/modules/duplicate-many/duplicate-many.helper.js +69 -0
  70. package/src/modules/duplicate-many/duplicate-many.module.d.ts +6 -0
  71. package/src/modules/duplicate-many/duplicate-many.module.js +28 -0
  72. package/src/modules/duplicate-many/index.d.ts +6 -0
  73. package/src/modules/duplicate-many/index.js +22 -0
  74. package/src/modules/duplicate-one/duplicate-one-controller.mixin.js +6 -6
  75. package/src/modules/duplicate-one/duplicate-one.helper.d.ts +1 -1
  76. package/src/modules/duplicate-one/duplicate-one.helper.js +8 -7
  77. package/src/modules/duplicate-one/duplicate-one.module.d.ts +2 -2
  78. package/src/modules/duplicate-one/duplicate-one.module.js +2 -2
  79. package/src/modules/get-many/get-many-controller.mixin.js +5 -5
  80. package/src/modules/get-many/get-many.helper.d.ts +1 -1
  81. package/src/modules/get-many/get-many.helper.js +8 -7
  82. package/src/modules/get-many/get-many.module.d.ts +2 -2
  83. package/src/modules/get-many/get-many.module.js +2 -2
  84. package/src/modules/get-one/get-one-controller.mixin.js +6 -6
  85. package/src/modules/get-one/get-one.helper.d.ts +1 -1
  86. package/src/modules/get-one/get-one.helper.js +8 -7
  87. package/src/modules/get-one/get-one.module.d.ts +2 -2
  88. package/src/modules/get-one/get-one.module.js +2 -2
  89. package/src/modules/replace-one/replace-one-controller.mixin.js +6 -6
  90. package/src/modules/replace-one/replace-one.helper.d.ts +1 -1
  91. package/src/modules/replace-one/replace-one.helper.js +8 -7
  92. package/src/modules/replace-one/replace-one.module.d.ts +2 -2
  93. package/src/modules/replace-one/replace-one.module.js +2 -2
  94. package/src/modules/update-many/base-update-many.service.d.ts +33 -0
  95. package/src/modules/update-many/base-update-many.service.js +32 -0
  96. package/src/modules/update-many/index.d.ts +6 -0
  97. package/src/modules/update-many/index.js +22 -0
  98. package/src/modules/update-many/update-many-controller.interface.d.ts +7 -0
  99. package/src/modules/update-many/update-many-controller.interface.js +2 -0
  100. package/src/modules/update-many/update-many-controller.mixin.d.ts +6 -0
  101. package/src/modules/update-many/update-many-controller.mixin.js +63 -0
  102. package/src/modules/update-many/update-many-service.interface.d.ts +5 -0
  103. package/src/modules/update-many/update-many-service.interface.js +2 -0
  104. package/src/modules/update-many/update-many.helper.d.ts +7 -0
  105. package/src/modules/update-many/update-many.helper.js +69 -0
  106. package/src/modules/update-many/update-many.module.d.ts +6 -0
  107. package/src/modules/update-many/update-many.module.js +28 -0
  108. package/src/modules/update-one/update-one-controller.mixin.js +6 -6
  109. package/src/modules/update-one/update-one.helper.d.ts +1 -1
  110. package/src/modules/update-one/update-one.helper.js +8 -7
  111. package/src/modules/update-one/update-one.module.d.ts +2 -2
  112. package/src/modules/update-one/update-one.module.js +2 -2
  113. package/src/version.json +1 -1
  114. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,28 @@
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 DuplicateManyModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DuplicateManyModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const duplicate_many_helper_1 = require("./duplicate-many.helper");
13
+ let DuplicateManyModule = DuplicateManyModule_1 = class DuplicateManyModule {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
+ const controller = (0, duplicate_many_helper_1.createDuplicateManyController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
16
+ const ServiceProvider = (0, duplicate_many_helper_1.createDuplicateManyServiceProvider)(entity, version);
17
+ return {
18
+ module: DuplicateManyModule_1,
19
+ imports: [databaseModule],
20
+ controllers: [controller],
21
+ providers: [ServiceProvider],
22
+ };
23
+ }
24
+ };
25
+ exports.DuplicateManyModule = DuplicateManyModule;
26
+ exports.DuplicateManyModule = DuplicateManyModule = DuplicateManyModule_1 = __decorate([
27
+ (0, common_1.Module)({})
28
+ ], DuplicateManyModule);
@@ -0,0 +1,6 @@
1
+ export * from './base-duplicate-many.service';
2
+ export * from './duplicate-many.helper';
3
+ export * from './duplicate-many.module';
4
+ export * from './duplicate-many-controller.interface';
5
+ export * from './duplicate-many-controller.mixin';
6
+ export * from './duplicate-many-service.interface';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base-duplicate-many.service"), exports);
18
+ __exportStar(require("./duplicate-many.helper"), exports);
19
+ __exportStar(require("./duplicate-many.module"), exports);
20
+ __exportStar(require("./duplicate-many-controller.interface"), exports);
21
+ __exportStar(require("./duplicate-many-controller.mixin"), exports);
22
+ __exportStar(require("./duplicate-many-service.interface"), exports);
@@ -19,13 +19,13 @@ const dtos_1 = require("../../dtos");
19
19
  const helpers_1 = require("../../helpers");
20
20
  const mixins_1 = require("../../mixins");
21
21
  function DuplicateOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
- const displayedName = apiTag ?? entity.name;
22
+ const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
23
  const { body: CustomBody, param: CustomParam, presenter: CustomPresenter, } = DTOs ?? {};
24
24
  class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity, true)) {
25
25
  }
26
26
  if (!CustomBody) {
27
27
  Object.defineProperty(RouteBody, 'name', {
28
- value: `DuplicateOne${displayedName}Dto`,
28
+ value: `DuplicateOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Dto`,
29
29
  writable: false,
30
30
  });
31
31
  }
@@ -33,7 +33,7 @@ function DuplicateOneControllerMixin(entity, path, apiTag, version, description,
33
33
  }
34
34
  if (!CustomParam) {
35
35
  Object.defineProperty(RouteParam, 'name', {
36
- value: `DuplicateOne${displayedName}Param`,
36
+ value: `DuplicateOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Param`,
37
37
  writable: false,
38
38
  });
39
39
  }
@@ -41,11 +41,11 @@ function DuplicateOneControllerMixin(entity, path, apiTag, version, description,
41
41
  }
42
42
  if (!CustomPresenter) {
43
43
  Object.defineProperty(RoutePresenter, 'name', {
44
- value: `${displayedName}Presenter`,
44
+ value: `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
45
45
  writable: false,
46
46
  });
47
47
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DuplicateOne', entity, description, RouteParam, undefined, RouteBody, RoutePresenter);
48
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DuplicateOne', entity, version, description, RouteParam, undefined, RouteBody, RoutePresenter);
49
49
  class BaseDuplicateOneController {
50
50
  constructor(service) {
51
51
  this.service = service;
@@ -64,7 +64,7 @@ function DuplicateOneControllerMixin(entity, path, apiTag, version, description,
64
64
  __metadata("design:returntype", Promise)
65
65
  ], BaseDuplicateOneController.prototype, "duplicateOne", null);
66
66
  Object.defineProperty(BaseDuplicateOneController, 'name', {
67
- value: `DuplicateOne${entity.name}Controller`,
67
+ value: `BaseDuplicateOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
68
68
  writable: false,
69
69
  });
70
70
  return BaseDuplicateOneController;
@@ -2,6 +2,6 @@ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
2
  import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { DuplicateOneControllerConstructor } from './duplicate-one-controller.interface';
5
- declare function createDuplicateOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
5
+ declare function createDuplicateOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): ServiceProvider;
6
6
  declare function createDuplicateOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DuplicateOneControllerConstructor<Entity>;
7
7
  export { createDuplicateOneController, createDuplicateOneServiceProvider };
@@ -18,12 +18,13 @@ const mongoose_1 = require("@nestjs/mongoose");
18
18
  const swagger_1 = require("@nestjs/swagger");
19
19
  const mongoose_2 = require("mongoose");
20
20
  const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const helpers_1 = require("../../helpers");
21
22
  const base_duplicate_one_service_1 = require("./base-duplicate-one.service");
22
23
  const duplicate_one_controller_mixin_1 = require("./duplicate-one-controller.mixin");
23
- function provideServiceName(entityName) {
24
- return `DuplicateOne${entityName}Service`;
24
+ function provideServiceName(entityName, version) {
25
+ return `DuplicateOne${entityName}${(0, helpers_1.addVersionSuffix)(version)}Service`;
25
26
  }
26
- function createDuplicateOneServiceProvider(entity) {
27
+ function createDuplicateOneServiceProvider(entity, version) {
27
28
  let DuplicateOneService = class DuplicateOneService extends base_duplicate_one_service_1.BaseDuplicateOneService {
28
29
  constructor(model) {
29
30
  super(model);
@@ -36,11 +37,11 @@ function createDuplicateOneServiceProvider(entity) {
36
37
  __metadata("design:paramtypes", [mongoose_2.Model])
37
38
  ], DuplicateOneService);
38
39
  Object.defineProperty(DuplicateOneService, 'name', {
39
- value: provideServiceName(entity.name),
40
+ value: provideServiceName(entity.name, version),
40
41
  writable: false,
41
42
  });
42
43
  return {
43
- provide: provideServiceName(entity.name),
44
+ provide: provideServiceName(entity.name, version),
44
45
  useClass: DuplicateOneService,
45
46
  };
46
47
  }
@@ -56,11 +57,11 @@ function createDuplicateOneController(entity, path, apiTag, version, description
56
57
  (0, common_1.Controller)({ path, version }),
57
58
  (0, swagger_1.ApiTags)(apiTag || entity.name),
58
59
  (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
- __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
60
61
  __metadata("design:paramtypes", [Object])
61
62
  ], DuplicateOneController);
62
63
  Object.defineProperty(DuplicateOneController, 'name', {
63
- value: `DuplicateOne${entity.name}Controller`,
64
+ value: `DuplicateOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
64
65
  writable: false,
65
66
  });
66
67
  return DuplicateOneController;
@@ -1,6 +1,6 @@
1
1
  import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle } from '../../interfaces';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  export declare class DuplicateOneModule {
5
- static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, { path, apiTag }: ControllerOptions, { description, dTOs: DTOs }: RouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
6
6
  }
@@ -11,9 +11,9 @@ exports.DuplicateOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const duplicate_one_helper_1 = require("./duplicate-one.helper");
13
13
  let DuplicateOneModule = DuplicateOneModule_1 = class DuplicateOneModule {
14
- static forFeature(databaseModule, entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
15
  const controller = (0, duplicate_one_helper_1.createDuplicateOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
16
- const ServiceProvider = (0, duplicate_one_helper_1.createDuplicateOneServiceProvider)(entity);
16
+ const ServiceProvider = (0, duplicate_one_helper_1.createDuplicateOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: DuplicateOneModule_1,
19
19
  imports: [databaseModule],
@@ -19,13 +19,13 @@ const dtos_1 = require("../../dtos");
19
19
  const helpers_1 = require("../../helpers");
20
20
  const mixins_1 = require("../../mixins");
21
21
  function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
- const displayedName = apiTag ?? entity.name;
22
+ const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
23
  const { query: CustomQuery, presenter: CustomPresenter } = DTOs ?? {};
24
24
  class RouteQuery extends (CustomQuery ?? dtos_1.EntityQuery) {
25
25
  }
26
26
  if (!CustomQuery) {
27
27
  Object.defineProperty(RouteQuery, 'name', {
28
- value: `GetMany${displayedName}Query`,
28
+ value: `GetMany${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Query`,
29
29
  writable: false,
30
30
  });
31
31
  }
@@ -33,11 +33,11 @@ function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs
33
33
  }
34
34
  if (!CustomPresenter) {
35
35
  Object.defineProperty(RoutePresenter, 'name', {
36
- value: `${displayedName}Presenter`,
36
+ value: `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
37
37
  writable: false,
38
38
  });
39
39
  }
40
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetMany', entity, description, undefined, RouteQuery, undefined, RoutePresenter);
40
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetMany', entity, version, description, undefined, RouteQuery, undefined, RoutePresenter);
41
41
  class BaseGetManyController {
42
42
  constructor(service) {
43
43
  this.service = service;
@@ -55,7 +55,7 @@ function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs
55
55
  __metadata("design:returntype", Promise)
56
56
  ], BaseGetManyController.prototype, "getMany", null);
57
57
  Object.defineProperty(BaseGetManyController, 'name', {
58
- value: `GetMany${entity.name}Controller`,
58
+ value: `BaseGetMany${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
59
59
  writable: false,
60
60
  });
61
61
  return BaseGetManyController;
@@ -2,6 +2,6 @@ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
2
  import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { GetManyControllerConstructor } from './get-many-controller.interface';
5
- declare function createGetManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
5
+ declare function createGetManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): ServiceProvider;
6
6
  declare function createGetManyController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): GetManyControllerConstructor<Entity>;
7
7
  export { createGetManyController, createGetManyServiceProvider };
@@ -18,12 +18,13 @@ const mongoose_1 = require("@nestjs/mongoose");
18
18
  const swagger_1 = require("@nestjs/swagger");
19
19
  const mongoose_2 = require("mongoose");
20
20
  const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const helpers_1 = require("../../helpers");
21
22
  const base_get_many_service_1 = require("./base-get-many.service");
22
23
  const get_many_controller_mixin_1 = require("./get-many-controller.mixin");
23
- function provideServiceName(entityName) {
24
- return `GetMany${entityName}Service`;
24
+ function provideServiceName(entityName, version) {
25
+ return `GetMany${entityName}${(0, helpers_1.addVersionSuffix)(version)}Service`;
25
26
  }
26
- function createGetManyServiceProvider(entity) {
27
+ function createGetManyServiceProvider(entity, version) {
27
28
  let GetManyService = class GetManyService extends base_get_many_service_1.BaseGetManyService {
28
29
  constructor(model) {
29
30
  super(model);
@@ -36,11 +37,11 @@ function createGetManyServiceProvider(entity) {
36
37
  __metadata("design:paramtypes", [mongoose_2.Model])
37
38
  ], GetManyService);
38
39
  Object.defineProperty(GetManyService, 'name', {
39
- value: provideServiceName(entity.name),
40
+ value: provideServiceName(entity.name, version),
40
41
  writable: false,
41
42
  });
42
43
  return {
43
- provide: provideServiceName(entity.name),
44
+ provide: provideServiceName(entity.name, version),
44
45
  useClass: GetManyService,
45
46
  };
46
47
  }
@@ -56,11 +57,11 @@ function createGetManyController(entity, path, apiTag, version, description, DTO
56
57
  (0, common_1.Controller)({ path, version }),
57
58
  (0, swagger_1.ApiTags)(apiTag || entity.name),
58
59
  (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
- __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
60
61
  __metadata("design:paramtypes", [Object])
61
62
  ], GetManyController);
62
63
  Object.defineProperty(GetManyController, 'name', {
63
- value: `GetMany${entity.name}Controller`,
64
+ value: `GetMany${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
64
65
  writable: false,
65
66
  });
66
67
  return GetManyController;
@@ -1,6 +1,6 @@
1
1
  import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle } from '../../interfaces';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  export declare class GetManyModule {
5
- static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, { path, apiTag }: ControllerOptions, { description, dTOs: DTOs }: RouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
6
6
  }
@@ -11,9 +11,9 @@ exports.GetManyModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const get_many_helper_1 = require("./get-many.helper");
13
13
  let GetManyModule = GetManyModule_1 = class GetManyModule {
14
- static forFeature(databaseModule, entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
15
  const controller = (0, get_many_helper_1.createGetManyController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
16
- const ServiceProvider = (0, get_many_helper_1.createGetManyServiceProvider)(entity);
16
+ const ServiceProvider = (0, get_many_helper_1.createGetManyServiceProvider)(entity, version);
17
17
  return {
18
18
  module: GetManyModule_1,
19
19
  imports: [databaseModule],
@@ -19,13 +19,13 @@ const dtos_1 = require("../../dtos");
19
19
  const helpers_1 = require("../../helpers");
20
20
  const mixins_1 = require("../../mixins");
21
21
  function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
- const displayedName = apiTag ?? entity.name;
22
+ const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
23
  const { param: CustomParam, query: CustomQuery, presenter: CustomPresenter, } = DTOs ?? {};
24
24
  class RouteParam extends (CustomParam ?? dtos_1.EntityParam) {
25
25
  }
26
26
  if (!CustomParam) {
27
27
  Object.defineProperty(RouteParam, 'name', {
28
- value: `GetOne${displayedName}Param`,
28
+ value: `GetOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Param`,
29
29
  writable: false,
30
30
  });
31
31
  }
@@ -33,7 +33,7 @@ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs)
33
33
  }
34
34
  if (!CustomQuery) {
35
35
  Object.defineProperty(RouteQuery, 'name', {
36
- value: `GetOne${displayedName}Query`,
36
+ value: `GetOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Query`,
37
37
  writable: false,
38
38
  });
39
39
  }
@@ -41,11 +41,11 @@ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs)
41
41
  }
42
42
  if (!CustomPresenter) {
43
43
  Object.defineProperty(RoutePresenter, 'name', {
44
- value: `${displayedName}Presenter`,
44
+ value: `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
45
45
  writable: false,
46
46
  });
47
47
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetOne', entity, description, RouteParam, RouteQuery, undefined, RoutePresenter);
48
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetOne', entity, version, description, RouteParam, RouteQuery, undefined, RoutePresenter);
49
49
  class BaseGetOneController {
50
50
  constructor(service) {
51
51
  this.service = service;
@@ -63,7 +63,7 @@ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs)
63
63
  __metadata("design:returntype", Promise)
64
64
  ], BaseGetOneController.prototype, "getOne", null);
65
65
  Object.defineProperty(BaseGetOneController, 'name', {
66
- value: `GetOne${entity.name}Controller`,
66
+ value: `BaseGetOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
67
67
  writable: false,
68
68
  });
69
69
  return BaseGetOneController;
@@ -2,6 +2,6 @@ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
2
  import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { GetOneControllerConstructor } from './get-one-controller.interface';
5
- declare function createGetOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
5
+ declare function createGetOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): ServiceProvider;
6
6
  declare function createGetOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): GetOneControllerConstructor<Entity>;
7
7
  export { createGetOneController, createGetOneServiceProvider };
@@ -18,12 +18,13 @@ const mongoose_1 = require("@nestjs/mongoose");
18
18
  const swagger_1 = require("@nestjs/swagger");
19
19
  const mongoose_2 = require("mongoose");
20
20
  const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const helpers_1 = require("../../helpers");
21
22
  const base_get_one_service_1 = require("./base-get-one.service");
22
23
  const get_one_controller_mixin_1 = require("./get-one-controller.mixin");
23
- function provideServiceName(entityName) {
24
- return `GetOne${entityName}Service`;
24
+ function provideServiceName(entityName, version) {
25
+ return `GetOne${entityName}${(0, helpers_1.addVersionSuffix)(version)}Service`;
25
26
  }
26
- function createGetOneServiceProvider(entity) {
27
+ function createGetOneServiceProvider(entity, version) {
27
28
  let GetOneService = class GetOneService extends base_get_one_service_1.BaseGetOneService {
28
29
  constructor(model) {
29
30
  super(model);
@@ -36,11 +37,11 @@ function createGetOneServiceProvider(entity) {
36
37
  __metadata("design:paramtypes", [mongoose_2.Model])
37
38
  ], GetOneService);
38
39
  Object.defineProperty(GetOneService, 'name', {
39
- value: provideServiceName(entity.name),
40
+ value: provideServiceName(entity.name, version),
40
41
  writable: false,
41
42
  });
42
43
  return {
43
- provide: provideServiceName(entity.name),
44
+ provide: provideServiceName(entity.name, version),
44
45
  useClass: GetOneService,
45
46
  };
46
47
  }
@@ -56,11 +57,11 @@ function createGetOneController(entity, path, apiTag, version, description, DTOs
56
57
  (0, common_1.Controller)({ path, version }),
57
58
  (0, swagger_1.ApiTags)(apiTag || entity.name),
58
59
  (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
- __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
60
61
  __metadata("design:paramtypes", [Object])
61
62
  ], GetOneController);
62
63
  Object.defineProperty(GetOneController, 'name', {
63
- value: `GetOne${entity.name}Controller`,
64
+ value: `GetOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
64
65
  writable: false,
65
66
  });
66
67
  return GetOneController;
@@ -1,6 +1,6 @@
1
1
  import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle } from '../../interfaces';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  export declare class GetOneModule {
5
- static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, { path, apiTag }: ControllerOptions, { description, dTOs: DTOs }: RouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
6
6
  }
@@ -11,9 +11,9 @@ exports.GetOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const get_one_helper_1 = require("./get-one.helper");
13
13
  let GetOneModule = GetOneModule_1 = class GetOneModule {
14
- static forFeature(databaseModule, entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
15
  const controller = (0, get_one_helper_1.createGetOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
16
- const ServiceProvider = (0, get_one_helper_1.createGetOneServiceProvider)(entity);
16
+ const ServiceProvider = (0, get_one_helper_1.createGetOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: GetOneModule_1,
19
19
  imports: [databaseModule],
@@ -19,13 +19,13 @@ const dtos_1 = require("../../dtos");
19
19
  const helpers_1 = require("../../helpers");
20
20
  const mixins_1 = require("../../mixins");
21
21
  function ReplaceOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
- const displayedName = apiTag ?? entity.name;
22
+ const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
23
  const { body: CustomBody, param: CustomParam, presenter: CustomPresenter, } = DTOs ?? {};
24
24
  class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity)) {
25
25
  }
26
26
  if (!CustomBody) {
27
27
  Object.defineProperty(RouteBody, 'name', {
28
- value: `ReplaceOne${displayedName}Dto`,
28
+ value: `ReplaceOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Dto`,
29
29
  writable: false,
30
30
  });
31
31
  }
@@ -33,7 +33,7 @@ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, D
33
33
  }
34
34
  if (!CustomParam) {
35
35
  Object.defineProperty(RouteParam, 'name', {
36
- value: `ReplaceOne${displayedName}Param`,
36
+ value: `ReplaceOne${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Param`,
37
37
  writable: false,
38
38
  });
39
39
  }
@@ -41,11 +41,11 @@ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, D
41
41
  }
42
42
  if (!CustomPresenter) {
43
43
  Object.defineProperty(RoutePresenter, 'name', {
44
- value: `${displayedName}Presenter`,
44
+ value: `${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Presenter`,
45
45
  writable: false,
46
46
  });
47
47
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('ReplaceOne', entity, description, RouteParam, undefined, RouteBody, RoutePresenter);
48
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('ReplaceOne', entity, version, description, RouteParam, undefined, RouteBody, RoutePresenter);
49
49
  class BaseReplaceOneController {
50
50
  constructor(service) {
51
51
  this.service = service;
@@ -64,7 +64,7 @@ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, D
64
64
  __metadata("design:returntype", Promise)
65
65
  ], BaseReplaceOneController.prototype, "replaceOne", null);
66
66
  Object.defineProperty(BaseReplaceOneController, 'name', {
67
- value: `ReplaceOne${entity.name}Controller`,
67
+ value: `BaseReplaceOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
68
68
  writable: false,
69
69
  });
70
70
  return BaseReplaceOneController;
@@ -2,6 +2,6 @@ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
2
  import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { ReplaceOneControllerConstructor } from './replace-one-controller.interface';
5
- declare function createReplaceOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
5
+ declare function createReplaceOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): ServiceProvider;
6
6
  declare function createReplaceOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): ReplaceOneControllerConstructor<Entity>;
7
7
  export { createReplaceOneController, createReplaceOneServiceProvider };
@@ -18,12 +18,13 @@ const mongoose_1 = require("@nestjs/mongoose");
18
18
  const swagger_1 = require("@nestjs/swagger");
19
19
  const mongoose_2 = require("mongoose");
20
20
  const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const helpers_1 = require("../../helpers");
21
22
  const base_replace_one_service_1 = require("./base-replace-one.service");
22
23
  const replace_one_controller_mixin_1 = require("./replace-one-controller.mixin");
23
- function provideServiceName(entityName) {
24
- return `ReplaceOne${entityName}Service`;
24
+ function provideServiceName(entityName, version) {
25
+ return `ReplaceOne${entityName}${(0, helpers_1.addVersionSuffix)(version)}Service`;
25
26
  }
26
- function createReplaceOneServiceProvider(entity) {
27
+ function createReplaceOneServiceProvider(entity, version) {
27
28
  let ReplaceOneService = class ReplaceOneService extends base_replace_one_service_1.BaseReplaceOneService {
28
29
  constructor(model) {
29
30
  super(model);
@@ -36,11 +37,11 @@ function createReplaceOneServiceProvider(entity) {
36
37
  __metadata("design:paramtypes", [mongoose_2.Model])
37
38
  ], ReplaceOneService);
38
39
  Object.defineProperty(ReplaceOneService, 'name', {
39
- value: provideServiceName(entity.name),
40
+ value: provideServiceName(entity.name, version),
40
41
  writable: false,
41
42
  });
42
43
  return {
43
- provide: provideServiceName(entity.name),
44
+ provide: provideServiceName(entity.name, version),
44
45
  useClass: ReplaceOneService,
45
46
  };
46
47
  }
@@ -56,11 +57,11 @@ function createReplaceOneController(entity, path, apiTag, version, description,
56
57
  (0, common_1.Controller)({ path, version }),
57
58
  (0, swagger_1.ApiTags)(apiTag || entity.name),
58
59
  (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
- __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
60
61
  __metadata("design:paramtypes", [Object])
61
62
  ], ReplaceOneController);
62
63
  Object.defineProperty(ReplaceOneController, 'name', {
63
- value: `ReplaceOne${entity.name}Controller`,
64
+ value: `ReplaceOne${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
64
65
  writable: false,
65
66
  });
66
67
  return ReplaceOneController;
@@ -1,6 +1,6 @@
1
1
  import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle } from '../../interfaces';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  export declare class ReplaceOneModule {
5
- static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, { path, apiTag }: ControllerOptions, { description, dTOs: DTOs }: RouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
6
6
  }
@@ -11,9 +11,9 @@ exports.ReplaceOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const replace_one_helper_1 = require("./replace-one.helper");
13
13
  let ReplaceOneModule = ReplaceOneModule_1 = class ReplaceOneModule {
14
- static forFeature(databaseModule, entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
15
  const controller = (0, replace_one_helper_1.createReplaceOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
16
- const ServiceProvider = (0, replace_one_helper_1.createReplaceOneServiceProvider)(entity);
16
+ const ServiceProvider = (0, replace_one_helper_1.createReplaceOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: ReplaceOneModule_1,
19
19
  imports: [databaseModule],
@@ -0,0 +1,33 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
25
+ import { Model } from 'mongoose';
26
+ import { BaseEntity } from '../../models';
27
+ import { BaseService } from '../../services';
28
+ import { UpdateManyService } from './update-many-service.interface';
29
+ export declare abstract class BaseUpdateManyService<Entity extends BaseEntity> extends BaseService<Entity> implements UpdateManyService<Entity> {
30
+ protected readonly model: Model<Entity>;
31
+ protected constructor(model: Model<Entity>);
32
+ updateMany(ids: string[], partial: Partial<Entity>): Promise<Entity[]>;
33
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseUpdateManyService = void 0;
4
+ const services_1 = require("../../services");
5
+ class BaseUpdateManyService extends services_1.BaseService {
6
+ constructor(model) {
7
+ super(model);
8
+ this.model = model;
9
+ }
10
+ async updateMany(ids, partial) {
11
+ try {
12
+ const toUpdateList = await this.model.find({ _id: { $in: ids } }).lean().exec();
13
+ if (toUpdateList?.length !== ids.length) {
14
+ this.handleDocumentNotFound();
15
+ }
16
+ await this.model
17
+ .updateMany({
18
+ _id: { $in: ids },
19
+ ...(this.isSoftDeletable ? { isDeleted: false } : undefined),
20
+ }, partial)
21
+ .lean()
22
+ .exec();
23
+ const documents = await this.model.find({ _id: { $in: ids } }).lean().exec();
24
+ return documents.map((d) => this.buildInstance(d));
25
+ }
26
+ catch (error) {
27
+ this.handleDuplicateKeyError(error);
28
+ throw error;
29
+ }
30
+ }
31
+ }
32
+ exports.BaseUpdateManyService = BaseUpdateManyService;