UNPKG

@golemio/parkings

Version:
65 lines 4.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParkingsWorker = void 0; const SourceEnum_1 = require("../helpers/constants/SourceEnum"); const ParkingsLocationRepository_1 = require("./repositories/ParkingsLocationRepository"); const UpdateAddressWorker_1 = require("./workers/UpdateAddressWorker"); const ParkingMeasurementsDtoSchema_1 = require("../schema-definitions/datasources/ParkingMeasurementsDtoSchema"); const index_1 = require("../schema-definitions/index"); const integration_engine_1 = require("@golemio/core/dist/integration-engine"); const ContainerToken_1 = require("@golemio/core/dist/integration-engine/ioc/ContainerToken"); const models_1 = require("@golemio/core/dist/integration-engine/models"); const workers_1 = require("@golemio/core/dist/integration-engine/workers"); const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator"); const Di_1 = require("./ioc/Di"); const ModuleContainerToken_1 = require("./ioc/ModuleContainerToken"); const KoridParkingConfigTransformation_1 = require("./transformations/KoridParkingConfigTransformation"); const KoridParkingDataTransformation_1 = require("./transformations/KoridParkingDataTransformation"); class ParkingsWorker extends workers_1.BaseWorker { constructor() { super(); /** * Stores locations and tariffs of parking lots in Liberec. */ this.saveKoridConfToDB = async (msg) => { const processingDate = new Date(); const inputData = JSON.parse(msg.content.toString()); const transformedData = await this.koridParkingConfigTransformation.transform(inputData); await this.parkingsModel.saveActiveParkingsWithoutAddress(transformedData.geo, SourceEnum_1.SourceEnum.Korid); await this.parkingsTariffsModel.bulkSave(transformedData.tariff); await this.parkingTariffRelationsRepository.saveTariffsRelations(transformedData.parkingTariffsRelations, SourceEnum_1.SourceEnum.Korid, processingDate); await this.parkingsLocationRepository.saveWithoutAddress(transformedData.location, SourceEnum_1.SourceEnum.Korid); await integration_engine_1.QueueManager.sendMessageToExchange(this.config.RABBIT_EXCHANGE_NAME + "." + UpdateAddressWorker_1.UpdateAddressWorker.workerName.toLowerCase(), "updateMissingParkingsAddresses", {}); }; /** * Stores measurements (available spots/occupancies) of parking lots in Liberec. */ this.saveKoridDataToDB = async (msg) => { const inputData = JSON.parse(msg.content.toString()); const transformedData = await this.koridParkingDataTransformation.transform(inputData); await this.parkingsMeasurementsModel.bulkSave(transformedData); await this.parkingsMeasurementsActualModel.bulkSave(transformedData); }; this.config = Di_1.ParkingsContainer.resolve(ContainerToken_1.ContainerToken.Config); this.koridParkingConfigTransformation = new KoridParkingConfigTransformation_1.KoridParkingConfigTransformation(); this.koridParkingDataTransformation = new KoridParkingDataTransformation_1.KoridParkingDataTransformation(); this.parkingsMeasurementsModel = new models_1.PostgresModel(index_1.Parkings.measurements.name + "Model", { outputSequelizeAttributes: index_1.Parkings.measurements.outputSequelizeAttributes, pgSchema: index_1.Parkings.pgSchema, pgTableName: index_1.Parkings.measurements.pgTableName, savingType: "insertOrUpdate", }, new golemio_validator_1.JSONSchemaValidator(index_1.Parkings.measurements.name + "PgModelValidator", ParkingMeasurementsDtoSchema_1.ParkingMeasurementsDtoSchema)); this.parkingsMeasurementsActualModel = new models_1.PostgresModel(index_1.Parkings.measurementsActual.name + "Model", { outputSequelizeAttributes: index_1.Parkings.measurementsActual.outputSequelizeAttributes, pgSchema: index_1.Parkings.pgSchema, pgTableName: index_1.Parkings.measurementsActual.pgTableName, savingType: "insertOrUpdate", }, new golemio_validator_1.JSONSchemaValidator(index_1.Parkings.measurementsActual.name + "PgModelValidator", ParkingMeasurementsDtoSchema_1.ParkingMeasurementsDtoSchema)); this.parkingTariffRelationsRepository = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingTariffRelationsRepository); this.parkingsModel = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingsRepository); this.parkingsTariffsModel = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingTariffsRepository); this.parkingsLocationRepository = new ParkingsLocationRepository_1.ParkingsLocationRepository(); } } exports.ParkingsWorker = ParkingsWorker; //# sourceMappingURL=ParkingsWorker.js.map