json-api-nestjs
Version:
JsonApi Plugin for NestJs
104 lines • 4.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MicroOrmService = void 0;
const tslib_1 = require("tslib");
const nestjs_shared_1 = require("../../../utils/nestjs-shared");
const common_1 = require("@nestjs/common");
const orm_methods_1 = require("../orm-methods");
const micro_orm_util_service_1 = require("./micro-orm-util.service");
const json_api_transformer_service_1 = require("../../mixin/service/json-api-transformer.service");
class MicroOrmService {
microOrmUtilService;
jsonApiTransformerService;
async getAll(query) {
const { page } = query;
const { totalItems, items } = await orm_methods_1.getAll.call(this, query);
const { data, included } = this.jsonApiTransformerService.transformData(items, query);
const meta = {
totalItems: totalItems,
pageNumber: page.number,
pageSize: page.size,
};
return {
meta,
data,
...(included ? { included } : {}),
};
}
async getOne(id, query) {
const result = await orm_methods_1.getOne.call(this, id, query);
const { data, included } = this.jsonApiTransformerService.transformData(result, query);
return {
meta: {},
data,
...(included ? { included } : {}),
};
}
async deleteOne(id) {
await orm_methods_1.deleteOne.call(this, id);
}
async postOne(inputData) {
const result = await orm_methods_1.postOne.call(this, inputData);
const { relationships } = inputData;
const fakeQuery = {
[nestjs_shared_1.QueryField.fields]: null,
[nestjs_shared_1.QueryField.include]: Object.keys(relationships || {}),
};
const resultForResponse = await orm_methods_1.getOne.call(this, result[this.microOrmUtilService.currentPrimaryColumn], fakeQuery);
const { data, included } = this.jsonApiTransformerService.transformData(resultForResponse, fakeQuery);
return {
meta: {},
data,
...(included ? { included } : {}),
};
}
async patchOne(id, inputData) {
await orm_methods_1.patchOne.call(this, id, inputData);
const { relationships } = inputData;
const fakeQuery = {
[nestjs_shared_1.QueryField.fields]: null,
[nestjs_shared_1.QueryField.include]: Object.keys(relationships || {}),
};
const resultForResponse = await orm_methods_1.getOne.call(this, id, fakeQuery);
const { data, included } = this.jsonApiTransformerService.transformData(resultForResponse, fakeQuery);
return {
meta: {},
data,
...(included ? { included } : {}),
};
}
async getRelationship(id, rel) {
const result = await orm_methods_1.getRelationship.call(this, id, rel);
return {
meta: {},
data: this.jsonApiTransformerService.transformRel(result, rel),
};
}
async deleteRelationship(id, rel, input) {
await orm_methods_1.deleteRelationship.call(this, id, rel, input);
}
async postRelationship(id, rel, input) {
const result = await orm_methods_1.postRelationship.call(this, id, rel, input);
return {
meta: {},
data: this.jsonApiTransformerService.transformRel(result, rel),
};
}
async patchRelationship(id, rel, input) {
const result = await orm_methods_1.patchRelationship.call(this, id, rel, input);
return {
meta: {},
data: this.jsonApiTransformerService.transformRel(result, rel),
};
}
}
exports.MicroOrmService = MicroOrmService;
tslib_1.__decorate([
(0, common_1.Inject)(micro_orm_util_service_1.MicroOrmUtilService),
tslib_1.__metadata("design:type", micro_orm_util_service_1.MicroOrmUtilService)
], MicroOrmService.prototype, "microOrmUtilService", void 0);
tslib_1.__decorate([
(0, common_1.Inject)(json_api_transformer_service_1.JsonApiTransformerService),
tslib_1.__metadata("design:type", json_api_transformer_service_1.JsonApiTransformerService)
], MicroOrmService.prototype, "jsonApiTransformerService", void 0);
//# sourceMappingURL=microorm-service.js.map