json-api-nestjs
Version:
JsonApi Plugin for NestJs
27 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createController = createController;
const common_1 = require("@nestjs/common");
const nestjs_shared_1 = require("../../../utils/nestjs-shared");
const utils_1 = require("./utils");
const constants_1 = require("../../../constants");
const json_base_controller_1 = require("../controller/json-base.controller");
const interceptors_1 = require("../interceptors");
function createController(entity, controller) {
const controllerClass = controller ||
(0, utils_1.nameIt)((0, utils_1.getProviderName)(entity, constants_1.JSON_API_CONTROLLER_POSTFIX), json_base_controller_1.JsonBaseController);
const entityName = entity.name;
if (!Object.prototype.isPrototypeOf.call(json_base_controller_1.JsonBaseController, controllerClass)) {
throw new Error(`Controller "${controller?.name}" should be inherited of "JsonBaseController"`);
}
const decoratorOptions = Reflect.getMetadata(constants_1.JSON_API_DECORATOR_OPTIONS, controllerClass);
const controllerPath = decoratorOptions && decoratorOptions['overrideRoute']
? decoratorOptions['overrideRoute'].toString()
: `${(0, nestjs_shared_1.camelToKebab)(entityName)}`;
(0, common_1.Controller)(controllerPath)(controllerClass);
(0, common_1.Inject)(constants_1.ORM_SERVICE)(controllerClass.prototype, constants_1.ORM_SERVICE_PROPS);
(0, common_1.UseInterceptors)(interceptors_1.LogTimeInterceptors)(controllerClass);
(0, common_1.UseInterceptors)(interceptors_1.ErrorInterceptors)(controllerClass);
return controllerClass;
}
//# sourceMappingURL=create-controller.js.map