json-api-nestjs
Version:
JsonApi Plugin for NestJs
94 lines • 3.26 kB
JavaScript
;
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