UNPKG

@golemio/pid

Version:
112 lines 7.29 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.DeparturePresetsFacade = void 0; const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken"); const RopidMetadataModel_1 = require("../../shared/RopidMetadataModel"); const ContainerToken_1 = require("@golemio/core/dist/integration-engine/ioc/ContainerToken"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const RopidGtfsFacade_1 = require("../RopidGtfsFacade"); const RopidGtfsMetadataRepository_1 = require("../RopidGtfsMetadataRepository"); const DeparturePresetsRepository_1 = require("../data-access/DeparturePresetsRepository"); const RopidGtfsContainerToken_1 = require("../ioc/RopidGtfsContainerToken"); const RopidDeparturesPresetsTransformation_1 = require("../transformations/RopidDeparturesPresetsTransformation"); const RopidGTFSStopsModel_1 = require("../RopidGTFSStopsModel"); const RopidDeparturesPresetsRopidGTFSStopsRepository_1 = require("../../jis/repositories/RopidDeparturesPresetsRopidGTFSStopsRepository"); const GtfsStopParser_1 = require("../../../helpers/GtfsStopParser"); let DeparturePresetsFacade = exports.DeparturePresetsFacade = class DeparturePresetsFacade { constructor(metadataRepository, ropidGTFSStopsModel, departurePresetsRepository, ropidDeparturesPresetsRopidGTFSStopsRepository, transformationDeparturesPresets, gtfsStopParser, logger) { this.metadataRepository = metadataRepository; this.ropidGTFSStopsModel = ropidGTFSStopsModel; this.departurePresetsRepository = departurePresetsRepository; this.ropidDeparturesPresetsRopidGTFSStopsRepository = ropidDeparturesPresetsRopidGTFSStopsRepository; this.transformationDeparturesPresets = transformationDeparturesPresets; this.gtfsStopParser = gtfsStopParser; this.logger = logger; } async handleNewDeparturePresets(data, lastModified) { const dbLastModified = await this.metadataRepository.getLastModified(RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS); await this.metadataRepository.save({ dataset: RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, key: RopidMetadataModel_1.MetaDatasetInfoKeyEnum.LAST_MODIFIED, type: RopidMetadataModel_1.MetaTypeEnum.DATASET_INFO, value: lastModified, version: dbLastModified.version + 1, }); const transformedData = await this.transformationDeparturesPresets.transform(data); await this.metadataRepository.save({ dataset: RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, key: "departuresPresets", type: RopidMetadataModel_1.MetaTypeEnum.TABLE_TOTAL_COUNT, value: transformedData.length, version: dbLastModified.version + 1, }); try { await this.departurePresetsRepository.truncate(true); await this.departurePresetsRepository.save(transformedData, true); await this.metadataRepository.save({ dataset: RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, key: "departuresPresets", type: RopidMetadataModel_1.MetaTypeEnum.STATE, value: RopidMetadataModel_1.MetaStateEnum.SAVED, version: dbLastModified.version + 1, }); await this.metadataRepository.checkSavedRows(RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, dbLastModified.version + 1); await this.metadataRepository.replaceTmpTables(RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, dbLastModified.version + 1); const mappedPresetsWithGtfsStops = await this.mapPresetsToGtfsStops(); await this.ropidDeparturesPresetsRopidGTFSStopsRepository.refreshData(mappedPresetsWithGtfsStops); } catch (err) { this.logger.error(err); await this.metadataRepository.rollbackFailedSaving(RopidGtfsFacade_1.DatasetEnum.DEPARTURES_PRESETS, dbLastModified.version + 1); } } async mapPresetsToGtfsStops() { const presets = await this.departurePresetsRepository.getAll(); const mappedPresetsWithGtfsStops = []; for (const preset of presets) { const params = new URLSearchParams(preset.url_query_params); const aswIds = params.getAll("aswIds"); const WhereOptions = this.gtfsStopParser.prepareAswWhereOptions(aswIds); for (const WhereOption of WhereOptions) { const stop = await this.ropidGTFSStopsModel.findOne({ where: WhereOption, }); if (!stop) { this.logger.warn(WhereOption, `cannot find gtfs stop with where options`); continue; } mappedPresetsWithGtfsStops.push({ preset_id: preset.id, stop_id: stop.stop_id }); } } return mappedPresetsWithGtfsStops; } }; exports.DeparturePresetsFacade = DeparturePresetsFacade = __decorate([ (0, tsyringe_1.injectable)(), __param(0, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsMetadataRepository)), __param(1, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGTFSStopsModel)), __param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.DeparturePresetsRepository)), __param(3, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidDeparturesPresetsRopidGTFSStopsRepository)), __param(4, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.RopidDeparturesPresetsTransformation)), __param(5, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.GtfsStopParser)), __param(6, (0, tsyringe_1.inject)(ContainerToken_1.ContainerToken.Logger)), __metadata("design:paramtypes", [RopidGtfsMetadataRepository_1.RopidGtfsMetadataRepository, RopidGTFSStopsModel_1.RopidGTFSStopsModel, DeparturePresetsRepository_1.DeparturePresetsRepository, RopidDeparturesPresetsRopidGTFSStopsRepository_1.RopidDeparturesPresetsRopidGTFSStopsRepository, RopidDeparturesPresetsTransformation_1.RopidDeparturesPresetsTransformation, GtfsStopParser_1.GtfsStopParser, Object]) ], DeparturePresetsFacade); //# sourceMappingURL=DeparturePresetsFacade.js.map