@elsikora/nestjs-crud-automator 2.0.4-dev.1 → 2.1.0-dev.1

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.
@@ -1,6 +1,8 @@
1
1
  import { EApiRouteType } from '../../../../../../../enum/decorator/api';
2
2
  import { IApiControllerPropertiesRouteBaseGeneration, IApiControllerPropertiesRouteBaseRelations, IApiControllerPropertiesRouteBaseRequest, IApiControllerPropertiesRouteBaseResponse, IApiControllerPropertiesRouteBaseSecurity } from '../../../..';
3
+ import { IApiRouteDocumentationProperties } from '../../../../route/documentation-properties.interface';
3
4
  export interface IApiControllerPropertiesRouteBase<E, R extends EApiRouteType> {
5
+ documentation?: IApiRouteDocumentationProperties;
4
6
  generation?: IApiControllerPropertiesRouteBaseGeneration;
5
7
  relations?: IApiControllerPropertiesRouteBaseRelations<E>;
6
8
  request?: IApiControllerPropertiesRouteBaseRequest<E, R>;
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "dependencies": {
4
+ "@elsikora/pluralizer": "^2.0.0",
4
5
  "dotenv": "^17.4.2",
5
6
  "reflect-metadata": "^0.2.2",
6
7
  "rxjs": "^7.8.2"
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var method_decorator = require('../../../../decorator/api/method.decorator.js');
4
- var action_enum = require('../../../../enum/decorator/api/action.enum.js');
4
+ require('../../../../enum/decorator/api/action.enum.js');
5
5
  require('../../../../enum/decorator/api/authentication-type.enum.js');
6
6
  require('../../../../enum/decorator/api/controller/load-relations-strategy.enum.js');
7
7
  require('../../../../enum/decorator/api/controller/relation-reference-shape.enum.js');
@@ -20,6 +20,7 @@ require('../../../../enum/decorator/api/property/number-type.enum.js');
20
20
  require('../../../../enum/decorator/api/property/string-type.enum.js');
21
21
  var routeType_enum = require('../../../../enum/decorator/api/route-type.enum.js');
22
22
  var common = require('@nestjs/common');
23
+ var buildRouteDocumentation_utility = require('../build-route-documentation.utility.js');
23
24
  var dto_utility = require('../get/dto.utility.js');
24
25
  var exception_utility = require('../../../error/exception.utility.js');
25
26
 
@@ -42,31 +43,31 @@ function ApiControllerApplyDecorators(targetMethod, entity, properties, method,
42
43
  const customDecorators = [...decorators];
43
44
  switch (method) {
44
45
  case routeType_enum.EApiRouteType.CREATE: {
45
- customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.POST, "", common.HttpStatus.CREATED, responseDto, { hasConflict: true, hasInternalServerError: true, hasUnauthorized: true }, action_enum.EApiAction.CREATE) }));
46
+ customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.POST, "", common.HttpStatus.CREATED, responseDto, { hasConflict: true, hasInternalServerError: true, hasUnauthorized: true }) }));
46
47
  break;
47
48
  }
48
49
  case routeType_enum.EApiRouteType.DELETE: {
49
- customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.DELETE, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.NO_CONTENT, undefined, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, action_enum.EApiAction.DELETE) }));
50
+ customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.DELETE, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.NO_CONTENT, undefined, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
50
51
  break;
51
52
  }
52
53
  case routeType_enum.EApiRouteType.GET: {
53
54
  customDecorators.push(method_decorator.ApiMethod({
54
- metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.GET, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, action_enum.EApiAction.FETCH),
55
+ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.GET, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }),
55
56
  }));
56
57
  break;
57
58
  }
58
59
  case routeType_enum.EApiRouteType.GET_LIST: {
59
60
  customDecorators.push(method_decorator.ApiMethod({
60
- metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.GET, "", common.HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, action_enum.EApiAction.FETCH_LIST),
61
+ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.GET, "", common.HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }),
61
62
  }));
62
63
  break;
63
64
  }
64
65
  case routeType_enum.EApiRouteType.PARTIAL_UPDATE: {
65
- customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.PATCH, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, action_enum.EApiAction.UPDATE) }));
66
+ customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.PATCH, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
66
67
  break;
67
68
  }
68
69
  case routeType_enum.EApiRouteType.UPDATE: {
69
- customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.PUT, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, action_enum.EApiAction.UPDATE) }));
70
+ customDecorators.push(method_decorator.ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, common.RequestMethod.PUT, `:${String(entity.primaryKey?.name)}`, common.HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
70
71
  break;
71
72
  }
72
73
  default: {
@@ -91,14 +92,11 @@ function ApiControllerApplyDecorators(targetMethod, entity, properties, method,
91
92
  * @param {HttpStatus} status - Successful HTTP status code.
92
93
  * @param {Type<unknown> | undefined} responseType - Swagger and serialization response DTO type.
93
94
  * @param {NonNullable<IApiRouteMetadata<E>["response"]>["errors"]} errors - Standard error response flags.
94
- * @param {EApiAction} documentationAction - Action label used for generated documentation.
95
95
  * @returns {IApiRouteMetadata<E>} Route metadata consumed by ApiMethod and the route runtime.
96
96
  */
97
- function createRouteMetadata(properties, routeConfig, routeType, requestMethod, path, status, responseType, errors, documentationAction) {
97
+ function createRouteMetadata(properties, routeConfig, routeType, requestMethod, path, status, responseType, errors) {
98
98
  return {
99
- documentation: {
100
- summary: documentationAction,
101
- },
99
+ documentation: buildRouteDocumentation_utility.ApiControllerBuildRouteDocumentation({ documentation: routeConfig.documentation, resourceName: properties.name ?? properties.entity.name ?? "UnknownResource", routeType }),
102
100
  resource: {
103
101
  action: routeType,
104
102
  entity: properties.entity,
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.utility.js","sources":["../../../../../../../src/utility/api/controller/apply/decorators.utility.ts"],"sourcesContent":[null],"names":["ApiControllerGetDto","EApiDtoType","EApiRouteType","ApiMethod","RequestMethod","HttpStatus","EApiAction","ErrorException"],"mappings":"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"}
1
+ {"version":3,"file":"decorators.utility.js","sources":["../../../../../../../src/utility/api/controller/apply/decorators.utility.ts"],"sourcesContent":[null],"names":["ApiControllerGetDto","EApiDtoType","EApiRouteType","ApiMethod","RequestMethod","HttpStatus","ErrorException","ApiControllerBuildRouteDocumentation"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EApiRouteType } from '../../../enum/decorator/api';
2
+ import { IApiRouteDocumentationProperties } from '../../../interface/decorator/api/route/documentation-properties.interface';
3
+ /**
4
+ * Builds default Swagger documentation for generated CRUD routes.
5
+ * @param {object} options - Route documentation inputs.
6
+ * @param {IApiRouteDocumentationProperties} [options.documentation] - User-provided overrides.
7
+ * @param {string} options.resourceName - Human-friendly resource name represented by the route.
8
+ * @param {EApiRouteType} options.routeType - Generated CRUD route type.
9
+ * @returns {IApiRouteDocumentationProperties} Documentation metadata for ApiMethod.
10
+ */
11
+ export declare function ApiControllerBuildRouteDocumentation(options: {
12
+ documentation?: IApiRouteDocumentationProperties;
13
+ resourceName: string;
14
+ routeType: EApiRouteType;
15
+ }): IApiRouteDocumentationProperties;
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ var pluralizer = require('@elsikora/pluralizer');
4
+ require('../../../enum/decorator/api/action.enum.js');
5
+ require('../../../enum/decorator/api/authentication-type.enum.js');
6
+ require('../../../enum/decorator/api/controller/load-relations-strategy.enum.js');
7
+ require('../../../enum/decorator/api/controller/relation-reference-shape.enum.js');
8
+ require('../../../enum/decorator/api/controller/request/target.enum.js');
9
+ require('../../../enum/decorator/api/controller/request/transformer-type.enum.js');
10
+ require('../../../enum/decorator/api/controller/response-target.enum.js');
11
+ require('../../../enum/decorator/api/dto-type.enum.js');
12
+ require('../../../enum/decorator/api/function-transaction-mode.enum.js');
13
+ require('../../../enum/decorator/api/function-type.enum.js');
14
+ require('../../../enum/decorator/api/on-type.enum.js');
15
+ require('../../../enum/decorator/api/property/data-type.enum.js');
16
+ require('../../../enum/decorator/api/property/date/identifier.enum.js');
17
+ require('../../../enum/decorator/api/property/date/type.enum.js');
18
+ require('../../../enum/decorator/api/property/desribe-type.enum.js');
19
+ require('../../../enum/decorator/api/property/number-type.enum.js');
20
+ require('../../../enum/decorator/api/property/string-type.enum.js');
21
+ var routeType_enum = require('../../../enum/decorator/api/route-type.enum.js');
22
+
23
+ /**
24
+ * Builds default Swagger documentation for generated CRUD routes.
25
+ * @param {object} options - Route documentation inputs.
26
+ * @param {IApiRouteDocumentationProperties} [options.documentation] - User-provided overrides.
27
+ * @param {string} options.resourceName - Human-friendly resource name represented by the route.
28
+ * @param {EApiRouteType} options.routeType - Generated CRUD route type.
29
+ * @returns {IApiRouteDocumentationProperties} Documentation metadata for ApiMethod.
30
+ */
31
+ function ApiControllerBuildRouteDocumentation(options) {
32
+ const resourceName = pluralizer.pluralizer.toPlural(options.resourceName);
33
+ let summary;
34
+ let description;
35
+ switch (options.routeType) {
36
+ case routeType_enum.EApiRouteType.CREATE: {
37
+ summary = `Creating \`${resourceName}\``;
38
+ description = `This method is used for creating \`${resourceName}\``;
39
+ break;
40
+ }
41
+ case routeType_enum.EApiRouteType.DELETE: {
42
+ summary = `Deleting \`${resourceName}\``;
43
+ description = `This method is used for deleting \`${resourceName}\``;
44
+ break;
45
+ }
46
+ case routeType_enum.EApiRouteType.GET: {
47
+ summary = `Fetching \`${resourceName}\``;
48
+ description = `This method is used for fetching \`${resourceName}\``;
49
+ break;
50
+ }
51
+ case routeType_enum.EApiRouteType.GET_LIST: {
52
+ summary = `Fetching list of \`${resourceName}\``;
53
+ description = `This method is used for fetching list of \`${resourceName}\``;
54
+ break;
55
+ }
56
+ case routeType_enum.EApiRouteType.PARTIAL_UPDATE: {
57
+ summary = `Partially updating \`${resourceName}\``;
58
+ description = `This method is used for partially updating \`${resourceName}\``;
59
+ break;
60
+ }
61
+ case routeType_enum.EApiRouteType.UPDATE: {
62
+ summary = `Updating \`${resourceName}\``;
63
+ description = `This method is used for updating \`${resourceName}\``;
64
+ break;
65
+ }
66
+ }
67
+ return {
68
+ description: options.documentation?.description ?? description,
69
+ operationId: options.documentation?.operationId,
70
+ summary: options.documentation?.summary ?? summary,
71
+ };
72
+ }
73
+
74
+ exports.ApiControllerBuildRouteDocumentation = ApiControllerBuildRouteDocumentation;
75
+ //# sourceMappingURL=build-route-documentation.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-route-documentation.utility.js","sources":["../../../../../../src/utility/api/controller/build-route-documentation.utility.ts"],"sourcesContent":[null],"names":["pluralizer","EApiRouteTypeValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;AAOG;AACG,SAAU,oCAAoC,CAAC,OAA6G,EAAA;IACjK,MAAM,YAAY,GAAWA,qBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;AACtE,IAAA,IAAI,OAAe;AACnB,IAAA,IAAI,WAAmB;AAEvB,IAAA,QAAQ,OAAO,CAAC,SAAS;AACxB,QAAA,KAAKC,4BAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,4BAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,4BAAkB,CAAC,GAAG,EAAE;AAC5B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,4BAAkB,CAAC,QAAQ,EAAE;AACjC,YAAA,OAAO,GAAG,CAAA,mBAAA,EAAsB,YAAY,CAAA,EAAA,CAAI;AAChD,YAAA,WAAW,GAAG,CAAA,2CAAA,EAA8C,YAAY,CAAA,EAAA,CAAI;YAE5E;QACD;AAEA,QAAA,KAAKA,4BAAkB,CAAC,cAAc,EAAE;AACvC,YAAA,OAAO,GAAG,CAAA,qBAAA,EAAwB,YAAY,CAAA,EAAA,CAAI;AAClD,YAAA,WAAW,GAAG,CAAA,6CAAA,EAAgD,YAAY,CAAA,EAAA,CAAI;YAE9E;QACD;AAEA,QAAA,KAAKA,4BAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;;IAGD,OAAO;AACN,QAAA,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW,IAAI,WAAW;AAC9D,QAAA,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW;AAC/C,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO;KAClD;AACF;;;;"}
@@ -1,6 +1,8 @@
1
1
  import { EApiRouteType } from '../../../../../../../enum/decorator/api';
2
2
  import { IApiControllerPropertiesRouteBaseGeneration, IApiControllerPropertiesRouteBaseRelations, IApiControllerPropertiesRouteBaseRequest, IApiControllerPropertiesRouteBaseResponse, IApiControllerPropertiesRouteBaseSecurity } from '../../../..';
3
+ import { IApiRouteDocumentationProperties } from '../../../../route/documentation-properties.interface';
3
4
  export interface IApiControllerPropertiesRouteBase<E, R extends EApiRouteType> {
5
+ documentation?: IApiRouteDocumentationProperties;
4
6
  generation?: IApiControllerPropertiesRouteBaseGeneration;
5
7
  relations?: IApiControllerPropertiesRouteBaseRelations<E>;
6
8
  request?: IApiControllerPropertiesRouteBaseRequest<E, R>;
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "dependencies": {
4
+ "@elsikora/pluralizer": "^2.0.0",
4
5
  "dotenv": "^17.4.2",
5
6
  "reflect-metadata": "^0.2.2",
6
7
  "rxjs": "^7.8.2"
@@ -1,5 +1,5 @@
1
1
  import { ApiMethod } from '../../../../decorator/api/method.decorator.js';
2
- import { EApiAction } from '../../../../enum/decorator/api/action.enum.js';
2
+ import '../../../../enum/decorator/api/action.enum.js';
3
3
  import '../../../../enum/decorator/api/authentication-type.enum.js';
4
4
  import '../../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
5
5
  import '../../../../enum/decorator/api/controller/relation-reference-shape.enum.js';
@@ -18,6 +18,7 @@ import '../../../../enum/decorator/api/property/number-type.enum.js';
18
18
  import '../../../../enum/decorator/api/property/string-type.enum.js';
19
19
  import { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum.js';
20
20
  import { HttpStatus, RequestMethod } from '@nestjs/common';
21
+ import { ApiControllerBuildRouteDocumentation } from '../build-route-documentation.utility.js';
21
22
  import { ApiControllerGetDto } from '../get/dto.utility.js';
22
23
  import { ErrorException } from '../../../error/exception.utility.js';
23
24
 
@@ -40,31 +41,31 @@ function ApiControllerApplyDecorators(targetMethod, entity, properties, method,
40
41
  const customDecorators = [...decorators];
41
42
  switch (method) {
42
43
  case EApiRouteType.CREATE: {
43
- customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.POST, "", HttpStatus.CREATED, responseDto, { hasConflict: true, hasInternalServerError: true, hasUnauthorized: true }, EApiAction.CREATE) }));
44
+ customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.POST, "", HttpStatus.CREATED, responseDto, { hasConflict: true, hasInternalServerError: true, hasUnauthorized: true }) }));
44
45
  break;
45
46
  }
46
47
  case EApiRouteType.DELETE: {
47
- customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.DELETE, `:${String(entity.primaryKey?.name)}`, HttpStatus.NO_CONTENT, undefined, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, EApiAction.DELETE) }));
48
+ customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.DELETE, `:${String(entity.primaryKey?.name)}`, HttpStatus.NO_CONTENT, undefined, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
48
49
  break;
49
50
  }
50
51
  case EApiRouteType.GET: {
51
52
  customDecorators.push(ApiMethod({
52
- metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.GET, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, EApiAction.FETCH),
53
+ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.GET, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }),
53
54
  }));
54
55
  break;
55
56
  }
56
57
  case EApiRouteType.GET_LIST: {
57
58
  customDecorators.push(ApiMethod({
58
- metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.GET, "", HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, EApiAction.FETCH_LIST),
59
+ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.GET, "", HttpStatus.OK, responseDto, { hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }),
59
60
  }));
60
61
  break;
61
62
  }
62
63
  case EApiRouteType.PARTIAL_UPDATE: {
63
- customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.PATCH, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, EApiAction.UPDATE) }));
64
+ customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.PATCH, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
64
65
  break;
65
66
  }
66
67
  case EApiRouteType.UPDATE: {
67
- customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.PUT, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }, EApiAction.UPDATE) }));
68
+ customDecorators.push(ApiMethod({ metadata: createRouteMetadata(properties, routeConfig, method, RequestMethod.PUT, `:${String(entity.primaryKey?.name)}`, HttpStatus.OK, responseDto, { hasBadRequest: true, hasConflict: true, hasInternalServerError: true, hasNotFound: true, hasUnauthorized: true }) }));
68
69
  break;
69
70
  }
70
71
  default: {
@@ -89,14 +90,11 @@ function ApiControllerApplyDecorators(targetMethod, entity, properties, method,
89
90
  * @param {HttpStatus} status - Successful HTTP status code.
90
91
  * @param {Type<unknown> | undefined} responseType - Swagger and serialization response DTO type.
91
92
  * @param {NonNullable<IApiRouteMetadata<E>["response"]>["errors"]} errors - Standard error response flags.
92
- * @param {EApiAction} documentationAction - Action label used for generated documentation.
93
93
  * @returns {IApiRouteMetadata<E>} Route metadata consumed by ApiMethod and the route runtime.
94
94
  */
95
- function createRouteMetadata(properties, routeConfig, routeType, requestMethod, path, status, responseType, errors, documentationAction) {
95
+ function createRouteMetadata(properties, routeConfig, routeType, requestMethod, path, status, responseType, errors) {
96
96
  return {
97
- documentation: {
98
- summary: documentationAction,
99
- },
97
+ documentation: ApiControllerBuildRouteDocumentation({ documentation: routeConfig.documentation, resourceName: properties.name ?? properties.entity.name ?? "UnknownResource", routeType }),
100
98
  resource: {
101
99
  action: routeType,
102
100
  entity: properties.entity,
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.utility.js","sources":["../../../../../../../src/utility/api/controller/apply/decorators.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.utility.js","sources":["../../../../../../../src/utility/api/controller/apply/decorators.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EApiRouteType } from '../../../enum/decorator/api';
2
+ import { IApiRouteDocumentationProperties } from '../../../interface/decorator/api/route/documentation-properties.interface';
3
+ /**
4
+ * Builds default Swagger documentation for generated CRUD routes.
5
+ * @param {object} options - Route documentation inputs.
6
+ * @param {IApiRouteDocumentationProperties} [options.documentation] - User-provided overrides.
7
+ * @param {string} options.resourceName - Human-friendly resource name represented by the route.
8
+ * @param {EApiRouteType} options.routeType - Generated CRUD route type.
9
+ * @returns {IApiRouteDocumentationProperties} Documentation metadata for ApiMethod.
10
+ */
11
+ export declare function ApiControllerBuildRouteDocumentation(options: {
12
+ documentation?: IApiRouteDocumentationProperties;
13
+ resourceName: string;
14
+ routeType: EApiRouteType;
15
+ }): IApiRouteDocumentationProperties;
@@ -0,0 +1,73 @@
1
+ import { pluralizer } from '@elsikora/pluralizer';
2
+ import '../../../enum/decorator/api/action.enum.js';
3
+ import '../../../enum/decorator/api/authentication-type.enum.js';
4
+ import '../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
5
+ import '../../../enum/decorator/api/controller/relation-reference-shape.enum.js';
6
+ import '../../../enum/decorator/api/controller/request/target.enum.js';
7
+ import '../../../enum/decorator/api/controller/request/transformer-type.enum.js';
8
+ import '../../../enum/decorator/api/controller/response-target.enum.js';
9
+ import '../../../enum/decorator/api/dto-type.enum.js';
10
+ import '../../../enum/decorator/api/function-transaction-mode.enum.js';
11
+ import '../../../enum/decorator/api/function-type.enum.js';
12
+ import '../../../enum/decorator/api/on-type.enum.js';
13
+ import '../../../enum/decorator/api/property/data-type.enum.js';
14
+ import '../../../enum/decorator/api/property/date/identifier.enum.js';
15
+ import '../../../enum/decorator/api/property/date/type.enum.js';
16
+ import '../../../enum/decorator/api/property/desribe-type.enum.js';
17
+ import '../../../enum/decorator/api/property/number-type.enum.js';
18
+ import '../../../enum/decorator/api/property/string-type.enum.js';
19
+ import { EApiRouteType } from '../../../enum/decorator/api/route-type.enum.js';
20
+
21
+ /**
22
+ * Builds default Swagger documentation for generated CRUD routes.
23
+ * @param {object} options - Route documentation inputs.
24
+ * @param {IApiRouteDocumentationProperties} [options.documentation] - User-provided overrides.
25
+ * @param {string} options.resourceName - Human-friendly resource name represented by the route.
26
+ * @param {EApiRouteType} options.routeType - Generated CRUD route type.
27
+ * @returns {IApiRouteDocumentationProperties} Documentation metadata for ApiMethod.
28
+ */
29
+ function ApiControllerBuildRouteDocumentation(options) {
30
+ const resourceName = pluralizer.toPlural(options.resourceName);
31
+ let summary;
32
+ let description;
33
+ switch (options.routeType) {
34
+ case EApiRouteType.CREATE: {
35
+ summary = `Creating \`${resourceName}\``;
36
+ description = `This method is used for creating \`${resourceName}\``;
37
+ break;
38
+ }
39
+ case EApiRouteType.DELETE: {
40
+ summary = `Deleting \`${resourceName}\``;
41
+ description = `This method is used for deleting \`${resourceName}\``;
42
+ break;
43
+ }
44
+ case EApiRouteType.GET: {
45
+ summary = `Fetching \`${resourceName}\``;
46
+ description = `This method is used for fetching \`${resourceName}\``;
47
+ break;
48
+ }
49
+ case EApiRouteType.GET_LIST: {
50
+ summary = `Fetching list of \`${resourceName}\``;
51
+ description = `This method is used for fetching list of \`${resourceName}\``;
52
+ break;
53
+ }
54
+ case EApiRouteType.PARTIAL_UPDATE: {
55
+ summary = `Partially updating \`${resourceName}\``;
56
+ description = `This method is used for partially updating \`${resourceName}\``;
57
+ break;
58
+ }
59
+ case EApiRouteType.UPDATE: {
60
+ summary = `Updating \`${resourceName}\``;
61
+ description = `This method is used for updating \`${resourceName}\``;
62
+ break;
63
+ }
64
+ }
65
+ return {
66
+ description: options.documentation?.description ?? description,
67
+ operationId: options.documentation?.operationId,
68
+ summary: options.documentation?.summary ?? summary,
69
+ };
70
+ }
71
+
72
+ export { ApiControllerBuildRouteDocumentation };
73
+ //# sourceMappingURL=build-route-documentation.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-route-documentation.utility.js","sources":["../../../../../../src/utility/api/controller/build-route-documentation.utility.ts"],"sourcesContent":[null],"names":["EApiRouteTypeValue"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;AAOG;AACG,SAAU,oCAAoC,CAAC,OAA6G,EAAA;IACjK,MAAM,YAAY,GAAW,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;AACtE,IAAA,IAAI,OAAe;AACnB,IAAA,IAAI,WAAmB;AAEvB,IAAA,QAAQ,OAAO,CAAC,SAAS;AACxB,QAAA,KAAKA,aAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,aAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,aAAkB,CAAC,GAAG,EAAE;AAC5B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;AAEA,QAAA,KAAKA,aAAkB,CAAC,QAAQ,EAAE;AACjC,YAAA,OAAO,GAAG,CAAA,mBAAA,EAAsB,YAAY,CAAA,EAAA,CAAI;AAChD,YAAA,WAAW,GAAG,CAAA,2CAAA,EAA8C,YAAY,CAAA,EAAA,CAAI;YAE5E;QACD;AAEA,QAAA,KAAKA,aAAkB,CAAC,cAAc,EAAE;AACvC,YAAA,OAAO,GAAG,CAAA,qBAAA,EAAwB,YAAY,CAAA,EAAA,CAAI;AAClD,YAAA,WAAW,GAAG,CAAA,6CAAA,EAAgD,YAAY,CAAA,EAAA,CAAI;YAE9E;QACD;AAEA,QAAA,KAAKA,aAAkB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,EAAA,CAAI;AACxC,YAAA,WAAW,GAAG,CAAA,mCAAA,EAAsC,YAAY,CAAA,EAAA,CAAI;YAEpE;QACD;;IAGD,OAAO;AACN,QAAA,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW,IAAI,WAAW;AAC9D,QAAA,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW;AAC/C,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO;KAClD;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elsikora/nestjs-crud-automator",
3
- "version": "2.0.4-dev.1",
3
+ "version": "2.1.0-dev.1",
4
4
  "description": "A library for automating the creation of CRUD operations in NestJS.",
5
5
  "keywords": [
6
6
  "NestJS",