UNPKG

@golemio/energetics

Version:
121 lines 6.81 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OrganizationsRepository = void 0; const ModuleContainerToken_1 = require("../ioc/ModuleContainerToken"); const _sch_1 = require("../../schema-definitions"); const output_gateway_1 = require("@golemio/core/dist/output-gateway"); const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const OrganizationsModel_1 = require("../../schema-definitions/models/OrganizationsModel"); const OrganizationResponsibleUsersRepository_1 = require("./OrganizationResponsibleUsersRepository"); const PrimaryBuildingsRepository_1 = require("./PrimaryBuildingsRepository"); const OrganizationsAssociations_1 = require("./helpers/OrganizationsAssociations"); const OrganizationBuildingsRepository_1 = require("./OrganizationBuildingsRepository"); const sequelize_1 = require("@golemio/core/dist/shared/sequelize"); let OrganizationsRepository = exports.OrganizationsRepository = class OrganizationsRepository extends output_gateway_1.SequelizeModel { constructor(userRepository, organizationBuildingsRepository, buildingsRepository) { super("OrganizationsRepository", OrganizationsModel_1.OrganizationsModel.TABLE_NAME, OrganizationsModel_1.OrganizationsModel.attributeModel, { schema: _sch_1.EnergeticsSchema.pgSchema, }); this.userRepository = userRepository; this.organizationBuildingsRepository = organizationBuildingsRepository; this.buildingsRepository = buildingsRepository; this.associate(); } associate() { OrganizationsAssociations_1.OrganizationsAssociations.associateResponsibleUsers(this.sequelizeModel, this.userRepository.sequelizeModel); OrganizationsAssociations_1.OrganizationsAssociations.associateBuildings(this.sequelizeModel, this.buildingsRepository.sequelizeModel, this.organizationBuildingsRepository.sequelizeModel); } async GetAllPublic(params, allowedOrganizations = []) { try { return await this.sequelizeModel.findAll({ attributes: ["id", "name"], where: allowedOrganizations === null ? {} : { id: { [sequelize_1.Op.in]: allowedOrganizations } }, order: [["id", "ASC"]], limit: params.limit, offset: params.offset, }); } catch (err) { throw new golemio_errors_1.GeneralError("Database error - GetAll", this.name, err, 500); } } async GetAll(params, allowedOrganizations = []) { try { return await this.sequelizeModel.findAll({ include: [ { model: this.userRepository.sequelizeModel, as: "responsible_user", attributes: { exclude: ["id", "organization_id"] }, }, { model: this.buildingsRepository.sequelizeModel, as: "buildings", attributes: ["id", "building_name", "building_address_code"], through: { attributes: [] }, }, ], where: allowedOrganizations === null ? {} : { id: { [sequelize_1.Op.in]: allowedOrganizations } }, order: [ ["id", "ASC"], [{ model: this.userRepository.sequelizeModel, as: "responsible_user" }, "id", "ASC"], [{ model: this.buildingsRepository.sequelizeModel, as: "buildings" }, "id", "ASC"], ], limit: params.limit, offset: params.offset, }); } catch (err) { throw new golemio_errors_1.GeneralError("Database error - GetAllDetail", this.name, err, 500); } } async GetOne(id, allowedOrganizations = []) { try { return await this.sequelizeModel.findOne({ include: [ { model: this.userRepository.sequelizeModel, as: "responsible_user", }, { model: this.buildingsRepository.sequelizeModel, as: "buildings", attributes: ["id", "building_name", "building_address_code"], through: { attributes: [] }, }, ], where: { [sequelize_1.Op.and]: [{ id }, allowedOrganizations === null ? {} : { id: { [sequelize_1.Op.in]: allowedOrganizations } }] }, order: [ [{ model: this.userRepository.sequelizeModel, as: "responsible_user" }, "id", "ASC"], [{ model: this.buildingsRepository.sequelizeModel, as: "buildings" }, "id", "ASC"], ], }); } catch (err) { throw new golemio_errors_1.GeneralError("Database error - GetOne", this.name, err, 500); } } }; exports.OrganizationsRepository = OrganizationsRepository = __decorate([ (0, tsyringe_1.injectable)(), __param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.OrganizationResponsibleUsersRepository)), __param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.OrganizationBuildingsRepository)), __param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.PrimaryBuildingsRepository)), __metadata("design:paramtypes", [OrganizationResponsibleUsersRepository_1.OrganizationResponsibleUsersRepository, OrganizationBuildingsRepository_1.OrganizationBuildingsRepository, PrimaryBuildingsRepository_1.PrimaryBuildingsRepository]) ], OrganizationsRepository); //# sourceMappingURL=OrganizationsRepository.js.map