UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

84 lines (81 loc) 4.44 kB
import { pluralizer } from '@elsikora/pluralizer'; import '../../../enum/decorator/api/action.enum.js'; import '../../../enum/decorator/api/authentication-type.enum.js'; import '../../../enum/decorator/api/controller/get-list/query/filter/missing-behavior.enum.js'; import '../../../enum/decorator/api/controller/get-list/query/unlisted-fields.enum.js'; import '../../../enum/decorator/api/controller/relation-reference-shape.enum.js'; import '../../../enum/decorator/api/controller/request/target.enum.js'; import '../../../enum/decorator/api/controller/request/transformer-type.enum.js'; import '../../../enum/decorator/api/controller/response-target.enum.js'; import '../../../enum/decorator/api/dto-type.enum.js'; import '../../../enum/decorator/api/function/context-storage-kind.enum.js'; import '../../../enum/decorator/api/function/subscriber-transaction-expectation.enum.js'; import '../../../enum/decorator/api/function/transaction/event-status.enum.js'; import '../../../enum/decorator/api/function/transaction/failure-stage.enum.js'; import '../../../enum/decorator/api/function/transaction/mode.enum.js'; import '../../../enum/decorator/api/function/transaction/outcome.enum.js'; import '../../../enum/decorator/api/function/transaction/owner-kind.enum.js'; import '../../../enum/decorator/api/function/transaction/trace-type.enum.js'; import '../../../enum/decorator/api/function/type.enum.js'; import '../../../enum/decorator/api/on-type.enum.js'; import '../../../enum/decorator/api/property/data-type.enum.js'; import '../../../enum/decorator/api/property/date/identifier.enum.js'; import '../../../enum/decorator/api/property/date/type.enum.js'; import '../../../enum/decorator/api/property/desribe-type.enum.js'; import '../../../enum/decorator/api/property/number-type.enum.js'; import '../../../enum/decorator/api/property/string-type.enum.js'; import '../../../enum/decorator/api/route/subscriber-authorization-expectation.enum.js'; import { EApiRouteType } from '../../../enum/decorator/api/route/type.enum.js'; /** * Builds default Swagger documentation for generated CRUD routes. * @param {object} options - Route documentation inputs. * @param {IApiRouteDocumentationProperties} [options.documentation] - User-provided overrides. * @param {string} options.resourceName - Human-friendly resource name represented by the route. * @param {EApiRouteType} options.routeType - Generated CRUD route type. * @returns {IApiRouteDocumentationProperties} Documentation metadata for ApiMethod. */ function ApiControllerBuildRouteDocumentation(options) { const pluralResourceName = pluralizer.toPlural(options.resourceName); const singularResourceName = pluralizer.toSingular(options.resourceName); let summary; let description; switch (options.routeType) { case EApiRouteType.CREATE: { summary = `Create \`${singularResourceName}\``; description = `Creates a new \`${singularResourceName}\` resource.`; break; } case EApiRouteType.DELETE: { summary = `Delete \`${singularResourceName}\``; description = `Deletes an existing \`${singularResourceName}\` resource.`; break; } case EApiRouteType.GET: { summary = `Get \`${singularResourceName}\``; description = `Returns a single \`${singularResourceName}\` resource by its identifier.`; break; } case EApiRouteType.GET_LIST: { summary = `List \`${pluralResourceName}\``; description = `Returns a paginated list of \`${pluralResourceName}\` resources.`; break; } case EApiRouteType.PARTIAL_UPDATE: { summary = `Partially update \`${singularResourceName}\``; description = `Partially updates an existing \`${singularResourceName}\` resource.`; break; } case EApiRouteType.UPDATE: { summary = `Update \`${singularResourceName}\``; description = `Replaces an existing \`${singularResourceName}\` resource.`; break; } } return { description: options.documentation?.description ?? description, operationId: options.documentation?.operationId, summary: options.documentation?.summary ?? summary, }; } export { ApiControllerBuildRouteDocumentation }; //# sourceMappingURL=build-route-documentation.utility.js.map