@golemio/pid 2.3.3-dev.677483558 → 2.3.3-dev.678665831
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/example/00_clear_test_data.sql +1 -0
- package/db/example/12_metro_line_A_gtfs_trips.sql +128 -0
- package/dist/const.d.ts +1 -0
- package/dist/const.js +1 -0
- package/dist/const.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/SaveMetroRailtrackDataToDBTask.js +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/SaveMetroRailtrackDataToDBTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository.d.ts +3 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository.js +33 -2
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/interfaces/IAggregatedRailtrackGPSData.d.ts +11 -0
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/interfaces/IAggregatedRailtrackGPSData.js +3 -0
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/interfaces/IAggregatedRailtrackGPSData.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.d.ts +1 -7
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.js +9 -34
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/helpers/DateTimeUtils.d.ts +17 -0
- package/dist/integration-engine/vehicle-positions/helpers/DateTimeUtils.js +30 -0
- package/dist/integration-engine/vehicle-positions/helpers/DateTimeUtils.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +24 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js +73 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.d.ts +11 -0
- package/dist/integration-engine/vehicle-positions/helpers/{GtfsTripManager.js → gtfs-trip-run/GTFSTripCommonRunManager.js} +26 -47
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js +70 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.d.ts +8 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.js +23 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.js +3 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js +14 -3
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.js +14 -3
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPPositionsMapper.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPPositionsMapper.js +24 -15
- package/dist/integration-engine/vehicle-positions/models/helpers/VPPositionsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.d.ts +5 -2
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.js +16 -13
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/transformations/index.d.ts +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/index.js +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/index.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js +2 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/DeleteDataTask.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/DeleteDataTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.d.ts +18 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.js +69 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.d.ts +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.js +13 -6
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/{data-access → workers/runs/tasks/data-access}/MetroRunsMessagesRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/{data-access → workers/runs/tasks/data-access}/MetroRunsMessagesRepository.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/MetroRunsMessagesRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/RunTripsRedisRepository.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/RunTripsRedisRepository.js +18 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/RunTripsRedisRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/helpers/MetroRouteHelper.d.ts +8 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/helpers/MetroRouteHelper.js +21 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/helpers/MetroRouteHelper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IMetroRunInputForProcessing.d.ts +11 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IMetroRunInputForProcessing.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IMetroRunInputForProcessing.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IProcessMetroRunsMessagesInput.d.ts +5 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IProcessMetroRunsMessagesInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IProcessMetroRunsMessagesInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroTransformedRunsSchema.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroTransformedRunsSchema.js +63 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroTransformedRunsSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.d.ts +21 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.js +78 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessagesTransformation.d.ts +13 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessagesTransformation.js +43 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessagesTransformation.js.map +1 -0
- package/docs/openapi-output.yaml +1 -0
- package/package.json +3 -3
- package/db/example/12_metro_runs_messages.sql +0 -5
- package/dist/integration-engine/vehicle-positions/data-access/MetroRunsMessagesRepository.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/data-access/index.d.ts +0 -1
- package/dist/integration-engine/vehicle-positions/data-access/index.js +0 -18
- package/dist/integration-engine/vehicle-positions/data-access/index.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/GtfsTripManager.d.ts +0 -19
- package/dist/integration-engine/vehicle-positions/helpers/GtfsTripManager.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/MetroRunsMessagesTransformation.d.ts +0 -6
- package/dist/integration-engine/vehicle-positions/transformations/MetroRunsMessagesTransformation.js +0 -40
- package/dist/integration-engine/vehicle-positions/transformations/MetroRunsMessagesTransformation.js.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class DateTimeUtils {
|
|
2
|
+
private static TIMEZONE;
|
|
3
|
+
private static FORMAT_DATE_TIME;
|
|
4
|
+
private static FORMAT_TIME;
|
|
5
|
+
/**
|
|
6
|
+
* @example 2022-10-26T13:55:42+02:00
|
|
7
|
+
*/
|
|
8
|
+
static formatISOTimestamp(isoTimestamp?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* @example 13:55:42
|
|
11
|
+
*/
|
|
12
|
+
static parseTimeFromEpoch(unixTimestamp?: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* @example 13:55:42
|
|
15
|
+
*/
|
|
16
|
+
static parseTimeFromISO(isoTimestamp?: string): string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateTimeUtils = void 0;
|
|
4
|
+
const luxon_1 = require("@golemio/core/dist/shared/luxon");
|
|
5
|
+
class DateTimeUtils {
|
|
6
|
+
/**
|
|
7
|
+
* @example 2022-10-26T13:55:42+02:00
|
|
8
|
+
*/
|
|
9
|
+
static formatISOTimestamp(isoTimestamp = new Date().toISOString()) {
|
|
10
|
+
return luxon_1.DateTime.fromISO(isoTimestamp).setZone(this.TIMEZONE).toFormat(this.FORMAT_DATE_TIME);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @example 13:55:42
|
|
14
|
+
*/
|
|
15
|
+
static parseTimeFromEpoch(unixTimestamp = new Date().getTime()) {
|
|
16
|
+
return luxon_1.DateTime.fromMillis(unixTimestamp).setZone(this.TIMEZONE).toFormat(this.FORMAT_TIME);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @example 13:55:42
|
|
20
|
+
*/
|
|
21
|
+
static parseTimeFromISO(isoTimestamp = new Date().toISOString()) {
|
|
22
|
+
return luxon_1.DateTime.fromISO(isoTimestamp).setZone(this.TIMEZONE).toFormat(this.FORMAT_TIME);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.DateTimeUtils = DateTimeUtils;
|
|
26
|
+
DateTimeUtils.TIMEZONE = "Europe/Prague";
|
|
27
|
+
// ISO 8601, no fractional seconds (same as moment.defaultFormat)
|
|
28
|
+
DateTimeUtils.FORMAT_DATE_TIME = "yyyy-LL-dd'T'HH:mm:ssZZ";
|
|
29
|
+
DateTimeUtils.FORMAT_TIME = "HH:mm:ss";
|
|
30
|
+
//# sourceMappingURL=DateTimeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimeUtils.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/helpers/DateTimeUtils.ts"],"names":[],"mappings":";;;AAAA,2DAA2D;AAE3D,MAAa,aAAa;IAMtB;;OAEG;IACI,MAAM,CAAC,kBAAkB,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpE,OAAO,gBAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjG,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QACjE,OAAO,gBAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClE,OAAO,gBAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5F,CAAC;;AAzBL,sCA0BC;AAzBkB,sBAAQ,GAAG,eAAe,CAAC;AAC1C,iEAAiE;AAClD,8BAAgB,GAAG,yBAAyB,CAAC;AAC7C,yBAAW,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Moment } from "@golemio/core/dist/shared/moment-timezone";
|
|
2
|
+
import { IVehiclePositionsSchedule } from "../..";
|
|
3
|
+
import { IGtfsRunTripCache, VehiclePositionsPositionsModel, VehiclePositionsTripsModel, VehiclePositionsRunsModel } from "../../models";
|
|
4
|
+
import { RunTripsRedisRepository } from "../../workers/runs/tasks/data-access/RunTripsRedisRepository";
|
|
5
|
+
import { IMetroRunInputForProcessing } from "../../workers/runs/tasks/interfaces/IMetroRunInputForProcessing";
|
|
6
|
+
import { IVehiclePositionsRunCommon } from "../../transformations";
|
|
7
|
+
import { IDelayMessage } from "./interfaces/IDelayMessage";
|
|
8
|
+
export declare abstract class AbstractGTFSTripRunManager {
|
|
9
|
+
protected readonly positionsRepository: VehiclePositionsPositionsModel;
|
|
10
|
+
protected readonly tripsRepository: VehiclePositionsTripsModel;
|
|
11
|
+
protected readonly runsRepository: VehiclePositionsRunsModel;
|
|
12
|
+
protected readonly runTripsRedisRepository: RunTripsRedisRepository;
|
|
13
|
+
protected readonly testMode: boolean;
|
|
14
|
+
constructor(positionsRepository: VehiclePositionsPositionsModel, tripsRepository: VehiclePositionsTripsModel, runsRepository: VehiclePositionsRunsModel, runTripsRedisRepository: RunTripsRedisRepository, testMode?: boolean);
|
|
15
|
+
abstract generateDelayMsg(schedule: IGtfsRunTripCache[], input: IVehiclePositionsRunCommon | IMetroRunInputForProcessing): Promise<IDelayMessage>;
|
|
16
|
+
setAndReturnScheduledTrips: (scheduleData: IVehiclePositionsSchedule) => Promise<IGtfsRunTripCache[]>;
|
|
17
|
+
protected getCurrentTripForRun(schedule: IGtfsRunTripCache[], timestampScheduled: Moment): IGtfsRunTripCache | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Get scheduled trips adjacent to run message timestamp (scheduled)
|
|
20
|
+
* originally based on route id and run number
|
|
21
|
+
*/
|
|
22
|
+
protected getAdjacentTrips(schedule: IGtfsRunTripCache[], timestampScheduled: Moment, currentTripId: string | undefined): IGtfsRunTripCache[];
|
|
23
|
+
private isTripAdjacent;
|
|
24
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AbstractGTFSTripRunManager = void 0;
|
|
16
|
+
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
17
|
+
const vehicle_positions_1 = require("../..");
|
|
18
|
+
const DateTimeUtils_1 = require("../DateTimeUtils");
|
|
19
|
+
class AbstractGTFSTripRunManager {
|
|
20
|
+
constructor(positionsRepository, tripsRepository, runsRepository, runTripsRedisRepository, testMode = false) {
|
|
21
|
+
this.positionsRepository = positionsRepository;
|
|
22
|
+
this.tripsRepository = tripsRepository;
|
|
23
|
+
this.runsRepository = runsRepository;
|
|
24
|
+
this.runTripsRedisRepository = runTripsRedisRepository;
|
|
25
|
+
this.testMode = testMode;
|
|
26
|
+
this.setAndReturnScheduledTrips = (scheduleData) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const { route_id, run_number, msg_last_timestamp } = scheduleData;
|
|
28
|
+
const scheduledTripIds = yield this.runTripsRedisRepository.get(`${route_id}_${run_number}`);
|
|
29
|
+
if (scheduledTripIds === null || scheduledTripIds === void 0 ? void 0 : scheduledTripIds.schedule) {
|
|
30
|
+
return scheduledTripIds.schedule;
|
|
31
|
+
}
|
|
32
|
+
const scheduledTrips = yield this.runsRepository.getScheduledTrips(route_id, run_number, msg_last_timestamp);
|
|
33
|
+
for (const trip of scheduledTrips) {
|
|
34
|
+
// format time to local timezone string
|
|
35
|
+
trip.start_timestamp = DateTimeUtils_1.DateTimeUtils.formatISOTimestamp(trip.start_timestamp);
|
|
36
|
+
trip.end_timestamp = DateTimeUtils_1.DateTimeUtils.formatISOTimestamp(trip.end_timestamp);
|
|
37
|
+
}
|
|
38
|
+
yield this.runTripsRedisRepository.set(`${route_id}_${run_number}`, { schedule: scheduledTrips }, undefined, vehicle_positions_1.VehiclePositionsUtils.getNextExpireTimestamp());
|
|
39
|
+
return scheduledTrips;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getCurrentTripForRun(schedule, timestampScheduled) {
|
|
43
|
+
let currentTrip = undefined;
|
|
44
|
+
for (const tripCache of schedule) {
|
|
45
|
+
const startTimestamp = new Date(tripCache.start_timestamp);
|
|
46
|
+
const endTimestamp = new Date(tripCache.end_timestamp);
|
|
47
|
+
if (!timestampScheduled.isBetween(startTimestamp, endTimestamp, "second", "[]")) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!currentTrip || startTimestamp.getTime() > new Date(currentTrip.start_timestamp).getTime()) {
|
|
51
|
+
currentTrip = tripCache;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return currentTrip;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get scheduled trips adjacent to run message timestamp (scheduled)
|
|
58
|
+
* originally based on route id and run number
|
|
59
|
+
*/
|
|
60
|
+
getAdjacentTrips(schedule, timestampScheduled, currentTripId) {
|
|
61
|
+
return schedule.filter((scheduledTrip) => scheduledTrip.trip_id !== currentTripId && this.isTripAdjacent(scheduledTrip, timestampScheduled));
|
|
62
|
+
}
|
|
63
|
+
isTripAdjacent(scheduledTrip, timestampScheduled) {
|
|
64
|
+
const startTimestamp = (0, moment_timezone_1.default)(scheduledTrip.start_timestamp);
|
|
65
|
+
const endTimestamp = (0, moment_timezone_1.default)(scheduledTrip.end_timestamp);
|
|
66
|
+
const leftBound = timestampScheduled.clone().subtract(15, "minutes");
|
|
67
|
+
const rightBound = timestampScheduled.clone().add(60, "minutes");
|
|
68
|
+
return ((leftBound <= endTimestamp && endTimestamp <= timestampScheduled) ||
|
|
69
|
+
(rightBound >= startTimestamp && startTimestamp >= timestampScheduled));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.AbstractGTFSTripRunManager = AbstractGTFSTripRunManager;
|
|
73
|
+
//# sourceMappingURL=AbstractGTFSTripRunManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractGTFSTripRunManager.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gGAA2E;AAE3E,6CAAyF;AAUzF,oDAAiD;AAGjD,MAAsB,0BAA0B;IAC5C,YACuB,mBAAmD,EACnD,eAA2C,EAC3C,cAAyC,EACzC,uBAAgD,EAChD,WAAoB,KAAK;QAJzB,wBAAmB,GAAnB,mBAAmB,CAAgC;QACnD,oBAAe,GAAf,eAAe,CAA4B;QAC3C,mBAAc,GAAd,cAAc,CAA2B;QACzC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,aAAQ,GAAR,QAAQ,CAAiB;QAQzC,+BAA0B,GAAG,CAAO,YAAuC,EAAgC,EAAE;YAChH,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,YAAY,CAAC;YAClE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;YAC7F,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,QAAQ,EAAE;gBAC5B,OAAO,gBAAgB,CAAC,QAAQ,CAAC;aACpC;YAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC7G,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;gBAC/B,uCAAuC;gBACvC,IAAI,CAAC,eAAe,GAAG,6BAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC9E,IAAI,CAAC,aAAa,GAAG,6BAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC7E;YAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAClC,GAAG,QAAQ,IAAI,UAAU,EAAE,EAC3B,EAAE,QAAQ,EAAE,cAAc,EAAE,EAC5B,SAAS,EACT,yCAAqB,CAAC,sBAAsB,EAAE,CACjD,CAAC;YAEF,OAAO,cAAc,CAAC;QAC1B,CAAC,CAAA,CAAC;IA7BC,CAAC;IA+BM,oBAAoB,CAAC,QAA6B,EAAE,kBAA0B;QACpF,IAAI,WAAW,GAAkC,SAAS,CAAC;QAC3D,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE;YAC9B,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAEvD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;gBAC7E,SAAS;aACZ;YAED,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5F,WAAW,GAAG,SAAS,CAAC;aAC3B;SACJ;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;OAGG;IACO,gBAAgB,CAAC,QAA6B,EAAE,kBAA0B,EAAE,aAAiC;QACnH,OAAO,QAAQ,CAAC,MAAM,CAClB,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,KAAK,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,kBAAkB,CAAC,CACvH,CAAC;IACN,CAAC;IAEO,cAAc,CAAC,aAAgC,EAAE,kBAA0B;QAC/E,MAAM,cAAc,GAAG,IAAA,yBAAM,EAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,IAAA,yBAAM,EAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAEjE,OAAO,CACH,CAAC,SAAS,IAAI,YAAY,IAAI,YAAY,IAAI,kBAAkB,CAAC;YACjE,CAAC,UAAU,IAAI,cAAc,IAAI,cAAc,IAAI,kBAAkB,CAAC,CACzE,CAAC;IACN,CAAC;CACJ;AA7ED,gEA6EC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IGtfsRunTripCache } from "../../models";
|
|
2
|
+
import { IVehiclePositionsRunCommon } from "../../transformations";
|
|
3
|
+
import { IDelayMessage } from "./interfaces/IDelayMessage";
|
|
4
|
+
import { AbstractGTFSTripRunManager } from "./AbstractGTFSTripRunManager";
|
|
5
|
+
export declare class GTFSTripCommonRunManager extends AbstractGTFSTripRunManager {
|
|
6
|
+
generateDelayMsg(schedule: IGtfsRunTripCache[], input: IVehiclePositionsRunCommon): Promise<IDelayMessage>;
|
|
7
|
+
private generateDelayMsgFromCurrentTrip;
|
|
8
|
+
private isCurrentTripTracking;
|
|
9
|
+
private updateLastTripsAndPositions;
|
|
10
|
+
private updateTrip;
|
|
11
|
+
}
|
|
@@ -12,51 +12,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
|
|
15
|
+
exports.GTFSTripCommonRunManager = void 0;
|
|
16
16
|
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this.testMode = testMode;
|
|
24
|
-
}
|
|
25
|
-
generateDelayMsg(actualStopTimestampScheduled, schedule, input) {
|
|
17
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
18
|
+
const const_1 = require("../../../../const");
|
|
19
|
+
const models_1 = require("../../models");
|
|
20
|
+
const AbstractGTFSTripRunManager_1 = require("./AbstractGTFSTripRunManager");
|
|
21
|
+
class GTFSTripCommonRunManager extends AbstractGTFSTripRunManager_1.AbstractGTFSTripRunManager {
|
|
22
|
+
generateDelayMsg(schedule, input) {
|
|
26
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
const
|
|
24
|
+
const timestampScheduled = (0, moment_timezone_1.default)(Number(input.run_message.actual_stop_timestamp_scheduled));
|
|
25
|
+
const currentTrip = this.getCurrentTripForRun(schedule, timestampScheduled);
|
|
28
26
|
let delayMsg = {
|
|
29
27
|
updatedTrips: [],
|
|
30
28
|
positions: [],
|
|
31
|
-
schedule
|
|
29
|
+
schedule,
|
|
32
30
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
for (const tripCache of schedule) {
|
|
36
|
-
const startTimestamp = new Date(tripCache.start_timestamp);
|
|
37
|
-
const endTimestamp = new Date(tripCache.end_timestamp);
|
|
38
|
-
if (!asts.isBetween(startTimestamp, endTimestamp, "second", "[]")) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (!currentTrip || +startTimestamp > +new Date(currentTrip.start_timestamp)) {
|
|
42
|
-
currentTrip = tripCache;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (currentTrip && currentTrip.trip_id) {
|
|
46
|
-
delayMsg = yield this.generateDelayMsgFromCurrentTrip(delayMsg, currentTrip, asts, input);
|
|
31
|
+
if (currentTrip === null || currentTrip === void 0 ? void 0 : currentTrip.trip_id) {
|
|
32
|
+
delayMsg = yield this.generateDelayMsgFromCurrentTrip(delayMsg, currentTrip, timestampScheduled, input);
|
|
47
33
|
}
|
|
48
34
|
else {
|
|
49
|
-
integration_engine_1.log.warn(`
|
|
35
|
+
integration_engine_1.log.warn(`generateDelayMsg: could not find current gtfsTrip for common run: ${JSON.stringify(input)}`);
|
|
50
36
|
}
|
|
51
37
|
// last/next gtfs trip for run
|
|
52
|
-
return this.updateLastTripsAndPositions(schedule,
|
|
38
|
+
return this.updateLastTripsAndPositions(schedule, timestampScheduled, currentTrip === null || currentTrip === void 0 ? void 0 : currentTrip.trip_id, input, delayMsg);
|
|
53
39
|
});
|
|
54
40
|
}
|
|
55
|
-
generateDelayMsgFromCurrentTrip(delayMsg, gtfsCurrentTrip,
|
|
41
|
+
generateDelayMsgFromCurrentTrip(delayMsg, gtfsCurrentTrip, timestampScheduled, input) {
|
|
56
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
43
|
const msgTimestamp = input.run_message.msg_timestamp;
|
|
58
44
|
const event = input.run_message.events;
|
|
59
|
-
const isCurrentTripTracking = this.isCurrentTripTracking(gtfsCurrentTrip, event,
|
|
45
|
+
const isCurrentTripTracking = this.isCurrentTripTracking(gtfsCurrentTrip, event, timestampScheduled, msgTimestamp);
|
|
60
46
|
const { trip, position } = yield this.updateTrip(input, gtfsCurrentTrip, isCurrentTripTracking);
|
|
61
47
|
delayMsg.updatedTrips.push(trip);
|
|
62
48
|
if (this.testMode)
|
|
@@ -64,7 +50,7 @@ class GTFSTripManager {
|
|
|
64
50
|
return delayMsg;
|
|
65
51
|
});
|
|
66
52
|
}
|
|
67
|
-
isCurrentTripTracking(gtfsCurrentTrip, event,
|
|
53
|
+
isCurrentTripTracking(gtfsCurrentTrip, event, timestampScheduled, msgTimestamp) {
|
|
68
54
|
var _a;
|
|
69
55
|
return (
|
|
70
56
|
// tram is always on track while pushes messages only on stops
|
|
@@ -72,15 +58,15 @@ class GTFSTripManager {
|
|
|
72
58
|
// when bus announces DEPARTURE TCP event, it means that trip is on track
|
|
73
59
|
(gtfsCurrentTrip.route_type === models_1.GTFSRouteTypeEnum.BUS && event === const_1.TCPEventEnum.DEPARTURED) ||
|
|
74
60
|
// when trip has set first stop time, and message timestamp is after scheduled start, set as tracking
|
|
75
|
-
(
|
|
61
|
+
(timestampScheduled.isSame((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp)) &&
|
|
76
62
|
(0, moment_timezone_1.default)(msgTimestamp).isSameOrAfter((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp))) ||
|
|
77
63
|
// of course when trip announcing some next stop time in schedule, then set as tracking
|
|
78
|
-
|
|
64
|
+
timestampScheduled.isAfter((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp)))) !== null && _a !== void 0 ? _a : false);
|
|
79
65
|
}
|
|
80
|
-
updateLastTripsAndPositions(schedule,
|
|
66
|
+
updateLastTripsAndPositions(schedule, timestampScheduled, currentTripId, input, delayMsg) {
|
|
81
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const
|
|
83
|
-
for (const gtfsTrip of
|
|
68
|
+
const gtfsAdjacentTrips = this.getAdjacentTrips(schedule, timestampScheduled, currentTripId);
|
|
69
|
+
for (const gtfsTrip of gtfsAdjacentTrips) {
|
|
84
70
|
const { trip, position } = yield this.updateTrip(input, gtfsTrip, false);
|
|
85
71
|
delayMsg.updatedTrips.push(trip);
|
|
86
72
|
if (this.testMode)
|
|
@@ -89,20 +75,13 @@ class GTFSTripManager {
|
|
|
89
75
|
return delayMsg;
|
|
90
76
|
});
|
|
91
77
|
}
|
|
92
|
-
getLastNextTrips(schedule, asts, currentTripId) {
|
|
93
|
-
return schedule.filter((el) => {
|
|
94
|
-
return (((asts.clone().subtract(15, "minutes") <= (0, moment_timezone_1.default)(el.end_timestamp) && (0, moment_timezone_1.default)(el.end_timestamp) <= asts) ||
|
|
95
|
-
(asts <= (0, moment_timezone_1.default)(el.start_timestamp) && (0, moment_timezone_1.default)(el.start_timestamp) <= asts.clone().add(60, "minutes"))) &&
|
|
96
|
-
el.trip_id !== currentTripId);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
78
|
updateTrip(input, gtfsTrip, isTripTracking) {
|
|
100
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
const trip = yield this.
|
|
102
|
-
const position = yield this.
|
|
80
|
+
const trip = yield this.tripsRepository.upsertCommonRunTrip(input, gtfsTrip);
|
|
81
|
+
const position = yield this.positionsRepository.upsertCommonRunPosition(input, gtfsTrip, isTripTracking);
|
|
103
82
|
return { trip, position };
|
|
104
83
|
});
|
|
105
84
|
}
|
|
106
85
|
}
|
|
107
|
-
exports.
|
|
108
|
-
//# sourceMappingURL=
|
|
86
|
+
exports.GTFSTripCommonRunManager = GTFSTripCommonRunManager;
|
|
87
|
+
//# sourceMappingURL=GTFSTripCommonRunManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTFSTripCommonRunManager.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IGtfsRunTripCache } from "../../models";
|
|
2
|
+
import { IDelayMessage } from "./interfaces/IDelayMessage";
|
|
3
|
+
import { AbstractGTFSTripRunManager } from "./AbstractGTFSTripRunManager";
|
|
4
|
+
import { IMetroRunInputForProcessing } from "../../workers/runs/tasks/interfaces/IMetroRunInputForProcessing";
|
|
5
|
+
export declare class GTFSTripMetroRunManager extends AbstractGTFSTripRunManager {
|
|
6
|
+
generateDelayMsg(schedule: IGtfsRunTripCache[], input: IMetroRunInputForProcessing): Promise<IDelayMessage>;
|
|
7
|
+
private generateDelayMsgFromCurrentTrip;
|
|
8
|
+
private updateLastTripsAndPositions;
|
|
9
|
+
private updateTrip;
|
|
10
|
+
}
|
package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.GTFSTripMetroRunManager = void 0;
|
|
16
|
+
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
17
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
18
|
+
const AbstractGTFSTripRunManager_1 = require("./AbstractGTFSTripRunManager");
|
|
19
|
+
class GTFSTripMetroRunManager extends AbstractGTFSTripRunManager_1.AbstractGTFSTripRunManager {
|
|
20
|
+
generateDelayMsg(schedule, input) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const timestampScheduled = (0, moment_timezone_1.default)(input.timestampScheduled);
|
|
23
|
+
const currentTrip = this.getCurrentTripForRun(schedule, timestampScheduled);
|
|
24
|
+
let delayMsg = {
|
|
25
|
+
updatedTrips: [],
|
|
26
|
+
positions: [],
|
|
27
|
+
schedule,
|
|
28
|
+
};
|
|
29
|
+
if (currentTrip === null || currentTrip === void 0 ? void 0 : currentTrip.trip_id) {
|
|
30
|
+
delayMsg = yield this.generateDelayMsgFromCurrentTrip(delayMsg, currentTrip, input);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
integration_engine_1.log.warn(`generateDelayMsg: could not find current gtfsTrip for metro run: ${JSON.stringify(input)}`);
|
|
34
|
+
}
|
|
35
|
+
// last/next gtfs trip for run
|
|
36
|
+
return this.updateLastTripsAndPositions(schedule, timestampScheduled, currentTrip === null || currentTrip === void 0 ? void 0 : currentTrip.trip_id, input, delayMsg);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
generateDelayMsgFromCurrentTrip(delayMsg, gtfsCurrentTrip, input) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const isCurrentTripTracking = true;
|
|
42
|
+
const { trip, position } = yield this.updateTrip(input, gtfsCurrentTrip, isCurrentTripTracking);
|
|
43
|
+
delayMsg.updatedTrips.push(trip);
|
|
44
|
+
if (this.testMode)
|
|
45
|
+
delayMsg.positions.push(position);
|
|
46
|
+
return delayMsg;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
updateLastTripsAndPositions(schedule, timestampScheduled, currentTripId, input, delayMsg) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const gtfsAdjacentTrips = this.getAdjacentTrips(schedule, timestampScheduled, currentTripId);
|
|
52
|
+
for (const gtfsTrip of gtfsAdjacentTrips) {
|
|
53
|
+
const { trip, position } = yield this.updateTrip(input, gtfsTrip, false);
|
|
54
|
+
delayMsg.updatedTrips.push(trip);
|
|
55
|
+
if (this.testMode)
|
|
56
|
+
delayMsg.positions.push(position);
|
|
57
|
+
}
|
|
58
|
+
return delayMsg;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
updateTrip(input, gtfsTrip, isTripTracking) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const trip = yield this.tripsRepository.upsertMetroRunTrip(input, gtfsTrip);
|
|
64
|
+
const position = yield this.positionsRepository.upsertMetroRunPosition(input, gtfsTrip, isTripTracking);
|
|
65
|
+
return { trip, position };
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.GTFSTripMetroRunManager = GTFSTripMetroRunManager;
|
|
70
|
+
//# sourceMappingURL=GTFSTripMetroRunManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTFSTripMetroRunManager.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gGAA2E;AAC3E,8EAA4D;AAG5D,6EAA0E;AAG1E,MAAa,uBAAwB,SAAQ,uDAA0B;IACtD,gBAAgB,CAAC,QAA6B,EAAE,KAAkC;;YAC3F,MAAM,kBAAkB,GAAG,IAAA,yBAAM,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC5E,IAAI,QAAQ,GAAkB;gBAC1B,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,QAAQ;aACX,CAAC;YAEF,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE;gBACtB,QAAQ,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aACvF;iBAAM;gBACH,wBAAG,CAAC,IAAI,CAAC,oEAAoE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACzG;YAED,8BAA8B;YAC9B,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjH,CAAC;KAAA;IAEa,+BAA+B,CACzC,QAAuB,EACvB,eAAkC,EAClC,KAAkC;;YAElC,MAAM,qBAAqB,GAAG,IAAI,CAAC;YACnC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;YAEhG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ;gBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEa,2BAA2B,CACrC,QAA6B,EAC7B,kBAA0B,EAC1B,aAAiC,EACjC,KAAkC,EAClC,QAAuB;;YAEvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;YAE7F,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;gBACtC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAEzE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxD;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEa,UAAU,CAAC,KAAkC,EAAE,QAA2B,EAAE,cAAuB;;YAC7G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAExG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;KAAA;CACJ;AA3DD,0DA2DC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AbstractGTFSTripRunManager } from "./AbstractGTFSTripRunManager";
|
|
2
|
+
export declare enum GTFSTripRunType {
|
|
3
|
+
Common = 0,
|
|
4
|
+
Metro = 1
|
|
5
|
+
}
|
|
6
|
+
export declare class GTFSTripRunManagerFactory {
|
|
7
|
+
static create(runType: GTFSTripRunType, ...params: ConstructorParameters<typeof AbstractGTFSTripRunManager>): AbstractGTFSTripRunManager;
|
|
8
|
+
}
|
package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GTFSTripRunManagerFactory = exports.GTFSTripRunType = void 0;
|
|
4
|
+
const GTFSTripCommonRunManager_1 = require("./GTFSTripCommonRunManager");
|
|
5
|
+
const GTFSTripMetroRunManager_1 = require("./GTFSTripMetroRunManager");
|
|
6
|
+
var GTFSTripRunType;
|
|
7
|
+
(function (GTFSTripRunType) {
|
|
8
|
+
GTFSTripRunType[GTFSTripRunType["Common"] = 0] = "Common";
|
|
9
|
+
GTFSTripRunType[GTFSTripRunType["Metro"] = 1] = "Metro";
|
|
10
|
+
})(GTFSTripRunType = exports.GTFSTripRunType || (exports.GTFSTripRunType = {}));
|
|
11
|
+
class GTFSTripRunManagerFactory {
|
|
12
|
+
static create(runType, ...params) {
|
|
13
|
+
switch (runType) {
|
|
14
|
+
case GTFSTripRunType.Common:
|
|
15
|
+
default:
|
|
16
|
+
return new GTFSTripCommonRunManager_1.GTFSTripCommonRunManager(...params);
|
|
17
|
+
case GTFSTripRunType.Metro:
|
|
18
|
+
return new GTFSTripMetroRunManager_1.GTFSTripMetroRunManager(...params);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.GTFSTripRunManagerFactory = GTFSTripRunManagerFactory;
|
|
23
|
+
//# sourceMappingURL=GTFSTripRunManagerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTFSTripRunManagerFactory.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.ts"],"names":[],"mappings":";;;AACA,yEAAsE;AACtE,uEAAoE;AAEpE,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,yDAAM,CAAA;IACN,uDAAK,CAAA;AACT,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;AAED,MAAa,yBAAyB;IAC3B,MAAM,CAAC,MAAM,CAChB,OAAwB,EACxB,GAAG,MAAgE;QAEnE,QAAQ,OAAO,EAAE;YACb,KAAK,eAAe,CAAC,MAAM,CAAC;YAC5B;gBACI,OAAO,IAAI,mDAAwB,CAAC,GAAG,MAAM,CAAC,CAAC;YAEnD,KAAK,eAAe,CAAC,KAAK;gBACtB,OAAO,IAAI,iDAAuB,CAAC,GAAG,MAAM,CAAC,CAAC;SACrD;IACL,CAAC;CACJ;AAdD,8DAcC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDelayMessage.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.ts"],"names":[],"mappings":""}
|
package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IVehiclePositionsRunCommon } from "../transformations";
|
|
2
|
+
import { IMetroRunInputForProcessing } from "../workers/runs/tasks/interfaces/IMetroRunInputForProcessing";
|
|
2
3
|
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
3
4
|
import { Validator } from "@golemio/core/dist/shared/golemio-validator";
|
|
4
5
|
import Sequelize from "@golemio/core/dist/shared/sequelize";
|
|
@@ -58,7 +59,8 @@ export declare class VehiclePositionsPositionsModel extends PostgresModel implem
|
|
|
58
59
|
constructor();
|
|
59
60
|
getPositionsForUpdateDelay: (tripIds: string[]) => Promise<ITripPositions[]>;
|
|
60
61
|
bulkUpdate: (data: any[]) => Promise<any>;
|
|
61
|
-
|
|
62
|
+
upsertCommonRunPosition: ({ run, run_message }: IVehiclePositionsRunCommon, gtfsTrip: IGtfsRunTripCache, isCurrent?: boolean) => Promise<any>;
|
|
63
|
+
upsertMetroRunPosition: (runInput: IMetroRunInputForProcessing, gtfsTrip: IGtfsRunTripCache, isCurrent?: boolean) => Promise<any>;
|
|
62
64
|
deleteNHoursOldData: (hours: number) => Promise<number>;
|
|
63
65
|
createNotPublic: (input: IVehiclePositionsRunCommon, id: string) => Promise<any>;
|
|
64
66
|
}
|
|
@@ -194,15 +194,26 @@ class VehiclePositionsPositionsModel extends models_1.PostgresModel {
|
|
|
194
194
|
return acc;
|
|
195
195
|
}, { updated: [] });
|
|
196
196
|
});
|
|
197
|
-
this.
|
|
197
|
+
this.upsertCommonRunPosition = ({ run, run_message }, gtfsTrip, isCurrent = true) => __awaiter(this, void 0, void 0, function* () {
|
|
198
198
|
try {
|
|
199
|
-
const [record] = yield this.sequelizeModel.upsert(VPPositionsMapper_1.default.
|
|
199
|
+
const [record] = yield this.sequelizeModel.upsert(VPPositionsMapper_1.default.mapCommonRunToDto(run_message, isCurrent, gtfsTrip, run), {
|
|
200
200
|
returning: true,
|
|
201
201
|
});
|
|
202
202
|
return record.get({ plain: true });
|
|
203
203
|
}
|
|
204
204
|
catch (err) {
|
|
205
|
-
throw new golemio_errors_1.CustomError("
|
|
205
|
+
throw new golemio_errors_1.CustomError("upsertCommonRunPosition: Error while saving to database.", true, this.name, 4001, err);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
this.upsertMetroRunPosition = (runInput, gtfsTrip, isCurrent = true) => __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
try {
|
|
210
|
+
const [record] = yield this.sequelizeModel.upsert(VPPositionsMapper_1.default.mapMetroRunToDto(isCurrent, gtfsTrip, runInput), {
|
|
211
|
+
returning: true,
|
|
212
|
+
});
|
|
213
|
+
return record.get({ plain: true });
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
throw new golemio_errors_1.CustomError("upsertMetroRunPosition: Error while saving to database.", true, this.name, 4001, err);
|
|
206
217
|
}
|
|
207
218
|
});
|
|
208
219
|
this.deleteNHoursOldData = (hours) => __awaiter(this, void 0, void 0, function* () {
|
package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VehiclePositionsPositionsModel.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"VehiclePositionsPositionsModel.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Validator } from "@golemio/core/dist/shared/golemio-validator";
|
|
|
2
2
|
import Sequelize from "@golemio/core/dist/shared/sequelize";
|
|
3
3
|
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
4
4
|
import { IVehiclePositionsRunCommon } from "../transformations";
|
|
5
|
+
import { IMetroRunInputForProcessing } from "../workers/runs/tasks/interfaces/IMetroRunInputForProcessing";
|
|
5
6
|
import { IGtfsRunTripCache } from "./VehiclePositionsRunsModel";
|
|
6
7
|
import { IPropagateDelay } from "../VehiclePositionsInterfaces";
|
|
7
8
|
export interface IGTFSRtFeedEntity {
|
|
@@ -144,7 +145,8 @@ export declare class VehiclePositionsTripsModel extends PostgresModel implements
|
|
|
144
145
|
findGTFSTripId: (trip: IUpdateGTFSTripIdData) => Promise<IUpdateDelayTripsIdsData | IUpdateDelayTripsIdsData[] | undefined>;
|
|
145
146
|
deleteNHoursOldData: (hours: number) => Promise<number>;
|
|
146
147
|
private deduceTimestamps;
|
|
147
|
-
|
|
148
|
+
upsertCommonRunTrip: ({ run }: IVehiclePositionsRunCommon, gtfsTrip: IGtfsRunTripCache) => Promise<IUpdateDelayRunTripsData>;
|
|
149
|
+
upsertMetroRunTrip: (runInput: IMetroRunInputForProcessing, gtfsTrip: IGtfsRunTripCache) => Promise<IUpdateDelayRunTripsData>;
|
|
148
150
|
getPropagateDelayTripsWithPositions: (data: IPropagateDelay) => Promise<any[]>;
|
|
149
151
|
hasOne: (model: any, options: any) => any;
|
|
150
152
|
findAll: (options: any) => Promise<any>;
|
|
@@ -387,15 +387,26 @@ class VehiclePositionsTripsModel extends models_1.PostgresModel {
|
|
|
387
387
|
endTimestamp,
|
|
388
388
|
};
|
|
389
389
|
};
|
|
390
|
-
this.
|
|
390
|
+
this.upsertCommonRunTrip = ({ run }, gtfsTrip) => __awaiter(this, void 0, void 0, function* () {
|
|
391
391
|
try {
|
|
392
|
-
const [record] = yield this.sequelizeModel.upsert(VPTripsMapper_1.default.
|
|
392
|
+
const [record] = yield this.sequelizeModel.upsert(VPTripsMapper_1.default.mapCommonRunToDto(gtfsTrip, run), {
|
|
393
393
|
returning: true,
|
|
394
394
|
});
|
|
395
395
|
return record.get({ plain: true });
|
|
396
396
|
}
|
|
397
397
|
catch (err) {
|
|
398
|
-
throw new golemio_errors_1.CustomError("
|
|
398
|
+
throw new golemio_errors_1.CustomError("upsertCommonRunTrip: Error while saving to database.", true, this.name, 4001, err);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
this.upsertMetroRunTrip = (runInput, gtfsTrip) => __awaiter(this, void 0, void 0, function* () {
|
|
402
|
+
try {
|
|
403
|
+
const [record] = yield this.sequelizeModel.upsert(VPTripsMapper_1.default.mapMetroRunToDto(gtfsTrip, runInput), {
|
|
404
|
+
returning: true,
|
|
405
|
+
});
|
|
406
|
+
return record.get({ plain: true });
|
|
407
|
+
}
|
|
408
|
+
catch (err) {
|
|
409
|
+
throw new golemio_errors_1.CustomError("upsertMetroRunTrip: Error while saving to database.", true, this.name, 4001, err);
|
|
399
410
|
}
|
|
400
411
|
});
|
|
401
412
|
this.getPropagateDelayTripsWithPositions = (data) => __awaiter(this, void 0, void 0, function* () {
|