@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
84 lines (81 loc) • 4.44 kB
JavaScript
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