UNPKG

json-api-nestjs

Version:
94 lines 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExplorerService = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const core_1 = require("@nestjs/core"); const constants_1 = require("../constants"); const utils_1 = require("../utils"); let ExplorerService = class ExplorerService { modulesContainer; mapEntity; mapController; mapModuleByController = new Map(); getControllerByEntityName(entityName) { const entity = this.mapEntity.get(entityName); if (!entity) { throw new Error(); } const controller = this.mapController.get(entity); if (!controller) { throw new Error(); } return controller; } getMethodNameByParam(operation, id, rel) { switch (operation) { case utils_1.Operation.add: return id ? 'postRelationship' : 'postOne'; case utils_1.Operation.remove: return rel ? 'deleteRelationship' : 'deleteOne'; case utils_1.Operation.update: return rel ? 'patchRelationship' : 'patchOne'; default: throw new Error(); } } getParamsForMethod(methodName, data) { const { op, ref, ...other } = data; switch (methodName) { case 'postOne': return [other]; case 'patchOne': return [ref.id, other]; case 'deleteOne': return [ref.id]; case 'deleteRelationship': return [ ref.id, ref.relationship, other, ]; case 'patchRelationship': return [ ref.id, ref.relationship, other, ]; case 'postRelationship': return [ ref.id, ref.relationship, other, ]; } } getModulesByController(controllers) { const module = this.mapModuleByController.get(controllers); if (module) { return module; } const findModule = [...this.modulesContainer.values()].find((i) => [...i.controllers.values()].find((c) => c.name === controllers.name)); if (findModule) { return findModule; } throw new Error(); } }; exports.ExplorerService = ExplorerService; tslib_1.__decorate([ (0, common_1.Inject)(core_1.ModulesContainer), tslib_1.__metadata("design:type", core_1.ModulesContainer) ], ExplorerService.prototype, "modulesContainer", void 0); tslib_1.__decorate([ (0, common_1.Inject)(constants_1.MAP_ENTITY), tslib_1.__metadata("design:type", Object) ], ExplorerService.prototype, "mapEntity", void 0); tslib_1.__decorate([ (0, common_1.Inject)(constants_1.MAP_CONTROLLER_ENTITY), tslib_1.__metadata("design:type", Object) ], ExplorerService.prototype, "mapController", void 0); exports.ExplorerService = ExplorerService = tslib_1.__decorate([ (0, common_1.Injectable)() ], ExplorerService); //# sourceMappingURL=explorer.service.js.map