mongodb-dynamic-api 1.1.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 (178) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +21 -0
  3. package/README.md +190 -0
  4. package/index.d.ts +1 -0
  5. package/index.js +17 -0
  6. package/package.json +119 -0
  7. package/src/builders/index.d.ts +1 -0
  8. package/src/builders/index.js +17 -0
  9. package/src/builders/route-decorators.builder.d.ts +18 -0
  10. package/src/builders/route-decorators.builder.js +76 -0
  11. package/src/decorators/index.d.ts +1 -0
  12. package/src/decorators/index.js +17 -0
  13. package/src/decorators/schema-options.decorator.d.ts +4 -0
  14. package/src/decorators/schema-options.decorator.js +11 -0
  15. package/src/dtos/entity.param.d.ts +4 -0
  16. package/src/dtos/entity.param.js +26 -0
  17. package/src/dtos/entity.query.d.ts +2 -0
  18. package/src/dtos/entity.query.js +6 -0
  19. package/src/dtos/index.d.ts +2 -0
  20. package/src/dtos/index.js +18 -0
  21. package/src/dynamic-api.module.d.ts +8 -0
  22. package/src/dynamic-api.module.js +101 -0
  23. package/src/helpers/config.helper.d.ts +61 -0
  24. package/src/helpers/config.helper.js +95 -0
  25. package/src/helpers/index.d.ts +2 -0
  26. package/src/helpers/index.js +18 -0
  27. package/src/helpers/route-decorators.helper.d.ts +4 -0
  28. package/src/helpers/route-decorators.helper.js +8 -0
  29. package/src/index.d.ts +10 -0
  30. package/src/index.js +26 -0
  31. package/src/interfaces/dynamic-api-options.interface.d.ts +15 -0
  32. package/src/interfaces/dynamic-api-options.interface.js +2 -0
  33. package/src/interfaces/dynamic-api-schema-options.interface.d.ts +43 -0
  34. package/src/interfaces/dynamic-api-schema-options.interface.js +2 -0
  35. package/src/interfaces/entity-mappers.interface.d.ts +8 -0
  36. package/src/interfaces/entity-mappers.interface.js +2 -0
  37. package/src/interfaces/index.d.ts +6 -0
  38. package/src/interfaces/index.js +22 -0
  39. package/src/interfaces/maybe-promise.type.d.ts +2 -0
  40. package/src/interfaces/maybe-promise.type.js +2 -0
  41. package/src/interfaces/route-config.interface.d.ts +17 -0
  42. package/src/interfaces/route-config.interface.js +2 -0
  43. package/src/interfaces/service-provider.interface.d.ts +6 -0
  44. package/src/interfaces/service-provider.interface.js +2 -0
  45. package/src/mixins/entity-body.mixin.d.ts +16 -0
  46. package/src/mixins/entity-body.mixin.js +24 -0
  47. package/src/mixins/entity-presenter.mixin.d.ts +15 -0
  48. package/src/mixins/entity-presenter.mixin.js +10 -0
  49. package/src/mixins/index.d.ts +2 -0
  50. package/src/mixins/index.js +18 -0
  51. package/src/models/base-entity.model.d.ts +32 -0
  52. package/src/models/base-entity.model.js +40 -0
  53. package/src/models/index.d.ts +2 -0
  54. package/src/models/index.js +18 -0
  55. package/src/models/soft-deletable-entity.model.d.ts +5 -0
  56. package/src/models/soft-deletable-entity.model.js +29 -0
  57. package/src/modules/create-many/base-create-many.service.d.ts +33 -0
  58. package/src/modules/create-many/base-create-many.service.js +22 -0
  59. package/src/modules/create-many/create-many-controller.interface.d.ts +9 -0
  60. package/src/modules/create-many/create-many-controller.interface.js +2 -0
  61. package/src/modules/create-many/create-many-controller.mixin.d.ts +6 -0
  62. package/src/modules/create-many/create-many-controller.mixin.js +81 -0
  63. package/src/modules/create-many/create-many-service.interface.d.ts +5 -0
  64. package/src/modules/create-many/create-many-service.interface.js +2 -0
  65. package/src/modules/create-many/create-many.helper.d.ts +7 -0
  66. package/src/modules/create-many/create-many.helper.js +68 -0
  67. package/src/modules/create-many/create-many.module.d.ts +6 -0
  68. package/src/modules/create-many/create-many.module.js +28 -0
  69. package/src/modules/create-many/index.d.ts +6 -0
  70. package/src/modules/create-many/index.js +22 -0
  71. package/src/modules/create-one/base-create-one.service.d.ts +33 -0
  72. package/src/modules/create-one/base-create-one.service.js +22 -0
  73. package/src/modules/create-one/create-one-controller.interface.d.ts +7 -0
  74. package/src/modules/create-one/create-one-controller.interface.js +2 -0
  75. package/src/modules/create-one/create-one-controller.mixin.d.ts +6 -0
  76. package/src/modules/create-one/create-one-controller.mixin.js +62 -0
  77. package/src/modules/create-one/create-one-service.interface.d.ts +5 -0
  78. package/src/modules/create-one/create-one-service.interface.js +2 -0
  79. package/src/modules/create-one/create-one.helper.d.ts +7 -0
  80. package/src/modules/create-one/create-one.helper.js +68 -0
  81. package/src/modules/create-one/create-one.module.d.ts +6 -0
  82. package/src/modules/create-one/create-one.module.js +28 -0
  83. package/src/modules/create-one/index.d.ts +6 -0
  84. package/src/modules/create-one/index.js +22 -0
  85. package/src/modules/delete-one/base-delete-one.service.d.ts +34 -0
  86. package/src/modules/delete-one/base-delete-one.service.js +29 -0
  87. package/src/modules/delete-one/delete-one-controller.interface.d.ts +7 -0
  88. package/src/modules/delete-one/delete-one-controller.interface.js +2 -0
  89. package/src/modules/delete-one/delete-one-controller.mixin.d.ts +6 -0
  90. package/src/modules/delete-one/delete-one-controller.mixin.js +63 -0
  91. package/src/modules/delete-one/delete-one-service.interface.d.ts +8 -0
  92. package/src/modules/delete-one/delete-one-service.interface.js +2 -0
  93. package/src/modules/delete-one/delete-one.helper.d.ts +7 -0
  94. package/src/modules/delete-one/delete-one.helper.js +68 -0
  95. package/src/modules/delete-one/delete-one.module.d.ts +6 -0
  96. package/src/modules/delete-one/delete-one.module.js +28 -0
  97. package/src/modules/delete-one/delete-one.presenter.d.ts +3 -0
  98. package/src/modules/delete-one/delete-one.presenter.js +20 -0
  99. package/src/modules/delete-one/index.d.ts +7 -0
  100. package/src/modules/delete-one/index.js +23 -0
  101. package/src/modules/duplicate-one/base-duplicate-one.service.d.ts +33 -0
  102. package/src/modules/duplicate-one/base-duplicate-one.service.js +41 -0
  103. package/src/modules/duplicate-one/duplicate-one-controller.interface.d.ts +7 -0
  104. package/src/modules/duplicate-one/duplicate-one-controller.interface.js +2 -0
  105. package/src/modules/duplicate-one/duplicate-one-controller.mixin.d.ts +6 -0
  106. package/src/modules/duplicate-one/duplicate-one-controller.mixin.js +72 -0
  107. package/src/modules/duplicate-one/duplicate-one-service.interface.d.ts +5 -0
  108. package/src/modules/duplicate-one/duplicate-one-service.interface.js +2 -0
  109. package/src/modules/duplicate-one/duplicate-one.helper.d.ts +7 -0
  110. package/src/modules/duplicate-one/duplicate-one.helper.js +68 -0
  111. package/src/modules/duplicate-one/duplicate-one.module.d.ts +6 -0
  112. package/src/modules/duplicate-one/duplicate-one.module.js +28 -0
  113. package/src/modules/duplicate-one/index.d.ts +6 -0
  114. package/src/modules/duplicate-one/index.js +22 -0
  115. package/src/modules/get-many/base-get-many.service.d.ts +33 -0
  116. package/src/modules/get-many/base-get-many.service.js +21 -0
  117. package/src/modules/get-many/get-many-controller.interface.d.ts +7 -0
  118. package/src/modules/get-many/get-many-controller.interface.js +2 -0
  119. package/src/modules/get-many/get-many-controller.mixin.d.ts +6 -0
  120. package/src/modules/get-many/get-many-controller.mixin.js +63 -0
  121. package/src/modules/get-many/get-many-service.interface.d.ts +5 -0
  122. package/src/modules/get-many/get-many-service.interface.js +2 -0
  123. package/src/modules/get-many/get-many.helper.d.ts +7 -0
  124. package/src/modules/get-many/get-many.helper.js +68 -0
  125. package/src/modules/get-many/get-many.module.d.ts +6 -0
  126. package/src/modules/get-many/get-many.module.js +28 -0
  127. package/src/modules/get-many/index.d.ts +6 -0
  128. package/src/modules/get-many/index.js +22 -0
  129. package/src/modules/get-one/base-get-one.service.d.ts +33 -0
  130. package/src/modules/get-one/base-get-one.service.js +24 -0
  131. package/src/modules/get-one/get-one-controller.interface.d.ts +7 -0
  132. package/src/modules/get-one/get-one-controller.interface.js +2 -0
  133. package/src/modules/get-one/get-one-controller.mixin.d.ts +6 -0
  134. package/src/modules/get-one/get-one-controller.mixin.js +71 -0
  135. package/src/modules/get-one/get-one-service.interface.d.ts +5 -0
  136. package/src/modules/get-one/get-one-service.interface.js +2 -0
  137. package/src/modules/get-one/get-one.helper.d.ts +7 -0
  138. package/src/modules/get-one/get-one.helper.js +68 -0
  139. package/src/modules/get-one/get-one.module.d.ts +6 -0
  140. package/src/modules/get-one/get-one.module.js +28 -0
  141. package/src/modules/get-one/index.d.ts +6 -0
  142. package/src/modules/get-one/index.js +22 -0
  143. package/src/modules/index.d.ts +8 -0
  144. package/src/modules/index.js +24 -0
  145. package/src/modules/replace-one/base-replace-one.service.d.ts +33 -0
  146. package/src/modules/replace-one/base-replace-one.service.js +33 -0
  147. package/src/modules/replace-one/index.d.ts +6 -0
  148. package/src/modules/replace-one/index.js +22 -0
  149. package/src/modules/replace-one/replace-one-controller.interface.d.ts +7 -0
  150. package/src/modules/replace-one/replace-one-controller.interface.js +2 -0
  151. package/src/modules/replace-one/replace-one-controller.mixin.d.ts +6 -0
  152. package/src/modules/replace-one/replace-one-controller.mixin.js +72 -0
  153. package/src/modules/replace-one/replace-one-service.interface.d.ts +5 -0
  154. package/src/modules/replace-one/replace-one-service.interface.js +2 -0
  155. package/src/modules/replace-one/replace-one.helper.d.ts +7 -0
  156. package/src/modules/replace-one/replace-one.helper.js +68 -0
  157. package/src/modules/replace-one/replace-one.module.d.ts +6 -0
  158. package/src/modules/replace-one/replace-one.module.js +28 -0
  159. package/src/modules/update-one/base-update-one.service.d.ts +33 -0
  160. package/src/modules/update-one/base-update-one.service.js +30 -0
  161. package/src/modules/update-one/index.d.ts +6 -0
  162. package/src/modules/update-one/index.js +22 -0
  163. package/src/modules/update-one/update-one-controller.interface.d.ts +7 -0
  164. package/src/modules/update-one/update-one-controller.interface.js +2 -0
  165. package/src/modules/update-one/update-one-controller.mixin.d.ts +6 -0
  166. package/src/modules/update-one/update-one-controller.mixin.js +72 -0
  167. package/src/modules/update-one/update-one-service.interface.d.ts +5 -0
  168. package/src/modules/update-one/update-one-service.interface.js +2 -0
  169. package/src/modules/update-one/update-one.helper.d.ts +7 -0
  170. package/src/modules/update-one/update-one.helper.js +68 -0
  171. package/src/modules/update-one/update-one.module.d.ts +6 -0
  172. package/src/modules/update-one/update-one.module.js +28 -0
  173. package/src/services/base.service.d.ts +36 -0
  174. package/src/services/base.service.js +33 -0
  175. package/src/services/index.d.ts +1 -0
  176. package/src/services/index.js +17 -0
  177. package/src/version.json +3 -0
  178. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,71 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GetOneControllerMixin = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const builders_1 = require("../../builders");
18
+ const dtos_1 = require("../../dtos");
19
+ const helpers_1 = require("../../helpers");
20
+ const mixins_1 = require("../../mixins");
21
+ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
+ const displayedName = apiTag ?? entity.name;
23
+ const { param: CustomParam, query: CustomQuery, presenter: CustomPresenter, } = DTOs ?? {};
24
+ class RouteParam extends (CustomParam ?? dtos_1.EntityParam) {
25
+ }
26
+ if (!CustomParam) {
27
+ Object.defineProperty(RouteParam, 'name', {
28
+ value: `GetOne${displayedName}Param`,
29
+ writable: false,
30
+ });
31
+ }
32
+ class RouteQuery extends (CustomQuery ?? dtos_1.EntityQuery) {
33
+ }
34
+ if (!CustomQuery) {
35
+ Object.defineProperty(RouteQuery, 'name', {
36
+ value: `GetOne${displayedName}Query`,
37
+ writable: false,
38
+ });
39
+ }
40
+ class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
41
+ }
42
+ if (!CustomPresenter) {
43
+ Object.defineProperty(RoutePresenter, 'name', {
44
+ value: `${displayedName}Presenter`,
45
+ writable: false,
46
+ });
47
+ }
48
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetOne', entity, description, RouteParam, RouteQuery, undefined, RoutePresenter);
49
+ class BaseGetOneController {
50
+ constructor(service) {
51
+ this.service = service;
52
+ this.entity = entity;
53
+ }
54
+ async getOne(id) {
55
+ return this.service.getOne(id);
56
+ }
57
+ }
58
+ __decorate([
59
+ (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
60
+ __param(0, (0, common_1.Param)('id')),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", [String]),
63
+ __metadata("design:returntype", Promise)
64
+ ], BaseGetOneController.prototype, "getOne", null);
65
+ Object.defineProperty(BaseGetOneController, 'name', {
66
+ value: `GetOne${entity.name}Controller`,
67
+ writable: false,
68
+ });
69
+ return BaseGetOneController;
70
+ }
71
+ exports.GetOneControllerMixin = GetOneControllerMixin;
@@ -0,0 +1,5 @@
1
+ import { BaseEntity } from '../../models';
2
+ interface GetOneService<Entity extends BaseEntity> {
3
+ getOne(id: string): Promise<Entity>;
4
+ }
5
+ export type { GetOneService };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { GetOneControllerConstructor } from './get-one-controller.interface';
5
+ declare function createGetOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
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
+ export { createGetOneController, createGetOneServiceProvider };
@@ -0,0 +1,68 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createGetOneServiceProvider = exports.createGetOneController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("@nestjs/mongoose");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ const mongoose_2 = require("mongoose");
20
+ const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const base_get_one_service_1 = require("./base-get-one.service");
22
+ const get_one_controller_mixin_1 = require("./get-one-controller.mixin");
23
+ function provideServiceName(entityName) {
24
+ return `GetOne${entityName}Service`;
25
+ }
26
+ function createGetOneServiceProvider(entity) {
27
+ let GetOneService = class GetOneService extends base_get_one_service_1.BaseGetOneService {
28
+ constructor(model) {
29
+ super(model);
30
+ this.model = model;
31
+ this.entity = entity;
32
+ }
33
+ };
34
+ GetOneService = __decorate([
35
+ __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.connectionName)),
36
+ __metadata("design:paramtypes", [mongoose_2.Model])
37
+ ], GetOneService);
38
+ Object.defineProperty(GetOneService, 'name', {
39
+ value: provideServiceName(entity.name),
40
+ writable: false,
41
+ });
42
+ return {
43
+ provide: provideServiceName(entity.name),
44
+ useClass: GetOneService,
45
+ };
46
+ }
47
+ exports.createGetOneServiceProvider = createGetOneServiceProvider;
48
+ function createGetOneController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
49
+ let GetOneController = class GetOneController extends (0, get_one_controller_mixin_1.GetOneControllerMixin)(entity, path, apiTag, version, description, DTOs) {
50
+ constructor(service) {
51
+ super(service);
52
+ this.service = service;
53
+ }
54
+ };
55
+ GetOneController = __decorate([
56
+ (0, common_1.Controller)({ path, version }),
57
+ (0, swagger_1.ApiTags)(apiTag || entity.name),
58
+ (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __metadata("design:paramtypes", [Object])
61
+ ], GetOneController);
62
+ Object.defineProperty(GetOneController, 'name', {
63
+ value: `GetOne${entity.name}Controller`,
64
+ writable: false,
65
+ });
66
+ return GetOneController;
67
+ }
68
+ exports.createGetOneController = createGetOneController;
@@ -0,0 +1,6 @@
1
+ import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ export declare class GetOneModule {
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
+ }
@@ -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 GetOneModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.GetOneModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const get_one_helper_1 = require("./get-one.helper");
13
+ let GetOneModule = GetOneModule_1 = class GetOneModule {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
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);
17
+ return {
18
+ module: GetOneModule_1,
19
+ imports: [databaseModule],
20
+ controllers: [controller],
21
+ providers: [ServiceProvider],
22
+ };
23
+ }
24
+ };
25
+ exports.GetOneModule = GetOneModule;
26
+ exports.GetOneModule = GetOneModule = GetOneModule_1 = __decorate([
27
+ (0, common_1.Module)({})
28
+ ], GetOneModule);
@@ -0,0 +1,6 @@
1
+ export * from './base-get-one.service';
2
+ export * from './get-one.helper';
3
+ export * from './get-one.module';
4
+ export * from './get-one-controller.interface';
5
+ export * from './get-one-controller.mixin';
6
+ export * from './get-one-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-get-one.service"), exports);
18
+ __exportStar(require("./get-one.helper"), exports);
19
+ __exportStar(require("./get-one.module"), exports);
20
+ __exportStar(require("./get-one-controller.interface"), exports);
21
+ __exportStar(require("./get-one-controller.mixin"), exports);
22
+ __exportStar(require("./get-one-service.interface"), exports);
@@ -0,0 +1,8 @@
1
+ export * from './create-one';
2
+ export * from './create-many';
3
+ export * from './delete-one';
4
+ export * from './duplicate-one';
5
+ export * from './get-many';
6
+ export * from './get-one';
7
+ export * from './replace-one';
8
+ export * from './update-one';
@@ -0,0 +1,24 @@
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("./create-one"), exports);
18
+ __exportStar(require("./create-many"), exports);
19
+ __exportStar(require("./delete-one"), exports);
20
+ __exportStar(require("./duplicate-one"), exports);
21
+ __exportStar(require("./get-many"), exports);
22
+ __exportStar(require("./get-one"), exports);
23
+ __exportStar(require("./replace-one"), exports);
24
+ __exportStar(require("./update-one"), exports);
@@ -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 { ReplaceOneService } from './replace-one-service.interface';
29
+ export declare abstract class BaseReplaceOneService<Entity extends BaseEntity> extends BaseService<Entity> implements ReplaceOneService<Entity> {
30
+ protected readonly model: Model<Entity>;
31
+ protected constructor(model: Model<Entity>);
32
+ replaceOne(id: string, partial: Partial<Entity>): Promise<Entity>;
33
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseReplaceOneService = void 0;
4
+ const services_1 = require("../../services");
5
+ class BaseReplaceOneService extends services_1.BaseService {
6
+ constructor(model) {
7
+ super(model);
8
+ this.model = model;
9
+ }
10
+ async replaceOne(id, partial) {
11
+ try {
12
+ const document = await this.model
13
+ .findOneAndReplace({
14
+ _id: id,
15
+ ...(this.isSoftDeletable ? { isDeleted: false } : undefined),
16
+ }, partial, {
17
+ new: true,
18
+ setDefaultsOnInsert: true,
19
+ })
20
+ .lean()
21
+ .exec();
22
+ if (!document) {
23
+ this.handleDocumentNotFound();
24
+ }
25
+ return this.buildInstance(document);
26
+ }
27
+ catch (error) {
28
+ this.handleDuplicateKeyError(error);
29
+ throw error;
30
+ }
31
+ }
32
+ }
33
+ exports.BaseReplaceOneService = BaseReplaceOneService;
@@ -0,0 +1,6 @@
1
+ export * from './base-replace-one.service';
2
+ export * from './replace-one.helper';
3
+ export * from './replace-one.module';
4
+ export * from './replace-one-controller.interface';
5
+ export * from './replace-one-controller.mixin';
6
+ export * from './replace-one-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-replace-one.service"), exports);
18
+ __exportStar(require("./replace-one.helper"), exports);
19
+ __exportStar(require("./replace-one.module"), exports);
20
+ __exportStar(require("./replace-one-controller.interface"), exports);
21
+ __exportStar(require("./replace-one-controller.mixin"), exports);
22
+ __exportStar(require("./replace-one-service.interface"), exports);
@@ -0,0 +1,7 @@
1
+ import { BaseEntity } from '../../models';
2
+ import { ReplaceOneService } from './replace-one-service.interface';
3
+ interface ReplaceOneController<Entity extends BaseEntity> {
4
+ replaceOne(id: string, partial: Partial<Entity>): Promise<Entity | undefined>;
5
+ }
6
+ type ReplaceOneControllerConstructor<Entity extends BaseEntity> = new (service: ReplaceOneService<Entity>) => ReplaceOneController<Entity>;
7
+ export type { ReplaceOneController, ReplaceOneControllerConstructor };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { DTOsBundle } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { ReplaceOneControllerConstructor } from './replace-one-controller.interface';
5
+ declare function ReplaceOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle): ReplaceOneControllerConstructor<Entity>;
6
+ export { ReplaceOneControllerMixin };
@@ -0,0 +1,72 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ReplaceOneControllerMixin = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const builders_1 = require("../../builders");
18
+ const dtos_1 = require("../../dtos");
19
+ const helpers_1 = require("../../helpers");
20
+ const mixins_1 = require("../../mixins");
21
+ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
+ const displayedName = apiTag ?? entity.name;
23
+ const { body: CustomBody, param: CustomParam, presenter: CustomPresenter, } = DTOs ?? {};
24
+ class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity)) {
25
+ }
26
+ if (!CustomBody) {
27
+ Object.defineProperty(RouteBody, 'name', {
28
+ value: `ReplaceOne${displayedName}Dto`,
29
+ writable: false,
30
+ });
31
+ }
32
+ class RouteParam extends (CustomParam ?? dtos_1.EntityParam) {
33
+ }
34
+ if (!CustomParam) {
35
+ Object.defineProperty(RouteParam, 'name', {
36
+ value: `ReplaceOne${displayedName}Param`,
37
+ writable: false,
38
+ });
39
+ }
40
+ class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
41
+ }
42
+ if (!CustomPresenter) {
43
+ Object.defineProperty(RoutePresenter, 'name', {
44
+ value: `${displayedName}Presenter`,
45
+ writable: false,
46
+ });
47
+ }
48
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('ReplaceOne', entity, description, RouteParam, undefined, RouteBody, RoutePresenter);
49
+ class BaseReplaceOneController {
50
+ constructor(service) {
51
+ this.service = service;
52
+ this.entity = entity;
53
+ }
54
+ async replaceOne(id, body) {
55
+ return this.service.replaceOne(id, body);
56
+ }
57
+ }
58
+ __decorate([
59
+ (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
60
+ __param(0, (0, common_1.Param)('id')),
61
+ __param(1, (0, common_1.Body)()),
62
+ __metadata("design:type", Function),
63
+ __metadata("design:paramtypes", [String, RouteBody]),
64
+ __metadata("design:returntype", Promise)
65
+ ], BaseReplaceOneController.prototype, "replaceOne", null);
66
+ Object.defineProperty(BaseReplaceOneController, 'name', {
67
+ value: `ReplaceOne${entity.name}Controller`,
68
+ writable: false,
69
+ });
70
+ return BaseReplaceOneController;
71
+ }
72
+ exports.ReplaceOneControllerMixin = ReplaceOneControllerMixin;
@@ -0,0 +1,5 @@
1
+ import { BaseEntity } from '../../models';
2
+ interface ReplaceOneService<Entity extends BaseEntity> {
3
+ replaceOne(id: string, partial: Partial<Entity>): Promise<Entity>;
4
+ }
5
+ export type { ReplaceOneService };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { DTOsBundle, ServiceProvider } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { ReplaceOneControllerConstructor } from './replace-one-controller.interface';
5
+ declare function createReplaceOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>): ServiceProvider;
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
+ export { createReplaceOneController, createReplaceOneServiceProvider };
@@ -0,0 +1,68 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createReplaceOneServiceProvider = exports.createReplaceOneController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("@nestjs/mongoose");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ const mongoose_2 = require("mongoose");
20
+ const dynamic_api_module_1 = require("../../dynamic-api.module");
21
+ const base_replace_one_service_1 = require("./base-replace-one.service");
22
+ const replace_one_controller_mixin_1 = require("./replace-one-controller.mixin");
23
+ function provideServiceName(entityName) {
24
+ return `ReplaceOne${entityName}Service`;
25
+ }
26
+ function createReplaceOneServiceProvider(entity) {
27
+ let ReplaceOneService = class ReplaceOneService extends base_replace_one_service_1.BaseReplaceOneService {
28
+ constructor(model) {
29
+ super(model);
30
+ this.model = model;
31
+ this.entity = entity;
32
+ }
33
+ };
34
+ ReplaceOneService = __decorate([
35
+ __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.connectionName)),
36
+ __metadata("design:paramtypes", [mongoose_2.Model])
37
+ ], ReplaceOneService);
38
+ Object.defineProperty(ReplaceOneService, 'name', {
39
+ value: provideServiceName(entity.name),
40
+ writable: false,
41
+ });
42
+ return {
43
+ provide: provideServiceName(entity.name),
44
+ useClass: ReplaceOneService,
45
+ };
46
+ }
47
+ exports.createReplaceOneServiceProvider = createReplaceOneServiceProvider;
48
+ function createReplaceOneController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
49
+ let ReplaceOneController = class ReplaceOneController extends (0, replace_one_controller_mixin_1.ReplaceOneControllerMixin)(entity, path, apiTag, version, description, DTOs) {
50
+ constructor(service) {
51
+ super(service);
52
+ this.service = service;
53
+ }
54
+ };
55
+ ReplaceOneController = __decorate([
56
+ (0, common_1.Controller)({ path, version }),
57
+ (0, swagger_1.ApiTags)(apiTag || entity.name),
58
+ (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
59
+ __param(0, (0, common_1.Inject)(provideServiceName(entity.name))),
60
+ __metadata("design:paramtypes", [Object])
61
+ ], ReplaceOneController);
62
+ Object.defineProperty(ReplaceOneController, 'name', {
63
+ value: `ReplaceOne${entity.name}Controller`,
64
+ writable: false,
65
+ });
66
+ return ReplaceOneController;
67
+ }
68
+ exports.createReplaceOneController = createReplaceOneController;
@@ -0,0 +1,6 @@
1
+ import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { ControllerOptions, RouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ export declare class ReplaceOneModule {
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
+ }
@@ -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 ReplaceOneModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ReplaceOneModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const replace_one_helper_1 = require("./replace-one.helper");
13
+ let ReplaceOneModule = ReplaceOneModule_1 = class ReplaceOneModule {
14
+ static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
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);
17
+ return {
18
+ module: ReplaceOneModule_1,
19
+ imports: [databaseModule],
20
+ controllers: [controller],
21
+ providers: [ServiceProvider],
22
+ };
23
+ }
24
+ };
25
+ exports.ReplaceOneModule = ReplaceOneModule;
26
+ exports.ReplaceOneModule = ReplaceOneModule = ReplaceOneModule_1 = __decorate([
27
+ (0, common_1.Module)({})
28
+ ], ReplaceOneModule);
@@ -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 { UpdateOneService } from './update-one-service.interface';
29
+ export declare abstract class BaseUpdateOneService<Entity extends BaseEntity> extends BaseService<Entity> implements UpdateOneService<Entity> {
30
+ protected readonly model: Model<Entity>;
31
+ protected constructor(model: Model<Entity>);
32
+ updateOne(id: string, partial: Partial<Entity>): Promise<Entity>;
33
+ }