@golemio/parkings
Version:
Golemio Parkings Module
65 lines • 4.97 kB
JavaScript
;
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