UNPKG

@golemio/pid

Version:
99 lines 4.76 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); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransferFacade = void 0; const pid_1 = require("../.."); const data_access_1 = require("../../data-access"); const OgPidToken_1 = require("../../ioc/OgPidToken"); const PIDDepartureModel_1 = __importDefault(require("../../models/helpers/PIDDepartureModel")); const IPIDDepartureQueryOptions_1 = __importDefault(require("../../models/helpers/interfaces/IPIDDepartureQueryOptions")); const shared_1 = require("../../../shared"); const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const TransferDepartureTransformation_1 = require("../transformations/TransferDepartureTransformation"); let TransferFacade = exports.TransferFacade = class TransferFacade { constructor(departureRepository, departureTransformation) { this.departureRepository = departureRepository; this.departureTransformation = departureTransformation; } /** * Retrieves transfer departures for given GTFS stop IDs * - Get transfer departures from DB * - Process them (filter, sort, etc.) * - Transform them to DTO */ async getTransferDepartures(stopIds, tripNumber, currentMoment, minutesOffset, timeZone = shared_1.RopidRouterUtils.TIMEZONE) { let departureEntities = []; try { departureEntities = await this.departureRepository.getTransferDepartures({ stopsIds: stopIds, currentMoment, minutesOffset, }); } catch (error) { if (error instanceof golemio_errors_1.AbstractGolemioError) { throw error; } throw new golemio_errors_1.GeneralError("Failed to retrieve transfer departures", this.constructor.name, error, 500); } if (departureEntities.length === 0) { return []; } let transferDepartures = []; try { const processedDepartures = new PIDDepartureModel_1.default(departureEntities, { ...this.defaultOptions, timezone: timeZone, tripNumber, }).processAndReturnTransfers(); transferDepartures = this.departureTransformation.transformArray(processedDepartures); } catch (error) { if (error instanceof golemio_errors_1.AbstractGolemioError) { throw error; } throw new golemio_errors_1.GeneralError("Failed to process transfer departures", this.constructor.name, error, 500); } return transferDepartures; } /** * Fallback options as defined by ROPID */ get defaultOptions() { return { limit: 16, total: 16, offset: 0, mode: pid_1.DepartureMode.DEPARTURES, order: pid_1.DepartureOrder.REAL, filter: pid_1.DepartureFilter.ROUTE_HEADING_ONCE_NOGAP_FILL, skip: [pid_1.DepartureSkip.CANCELED], departuresDirections: [], runScheduleMap: null, untrackedTrips: null, // not used in this context }; } }; exports.TransferFacade = TransferFacade = __decorate([ (0, tsyringe_1.injectable)(), __param(0, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.DeparturesRepository)), __param(1, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.TransferDepartureTransformation)), __metadata("design:paramtypes", [data_access_1.DeparturesRepository, TransferDepartureTransformation_1.TransferDepartureTransformation]) ], TransferFacade); //# sourceMappingURL=TransferFacade.js.map