UNPKG

@golemio/parkings

Version:
69 lines 3.53 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParkingAverageOccupancyRepository = void 0; const _sch_1 = require("../../schema-definitions"); const ParkingAverageOccupancyModel_1 = require("../../schema-definitions/models/ParkingAverageOccupancyModel"); const SequelizeModel_1 = require("@golemio/core/dist/output-gateway/models/SequelizeModel"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors"); const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize")); let ParkingAverageOccupancyRepository = exports.ParkingAverageOccupancyRepository = class ParkingAverageOccupancyRepository extends SequelizeModel_1.SequelizeModel { constructor() { super("ParkingAverageOccupancyRepository", ParkingAverageOccupancyModel_1.ParkingAverageOccupancyModel.tableName, ParkingAverageOccupancyModel_1.ParkingAverageOccupancyModel.attributeModel, { schema: _sch_1.Parkings.pgSchema, }); } async GetOccupancy(id, sources) { try { const where = { parking_id: id, source: { [sequelize_1.default.Op.in]: sources }, }; const results = await this.sequelizeModel.findAll({ attributes: [ ...ParkingAverageOccupancyModel_1.ParkingAverageOccupancyModel.rawAttributesModel, [sequelize_1.default.fn("ROUND", sequelize_1.default.col("average_occupancy")), "average_occupancy"], [sequelize_1.default.fn("LPAD", sequelize_1.default.literal("hour::text"), 2, "0"), "hour"], ], where, order: [ ["source", "ASC"], ["source_id", "ASC"], ["day_of_week", "ASC"], ["hour", "ASC"], ], raw: true, }); if (results.length === 0) { return null; } return results; } catch (err) { throw new golemio_errors_1.GeneralError("Database error: GetOne", this.name, err, 500); } } GetAll() { throw new Error("Not implemented"); } GetOne() { throw new Error("Not implemented"); } }; exports.ParkingAverageOccupancyRepository = ParkingAverageOccupancyRepository = __decorate([ (0, tsyringe_1.injectable)(), __metadata("design:paramtypes", []) ], ParkingAverageOccupancyRepository); //# sourceMappingURL=ParkingAverageOccupancyRepository.js.map