@golemio/pid 2.12.10 → 2.12.11-dev.1271718352

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.
Files changed (149) hide show
  1. package/db/example/12_metro_line_A_gtfs_trips.sql +1 -2
  2. package/db/example/15_vehicle_descriptors.sql +3 -3
  3. package/db/example/redis/publicDepartureBoardsMock.json +13 -0
  4. package/db/example/redis/publicVehiclePositionsMock.json +24 -0
  5. package/db/migrations/postgresql/20240418133218-detailed-stop-times.js +53 -0
  6. package/db/migrations/postgresql/20240424122841-delay-at-past-stops-release-part-1.js +53 -0
  7. package/db/migrations/postgresql/sqls/20240418133218-detailed-stop-times-down.sql +263 -0
  8. package/db/migrations/postgresql/sqls/20240418133218-detailed-stop-times-up.sql +174 -0
  9. package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-down.sql +1 -0
  10. package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-up.sql +98 -0
  11. package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.d.ts +4 -3
  12. package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js +8 -6
  13. package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js.map +1 -1
  14. package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.d.ts +14 -0
  15. package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js +82 -0
  16. package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js.map +1 -0
  17. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.d.ts +10 -2
  18. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +81 -10
  19. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
  20. package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.d.ts +12 -0
  21. package/dist/{schema-definitions/vehicle-positions/models/views/interfaces/IStopTimeDelayPredictionDto.js → integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.js} +1 -1
  22. package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.js.map +1 -0
  23. package/dist/integration-engine/ropid-gtfs/ioc/Di.js +10 -0
  24. package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
  25. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +4 -0
  26. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +4 -0
  27. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
  28. package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.d.ts +7 -0
  29. package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js +36 -0
  30. package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js.map +1 -0
  31. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.d.ts +2 -1
  32. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +9 -1
  33. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
  34. package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.d.ts +1 -0
  35. package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.js +5 -0
  36. package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.js.map +1 -0
  37. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +4 -0
  38. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
  39. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.d.ts +21 -0
  40. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js +102 -0
  41. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js.map +1 -0
  42. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.d.ts +3 -2
  43. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js +9 -7
  44. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js.map +1 -1
  45. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.d.ts +4 -0
  46. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.js +3 -0
  47. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.js.map +1 -0
  48. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.d.ts +5 -0
  49. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.js +31 -0
  50. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.js.map +1 -0
  51. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts +1 -0
  52. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +30 -12
  53. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
  54. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.d.ts +1 -4
  55. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js +5 -21
  56. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js.map +1 -1
  57. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.d.ts +0 -1
  58. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +4 -21
  59. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  60. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicApiCacheRepository.js +6 -1
  61. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicApiCacheRepository.js.map +1 -1
  62. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicStopTimeCacheRepository.d.ts +4 -1
  63. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicStopTimeCacheRepository.js +39 -2
  64. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicStopTimeCacheRepository.js.map +1 -1
  65. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js +3 -0
  66. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js.map +1 -1
  67. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/MpvMessageTransformation.d.ts +3 -6
  68. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/MpvMessageTransformation.js +8 -19
  69. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/MpvMessageTransformation.js.map +1 -1
  70. package/dist/output-gateway/index.js.map +1 -1
  71. package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js +2 -1
  72. package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js.map +1 -1
  73. package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.d.ts +8 -0
  74. package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js +65 -0
  75. package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js.map +1 -0
  76. package/dist/output-gateway/public/controllers/v1/interfaces/PublicParamsInterfaces.d.ts +10 -0
  77. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.d.ts +11 -0
  78. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js +72 -0
  79. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js.map +1 -0
  80. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.d.ts +1 -0
  81. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js +22 -2
  82. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js.map +1 -1
  83. package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.d.ts +9 -0
  84. package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.js +3 -0
  85. package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.js.map +1 -0
  86. package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.d.ts +34 -0
  87. package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.js +3 -0
  88. package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.js.map +1 -0
  89. package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.d.ts +4 -0
  90. package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.js +3 -0
  91. package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.js.map +1 -0
  92. package/dist/output-gateway/public/domain/repository/IVehiclePositionsRepository.d.ts +1 -0
  93. package/dist/output-gateway/public/ioc/Di.js +8 -0
  94. package/dist/output-gateway/public/ioc/Di.js.map +1 -1
  95. package/dist/output-gateway/public/ioc/OgModuleToken.d.ts +2 -0
  96. package/dist/output-gateway/public/ioc/OgModuleToken.js +2 -0
  97. package/dist/output-gateway/public/ioc/OgModuleToken.js.map +1 -1
  98. package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.d.ts +10 -0
  99. package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.js +28 -0
  100. package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.js.map +1 -0
  101. package/dist/output-gateway/public/routers/v1/{PublicRouter.d.ts → PublicVehiclePositionsRouter.d.ts} +3 -3
  102. package/dist/output-gateway/public/routers/v1/{PublicRouter.js → PublicVehiclePositionsRouter.js} +8 -8
  103. package/dist/output-gateway/public/routers/v1/PublicVehiclePositionsRouter.js.map +1 -0
  104. package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.d.ts +5 -0
  105. package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.js +42 -0
  106. package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.js.map +1 -0
  107. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.d.ts +17 -0
  108. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js +117 -0
  109. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js.map +1 -0
  110. package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.d.ts +34 -0
  111. package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.js +54 -0
  112. package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.js.map +1 -0
  113. package/dist/output-gateway/shared/DepartureCalculator.d.ts +10 -0
  114. package/dist/output-gateway/shared/DepartureCalculator.js +26 -0
  115. package/dist/output-gateway/shared/DepartureCalculator.js.map +1 -0
  116. package/dist/output-gateway/shared/RopidRouterUtils.d.ts +2 -1
  117. package/dist/output-gateway/shared/RopidRouterUtils.js +4 -3
  118. package/dist/output-gateway/shared/RopidRouterUtils.js.map +1 -1
  119. package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
  120. package/dist/schema-definitions/ropid-gtfs/redis/const.js +5 -0
  121. package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -0
  122. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.d.ts +12 -0
  123. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.js +3 -0
  124. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.js.map +1 -0
  125. package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.d.ts +4 -0
  126. package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js +69 -0
  127. package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js.map +1 -0
  128. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.d.ts +3 -0
  129. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js +12 -0
  130. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js.map +1 -1
  131. package/dist/schema-definitions/vehicle-positions/models/views/index.d.ts +0 -1
  132. package/dist/schema-definitions/vehicle-positions/models/views/index.js +0 -1
  133. package/dist/schema-definitions/vehicle-positions/models/views/index.js.map +1 -1
  134. package/dist/schema-definitions/vehicle-positions/models/views/interfaces/IPublicStopTimeDto.d.ts +3 -0
  135. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IPublicStopTimeCacheDto.d.ts +3 -0
  136. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js +26 -1
  137. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js.map +1 -1
  138. package/docs/implementation_documentation.md +26 -0
  139. package/docs/openapi-output.yaml +233 -0
  140. package/package.json +1 -1
  141. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/views/StopTimeDelayPredictionRepository.d.ts +0 -7
  142. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/views/StopTimeDelayPredictionRepository.js +0 -19
  143. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/views/StopTimeDelayPredictionRepository.js.map +0 -1
  144. package/dist/output-gateway/public/routers/v1/PublicRouter.js.map +0 -1
  145. package/dist/schema-definitions/vehicle-positions/models/views/StopTimeDelayPredictionModel.d.ts +0 -13
  146. package/dist/schema-definitions/vehicle-positions/models/views/StopTimeDelayPredictionModel.js +0 -41
  147. package/dist/schema-definitions/vehicle-positions/models/views/StopTimeDelayPredictionModel.js.map +0 -1
  148. package/dist/schema-definitions/vehicle-positions/models/views/interfaces/IStopTimeDelayPredictionDto.d.ts +0 -9
  149. package/dist/schema-definitions/vehicle-positions/models/views/interfaces/IStopTimeDelayPredictionDto.js.map +0 -1
@@ -0,0 +1,117 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DepartureBoardFacade = void 0;
13
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
14
+ const PublicDepartureTransformation_1 = require("../transformations/PublicDepartureTransformation");
15
+ const trace_provider_1 = require("@golemio/core/dist/monitoring/opentelemetry/trace-provider");
16
+ class DepartureBoardFacade {
17
+ constructor(departureRepository, tripRepository, descriptorRepository) {
18
+ this.departureRepository = departureRepository;
19
+ this.tripRepository = tripRepository;
20
+ this.descriptorRepository = descriptorRepository;
21
+ this.transformation = new PublicDepartureTransformation_1.PublicDepartureTransformation();
22
+ }
23
+ getAll(stopIds, limit, routeShortNames, minutesAfter) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ let output = [];
26
+ const sortedStopGroups = this.sortStopGroupsByPriority(stopIds);
27
+ for (const stopGroup of sortedStopGroups) {
28
+ let outputGroup = [];
29
+ const spanDepartures = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.getPublicDepartureCache`);
30
+ const departures = yield this.departureRepository.getPublicGtfsDepartureCache(stopGroup.stopIds, minutesAfter);
31
+ spanDepartures === null || spanDepartures === void 0 ? void 0 : spanDepartures.end();
32
+ const spanVehicles = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.getAllVehicleIdsAndDupl`);
33
+ try {
34
+ for (const departure of departures) {
35
+ const vehicleIds = yield this.tripRepository.getAllVehicleIdsForTrip(departure.trip_id);
36
+ const duplicatedDepartures = yield this.duplicateDeparturesWithDifferentVehicleIds(departure, vehicleIds);
37
+ outputGroup = outputGroup.concat(duplicatedDepartures);
38
+ }
39
+ }
40
+ catch (err) {
41
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
42
+ throw err;
43
+ }
44
+ throw new golemio_errors_1.GeneralError("Error while retrieving cached data", this.constructor.name, err, 500);
45
+ }
46
+ finally {
47
+ spanVehicles === null || spanVehicles === void 0 ? void 0 : spanVehicles.end();
48
+ }
49
+ const spanManipulate = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.manipulateDepartures`);
50
+ try {
51
+ if (routeShortNames) {
52
+ outputGroup = outputGroup.filter((departure) => routeShortNames.includes(departure.route.short_name));
53
+ }
54
+ outputGroup = this.sortDeparturesByPredictedTimestamp(outputGroup);
55
+ // minutesBefore is set to 0 because we want to display departures that are already happening
56
+ // this may change in the future
57
+ outputGroup = this.removeDeparturesOutsideTimeRange(outputGroup, 0, minutesAfter).slice(0, limit);
58
+ }
59
+ catch (err) {
60
+ throw new golemio_errors_1.GeneralError("Error while manipulating departures", this.constructor.name, err, 500);
61
+ }
62
+ finally {
63
+ spanManipulate === null || spanManipulate === void 0 ? void 0 : spanManipulate.end();
64
+ }
65
+ output.push(outputGroup);
66
+ }
67
+ return output;
68
+ });
69
+ }
70
+ duplicateDeparturesWithDifferentVehicleIds(departure, vehicleIds) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ let outputGroup = [];
73
+ // If there are no vehicleIds, we still want to display the departure
74
+ // but without any RT/vehicle information
75
+ if (vehicleIds.length === 0) {
76
+ outputGroup.push(this.transformation.transformElement({
77
+ departure,
78
+ vehicleId: null,
79
+ vehiclePosition: null,
80
+ vehicleDescriptor: null,
81
+ }));
82
+ return outputGroup;
83
+ }
84
+ // Otherwise, we want to duplicate the departure for each vehicleId
85
+ // (multiple vehicles can be on the same trip at the same time)
86
+ for (const vehicleId of vehicleIds) {
87
+ const vehiclePosition = yield this.tripRepository.getDetailedVehiclePosition(vehicleId);
88
+ const vehicleDescriptor = (vehiclePosition === null || vehiclePosition === void 0 ? void 0 : vehiclePosition.detailed_info.registration_number)
89
+ ? yield this.descriptorRepository.getOneByRegNumber(departure.route_type, vehiclePosition === null || vehiclePosition === void 0 ? void 0 : vehiclePosition.detailed_info.registration_number)
90
+ : null;
91
+ outputGroup.push(this.transformation.transformElement({
92
+ departure,
93
+ vehicleId,
94
+ vehiclePosition,
95
+ vehicleDescriptor,
96
+ }));
97
+ }
98
+ return outputGroup;
99
+ });
100
+ }
101
+ removeDeparturesOutsideTimeRange(departureGroup, minutesBefore, minutesAfter) {
102
+ const now = new Date();
103
+ const timeRangeStart = new Date(now.getTime() - minutesBefore * 60 * 1000);
104
+ const timeRangeEnd = new Date(now.getTime() + minutesAfter * 60 * 1000);
105
+ departureGroup = departureGroup.filter((departure) => new Date(departure.departure.timestamp_predicted) >= timeRangeStart &&
106
+ new Date(departure.departure.timestamp_predicted) <= timeRangeEnd);
107
+ return departureGroup;
108
+ }
109
+ sortStopGroupsByPriority(stopIds) {
110
+ return Array.from(stopIds).sort((a, b) => a.priority - b.priority);
111
+ }
112
+ sortDeparturesByPredictedTimestamp(departureGroup) {
113
+ return departureGroup.sort((a, b) => new Date(a.departure.timestamp_predicted).getTime() - new Date(b.departure.timestamp_predicted).getTime());
114
+ }
115
+ }
116
+ exports.DepartureBoardFacade = DepartureBoardFacade;
117
+ //# sourceMappingURL=DepartureBoardFacade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { IPublicDepartureTransformInputDto } from "../../domain/IPublicDepartureTransformInputDto";
2
+ import { IPublicApiDeparture } from "../../domain/PublicApiDepartureInterfaces";
3
+ import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
4
+ export declare class PublicDepartureTransformation extends AbstractTransformation<IPublicDepartureTransformInputDto, IPublicApiDeparture> {
5
+ name: string;
6
+ protected transformInternal: (inputDto: IPublicDepartureTransformInputDto) => {
7
+ departure: {
8
+ timestamp_scheduled: string;
9
+ timestamp_predicted: string;
10
+ delay_seconds: number | null;
11
+ minutes: number;
12
+ };
13
+ stop: {
14
+ id: string;
15
+ sequence: number;
16
+ platform_code: string | null;
17
+ };
18
+ route: {
19
+ type: string;
20
+ short_name: string;
21
+ };
22
+ trip: {
23
+ id: string;
24
+ headsign: string;
25
+ is_canceled: boolean;
26
+ };
27
+ vehicle: {
28
+ id: string | null;
29
+ is_wheelchair_accessible: boolean | null;
30
+ is_air_conditioned: boolean | null;
31
+ has_charger: boolean | null;
32
+ };
33
+ };
34
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublicDepartureTransformation = void 0;
4
+ const RouteTypeEnums_1 = require("../../../../helpers/RouteTypeEnums");
5
+ const DepartureCalculator_1 = require("../../../shared/DepartureCalculator");
6
+ const RopidRouterUtils_1 = require("../../../shared/RopidRouterUtils");
7
+ const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
8
+ const const_1 = require("../../../../const");
9
+ class PublicDepartureTransformation extends AbstractTransformation_1.AbstractTransformation {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = "PublicDepartureTransformation";
13
+ this.transformInternal = (inputDto) => {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ const { departure, vehicleId, vehiclePosition, vehicleDescriptor } = inputDto;
16
+ const delayInSeconds = (_a = vehiclePosition === null || vehiclePosition === void 0 ? void 0 : vehiclePosition.delay) !== null && _a !== void 0 ? _a : null;
17
+ const departureTime = new Date(departure.departure_datetime);
18
+ const arrivalTime = departure.arrival_datetime ? new Date(departure.arrival_datetime) : null;
19
+ const predictedDepartureTime = DepartureCalculator_1.DepartureCalculator.getPredictedDepartureTime(departureTime, arrivalTime, delayInSeconds);
20
+ return {
21
+ departure: {
22
+ timestamp_scheduled: (_b = RopidRouterUtils_1.RopidRouterUtils.formatTimestamp(departureTime)) !== null && _b !== void 0 ? _b : departure.departure_datetime,
23
+ timestamp_predicted: (_c = RopidRouterUtils_1.RopidRouterUtils.formatTimestamp(predictedDepartureTime)) !== null && _c !== void 0 ? _c : departure.departure_datetime,
24
+ delay_seconds: delayInSeconds,
25
+ minutes: DepartureCalculator_1.DepartureCalculator.getDepartureMinutes(predictedDepartureTime),
26
+ },
27
+ stop: {
28
+ id: departure.stop_id,
29
+ sequence: departure.stop_sequence,
30
+ // NOTE platform_code is always null for trains
31
+ // fill from realtime data (CIS stop platform code) if needed in the future
32
+ platform_code: departure.platform_code,
33
+ },
34
+ route: {
35
+ type: RouteTypeEnums_1.GTFSRouteTypeEnum[departure.route_type].toLowerCase(),
36
+ short_name: departure.route_short_name,
37
+ },
38
+ trip: {
39
+ id: departure.trip_id,
40
+ headsign: departure.trip_headsign,
41
+ is_canceled: (vehiclePosition === null || vehiclePosition === void 0 ? void 0 : vehiclePosition.state_position) === const_1.StatePositionEnum.CANCELED,
42
+ },
43
+ vehicle: {
44
+ id: vehicleId,
45
+ is_wheelchair_accessible: (_d = vehiclePosition === null || vehiclePosition === void 0 ? void 0 : vehiclePosition.detailed_info.is_wheelchair_accessible) !== null && _d !== void 0 ? _d : null,
46
+ is_air_conditioned: (_e = vehicleDescriptor === null || vehicleDescriptor === void 0 ? void 0 : vehicleDescriptor.is_air_conditioned) !== null && _e !== void 0 ? _e : null,
47
+ has_charger: (_f = vehicleDescriptor === null || vehicleDescriptor === void 0 ? void 0 : vehicleDescriptor.has_usb_chargers) !== null && _f !== void 0 ? _f : null,
48
+ },
49
+ };
50
+ };
51
+ }
52
+ }
53
+ exports.PublicDepartureTransformation = PublicDepartureTransformation;
54
+ //# sourceMappingURL=PublicDepartureTransformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicDepartureTransformation.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/transformations/PublicDepartureTransformation.ts"],"names":[],"mappings":";;;AAAA,uEAA4D;AAG5D,6EAAqE;AACrE,uEAA+D;AAC/D,6GAA0G;AAC1G,6CAA8C;AAE9C,MAAa,6BAA8B,SAAQ,+CAGlD;IAHD;;QAIW,SAAI,GAAG,+BAA+B,CAAC;QAEpC,sBAAiB,GAAG,CAAC,QAA2C,EAAE,EAAE;;YAC1E,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAAC;YAE9E,MAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,mCAAI,IAAI,CAAC;YACtD,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7F,MAAM,sBAAsB,GAAG,yCAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YAEzH,OAAO;gBACH,SAAS,EAAE;oBACP,mBAAmB,EAAE,MAAA,mCAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,mCAAI,SAAS,CAAC,kBAAkB;oBACpG,mBAAmB,EAAE,MAAA,mCAAgB,CAAC,eAAe,CAAC,sBAAsB,CAAC,mCAAI,SAAS,CAAC,kBAAkB;oBAC7G,aAAa,EAAE,cAAc;oBAC7B,OAAO,EAAE,yCAAmB,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;iBAC3E;gBACD,IAAI,EAAE;oBACF,EAAE,EAAE,SAAS,CAAC,OAAO;oBACrB,QAAQ,EAAE,SAAS,CAAC,aAAa;oBACjC,+CAA+C;oBAC/C,6EAA6E;oBAC7E,aAAa,EAAE,SAAS,CAAC,aAAa;iBACzC;gBACD,KAAK,EAAE;oBACH,IAAI,EAAE,kCAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;oBAC3D,UAAU,EAAE,SAAS,CAAC,gBAAgB;iBACzC;gBACD,IAAI,EAAE;oBACF,EAAE,EAAE,SAAS,CAAC,OAAO;oBACrB,QAAQ,EAAE,SAAS,CAAC,aAAa;oBACjC,WAAW,EAAE,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,MAAK,yBAAiB,CAAC,QAAQ;iBAC9E;gBACD,OAAO,EAAE;oBACL,EAAE,EAAE,SAAS;oBACb,wBAAwB,EAAE,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,aAAa,CAAC,wBAAwB,mCAAI,IAAI;oBACzF,kBAAkB,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,kBAAkB,mCAAI,IAAI;oBACjE,WAAW,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,gBAAgB,mCAAI,IAAI;iBAC3D;aACJ,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CAAA;AA7CD,sEA6CC"}
@@ -0,0 +1,10 @@
1
+ export declare class DepartureCalculator {
2
+ /**
3
+ * Calculates the predicted departure time based on the scheduled departure time, arrival time and delay.
4
+ **/
5
+ static getPredictedDepartureTime: (departureTime: Date, arrivalTime: Date | null, delayInSeconds: number | null) => Date;
6
+ /**
7
+ * Calculates the number of minutes until the predicted departure time.
8
+ **/
9
+ static getDepartureMinutes: (predictedDepartureTime: Date) => number;
10
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DepartureCalculator = void 0;
4
+ class DepartureCalculator {
5
+ }
6
+ exports.DepartureCalculator = DepartureCalculator;
7
+ /**
8
+ * Calculates the predicted departure time based on the scheduled departure time, arrival time and delay.
9
+ **/
10
+ DepartureCalculator.getPredictedDepartureTime = (departureTime, arrivalTime, delayInSeconds) => {
11
+ let delayInSecondsWithDefault = delayInSeconds !== null && delayInSeconds !== void 0 ? delayInSeconds : 0;
12
+ let adjustedDepartureTime = new Date(departureTime.getTime() + delayInSecondsWithDefault * 1000);
13
+ if (arrivalTime && delayInSecondsWithDefault > 0) {
14
+ const dwellInSeconds = (departureTime.getTime() - arrivalTime.getTime()) / 1000;
15
+ const minDwellInSeconds = Math.min(delayInSecondsWithDefault, dwellInSeconds);
16
+ adjustedDepartureTime.setTime(adjustedDepartureTime.getTime() - minDwellInSeconds * 1000);
17
+ }
18
+ return adjustedDepartureTime;
19
+ };
20
+ /**
21
+ * Calculates the number of minutes until the predicted departure time.
22
+ **/
23
+ DepartureCalculator.getDepartureMinutes = (predictedDepartureTime) => {
24
+ return Math.round((predictedDepartureTime.getTime() - new Date().getTime()) / (60 * 1000));
25
+ };
26
+ //# sourceMappingURL=DepartureCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepartureCalculator.js","sourceRoot":"","sources":["../../../src/output-gateway/shared/DepartureCalculator.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAmB;;AAAhC,kDA4BC;AA3BG;;IAEI;AACU,6CAAyB,GAAG,CACtC,aAAmB,EACnB,WAAwB,EACxB,cAA6B,EACzB,EAAE;IACN,IAAI,yBAAyB,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,CAAC;IACpD,IAAI,qBAAqB,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAEjG,IAAI,WAAW,IAAI,yBAAyB,GAAG,CAAC,EAAE;QAC9C,MAAM,cAAc,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QAChF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;QAE9E,qBAAqB,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC;KAC7F;IAED,OAAO,qBAAqB,CAAC;AACjC,CAAC,CAAC;AAEF;;IAEI;AACU,uCAAmB,GAAG,CAAC,sBAA4B,EAAU,EAAE;IACzE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/F,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { ClassConstructor } from "@golemio/core/dist/shared/class-transformer";
2
2
  import { ParsedQs } from "qs";
3
3
  export declare class RopidRouterUtils {
4
+ static TIMEZONE: string;
4
5
  /**
5
6
  * Convert plain object to DTO class instance
6
7
  */
@@ -8,7 +9,7 @@ export declare class RopidRouterUtils {
8
9
  /**
9
10
  * Format to ISO 8601 (without milliseconds)
10
11
  */
11
- static formatTimestamp: (dateObject: Date | null, preferredTimezone: string) => string | null;
12
+ static formatTimestamp: (dateObject: Date | null, preferredTimezone?: string) => string | null;
12
13
  /**
13
14
  * Validate and return timezone (it is possible to use _ symbol instead of URL encoded / symbol)
14
15
  */
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RopidRouterUtils = void 0;
7
- const config_1 = require("@golemio/core/dist/output-gateway/config");
8
7
  const Logger_1 = require("@golemio/core/dist/output-gateway/Logger");
9
- const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
8
+ const config_1 = require("@golemio/core/dist/output-gateway/config");
10
9
  const class_transformer_1 = require("@golemio/core/dist/shared/class-transformer");
10
+ const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
11
11
  class RopidRouterUtils {
12
12
  }
13
13
  exports.RopidRouterUtils = RopidRouterUtils;
14
+ RopidRouterUtils.TIMEZONE = "Europe/Prague";
14
15
  /**
15
16
  * Convert plain object to DTO class instance
16
17
  */
@@ -20,7 +21,7 @@ RopidRouterUtils.mapObjectToDTOInstance = (dto, data) => {
20
21
  /**
21
22
  * Format to ISO 8601 (without milliseconds)
22
23
  */
23
- RopidRouterUtils.formatTimestamp = (dateObject, preferredTimezone) => {
24
+ RopidRouterUtils.formatTimestamp = (dateObject, preferredTimezone = RopidRouterUtils.TIMEZONE) => {
24
25
  if (!dateObject)
25
26
  return null;
26
27
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"RopidRouterUtils.js","sourceRoot":"","sources":["../../../src/output-gateway/shared/RopidRouterUtils.ts"],"names":[],"mappings":";;;;;;AAAA,qEAAkE;AAClE,qEAA+D;AAC/D,gGAA+D;AAC/D,mFAAgG;AAGhG,MAAa,gBAAgB;;AAA7B,4CAwCC;AAvCG;;GAEG;AACW,uCAAsB,GAAG,CAAI,GAAwB,EAAE,IAAS,EAAE,EAAE;IAC9E,OAAO,IAAA,mCAAe,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF;;GAEG;AACW,gCAAe,GAAG,CAAC,UAAuB,EAAE,iBAAyB,EAAiB,EAAE;IAClG,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI;QACA,MAAM,QAAQ,GAAG,IAAA,yBAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;QAEnE,IAAI,QAAQ,KAAK,cAAc,EAAE;YAC7B,YAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;SACf;QAED,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACV,YAAG,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAEF;;GAEG;AACW,qCAAoB,GAAG,CAAC,iBAAmC,EAAU,EAAE;IACjF,MAAM,QAAQ,GACV,OAAO,iBAAiB,KAAK,QAAQ;QACjC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QACtC,CAAC,CAAC,eAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;IAElD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"RopidRouterUtils.js","sourceRoot":"","sources":["../../../src/output-gateway/shared/RopidRouterUtils.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA+D;AAC/D,qEAAkE;AAClE,mFAAgG;AAChG,gGAA+D;AAG/D,MAAa,gBAAgB;;AAA7B,4CA0CC;AAzCiB,yBAAQ,GAAG,eAAe,CAAC;AAEzC;;GAEG;AACW,uCAAsB,GAAG,CAAI,GAAwB,EAAE,IAAS,EAAE,EAAE;IAC9E,OAAO,IAAA,mCAAe,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF;;GAEG;AACW,gCAAe,GAAG,CAAC,UAAuB,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAiB,EAAE;IACtH,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI;QACA,MAAM,QAAQ,GAAG,IAAA,yBAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;QAEnE,IAAI,QAAQ,KAAK,cAAc,EAAE;YAC7B,YAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;SACf;QAED,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACV,YAAG,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAEF;;GAEG;AACW,qCAAoB,GAAG,CAAC,iBAAmC,EAAU,EAAE;IACjF,MAAM,QAAQ,GACV,OAAO,iBAAiB,KAAK,QAAQ;QACjC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QACtC,CAAC,CAAC,eAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC;IAElD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const PUBLIC_DEPARTURE_NAMESPACE_PREFIX = "gtfsPublicDepartureCache";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PUBLIC_DEPARTURE_NAMESPACE_PREFIX = void 0;
4
+ exports.PUBLIC_DEPARTURE_NAMESPACE_PREFIX = "gtfsPublicDepartureCache";
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../src/schema-definitions/ropid-gtfs/redis/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { GTFSRouteTypeEnum } from "../../../../helpers/RouteTypeEnums";
2
+ export interface IPublicGtfsDepartureCacheDto {
3
+ stop_id: string;
4
+ departure_datetime: string;
5
+ arrival_datetime: string | null;
6
+ route_short_name: string;
7
+ route_type: GTFSRouteTypeEnum;
8
+ trip_id: string;
9
+ stop_sequence: number;
10
+ platform_code: string | null;
11
+ trip_headsign: string;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPublicGtfsDepartureCacheDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPublicGtfsDepartureCacheDto.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
2
+ import { IPublicGtfsDepartureCacheDto } from "../interfaces/IPublicGtfsDepartureCacheDto";
3
+ declare const publicGtfsDepartureDtoSchema: JSONSchemaType<IPublicGtfsDepartureCacheDto[]>;
4
+ export { publicGtfsDepartureDtoSchema as PublicGtfsDepartureDtoSchema };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublicGtfsDepartureDtoSchema = void 0;
4
+ const publicGtfsDepartureDtoSchema = {
5
+ $schema: "http://json-schema.org/draft-04/schema#",
6
+ title: "PublicGtfsDepartureDto",
7
+ type: "array",
8
+ items: {
9
+ type: "object",
10
+ properties: {
11
+ stop_id: {
12
+ type: "string",
13
+ },
14
+ departure_datetime: {
15
+ type: "string",
16
+ },
17
+ arrival_datetime: {
18
+ oneOf: [
19
+ {
20
+ type: "string",
21
+ },
22
+ {
23
+ type: "null",
24
+ nullable: true,
25
+ },
26
+ ],
27
+ },
28
+ route_short_name: {
29
+ type: "string",
30
+ },
31
+ route_type: {
32
+ type: "number",
33
+ },
34
+ trip_id: {
35
+ type: "string",
36
+ },
37
+ stop_sequence: {
38
+ type: "number",
39
+ },
40
+ platform_code: {
41
+ oneOf: [
42
+ {
43
+ type: "string",
44
+ },
45
+ {
46
+ type: "null",
47
+ nullable: true,
48
+ },
49
+ ],
50
+ },
51
+ trip_headsign: {
52
+ type: "string",
53
+ },
54
+ },
55
+ required: [
56
+ "stop_id",
57
+ "departure_datetime",
58
+ "arrival_datetime",
59
+ "route_short_name",
60
+ "route_type",
61
+ "trip_id",
62
+ "stop_sequence",
63
+ "platform_code",
64
+ "trip_headsign",
65
+ ],
66
+ },
67
+ };
68
+ exports.PublicGtfsDepartureDtoSchema = publicGtfsDepartureDtoSchema;
69
+ //# sourceMappingURL=PublicGtfsDepartureDtoSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicGtfsDepartureDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAAmD;IACjF,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,kBAAkB,EAAE;gBAChB,IAAI,EAAE,QAAQ;aACjB;YACD,gBAAgB,EAAE;gBACd,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,gBAAgB,EAAE;gBACd,IAAI,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE;gBACR,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE;YACN,SAAS;YACT,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,YAAY;YACZ,SAAS;YACT,eAAe;YACf,eAAe;YACf,eAAe;SAClB;KACJ;CACJ,CAAC;AACuC,oEAA4B"}
@@ -16,5 +16,8 @@ export declare class PublicStopTimeModel extends Model<PublicStopTimeModel> impl
16
16
  provider_source_type: ProviderSourceTypeEnum;
17
17
  cis_trip_number: number | null;
18
18
  vehicle_registration_number: number | null;
19
+ cis_stop_platform_code: string | null;
20
+ platform_code: string | null;
21
+ stop_id: string;
19
22
  static attributeModel: ModelAttributes<PublicStopTimeModel>;
20
23
  }
@@ -57,5 +57,17 @@ PublicStopTimeModel.attributeModel = {
57
57
  type: sequelize_1.DataTypes.INTEGER,
58
58
  allowNull: true,
59
59
  },
60
+ cis_stop_platform_code: {
61
+ type: sequelize_1.DataTypes.STRING,
62
+ allowNull: true,
63
+ },
64
+ platform_code: {
65
+ type: sequelize_1.DataTypes.STRING,
66
+ allowNull: true,
67
+ },
68
+ stop_id: {
69
+ type: sequelize_1.DataTypes.STRING,
70
+ allowNull: false,
71
+ },
60
72
  };
61
73
  //# sourceMappingURL=PublicStopTimeModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PublicStopTimeModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.ts"],"names":[],"mappings":";;;AAAA,mEAAwF;AAKxF,MAAa,mBAAoB,SAAQ,iBAA0B;;AAAnE,kDAoEC;AAnEiB,6BAAS,GAAG,+CAA+C,CAAC;AAe5D,kCAAc,GAAyC;IACjE,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,YAAY,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;KACnB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,eAAe,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,mBAAmB,EAAE;QACjB,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,oBAAoB,EAAE;QAClB,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzB,SAAS,EAAE,KAAK;KACnB;IACD,eAAe,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,2BAA2B,EAAE;QACzB,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;CACJ,CAAC"}
1
+ {"version":3,"file":"PublicStopTimeModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.ts"],"names":[],"mappings":";;;AAAA,mEAAwF;AAKxF,MAAa,mBAAoB,SAAQ,iBAA0B;;AAAnE,kDAmFC;AAlFiB,6BAAS,GAAG,+CAA+C,CAAC;AAkB5D,kCAAc,GAAyC;IACjE,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,YAAY,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;KACnB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,eAAe,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,mBAAmB,EAAE;QACjB,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,oBAAoB,EAAE;QAClB,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzB,SAAS,EAAE,KAAK;KACnB;IACD,eAAe,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,2BAA2B,EAAE;QACzB,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;KAClB;IACD,sBAAsB,EAAE;QACpB,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;KAClB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;KACnB;CACJ,CAAC"}
@@ -1,4 +1,3 @@
1
1
  export * from "./TripWithLastPositionModel";
2
2
  export * from "./ProcessedPositionModel";
3
- export * from "./StopTimeDelayPredictionModel";
4
3
  export * from "./PublicStopTimeModel";
@@ -16,6 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./TripWithLastPositionModel"), exports);
18
18
  __exportStar(require("./ProcessedPositionModel"), exports);
19
- __exportStar(require("./StopTimeDelayPredictionModel"), exports);
20
19
  __exportStar(require("./PublicStopTimeModel"), exports);
21
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/models/views/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,2DAAyC;AACzC,iEAA+C;AAC/C,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/models/views/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,2DAAyC;AACzC,wDAAsC"}
@@ -13,4 +13,7 @@ export interface IPublicStopTimeDto {
13
13
  provider_source_type: ProviderSourceTypeEnum;
14
14
  cis_trip_number: number | null;
15
15
  vehicle_registration_number: number | null;
16
+ cis_stop_platform_code: string | null;
17
+ platform_code: string | null;
18
+ stop_id: string;
16
19
  }
@@ -2,4 +2,7 @@ export interface IPublicStopTimeCacheDto {
2
2
  sequence: number;
3
3
  arr_delay: number | null;
4
4
  dep_delay: number | null;
5
+ cis_stop_platform_code: string | null;
6
+ platform_code: string | null;
7
+ stop_id: string;
5
8
  }
@@ -33,8 +33,33 @@ const publicStopTimeCacheDtoSchema = {
33
33
  },
34
34
  ],
35
35
  },
36
+ cis_stop_platform_code: {
37
+ oneOf: [
38
+ {
39
+ type: "string",
40
+ },
41
+ {
42
+ type: "null",
43
+ nullable: true,
44
+ },
45
+ ],
46
+ },
47
+ platform_code: {
48
+ oneOf: [
49
+ {
50
+ type: "string",
51
+ },
52
+ {
53
+ type: "null",
54
+ nullable: true,
55
+ },
56
+ ],
57
+ },
58
+ stop_id: {
59
+ type: "string",
60
+ },
36
61
  },
37
- required: ["sequence", "arr_delay", "dep_delay"],
62
+ required: ["sequence", "arr_delay", "dep_delay", "cis_stop_platform_code", "platform_code", "stop_id"],
38
63
  },
39
64
  };
40
65
  exports.PublicStopTimeCacheDtoSchema = publicStopTimeCacheDtoSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"PublicStopTimeCacheDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAA8C;IAC5E,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,QAAQ,EAAE;gBACN,IAAI,EAAE,QAAQ;aACjB;YACD,SAAS,EAAE;gBACP,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,SAAS,EAAE;gBACP,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;SACJ;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;KACnD;CACJ,CAAC;AACuC,oEAA4B"}
1
+ {"version":3,"file":"PublicStopTimeCacheDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAA8C;IAC5E,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,QAAQ,EAAE;gBACN,IAAI,EAAE,QAAQ;aACjB;YACD,SAAS,EAAE;gBACP,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,SAAS,EAAE;gBACP,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,sBAAsB,EAAE;gBACpB,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,aAAa,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE,eAAe,EAAE,SAAS,CAAC;KACzG;CACJ,CAAC;AACuC,oEAA4B"}
@@ -504,6 +504,7 @@ Worker má na starost aktualizaci presets číselníků
504
504
  - závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
505
505
  - název: vehicle-positions.ropidgtfs.downloadDatasets
506
506
  - název: vehicle-positions.ropidgtfs.refreshPrecomputedTables
507
+ - název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
507
508
  - název: vehicle-positions.vehiclepositions.refreshGTFSTripData
508
509
  - datové zdroje
509
510
  - ROPID FTP
@@ -548,6 +549,23 @@ Worker má na starost aktualizaci presets číselníků
548
549
  - RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
549
550
  - RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
550
551
 
552
+ #### task _RefreshPublicGtfsDepartureCacheTask_
553
+
554
+ Task se stará o aktualizaci cache pro public odjezdy. Pouští se pravidelně cronem a po dokončení načtení nových JŘ.
555
+
556
+ - vstupní rabbitmq fronta
557
+ - název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
558
+ - TTL: 59 minut
559
+ - parametry: `{intervalFromHours, intervalToHours}`
560
+ - závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
561
+ - žádné
562
+ - datové zdroje
563
+ - ROPID FTP
564
+ - transformace
565
+ - [PublicDepartureCacheTransformation](../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts)
566
+ - data modely
567
+ - RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
568
+
551
569
  ### PresetWorker
552
570
 
553
571
  #### _Task ~ SavePresetsDataTask_
@@ -1256,3 +1274,11 @@ Worker má na starost retenci dat tabulek Azure Table Storage
1256
1274
  - `stop_times`: seznam zastávek, které vozidlo projelo a projede, vč. informací o zpoždění (historických/predikovaných), ve formátu geojson
1257
1275
  - `shapes`: seznam tvarů trasy (podle GTFS; nejedná se o naše předpočítané anchor pointy, které se mimo zastávky oproti GTFS shapes mohou lišit), ve formátu geojson
1258
1276
  - `vehicle_descriptor`: informace o vozidle (dopravce, dostupnost klimatizace, USB, ...)
1277
+
1278
+ #### _/public/departureboards_
1279
+
1280
+ - načte nacacheované odjezdy z redisu
1281
+ - možno filtrovat podle skupin zastávek `stopIds` (podle GTFS číselníku) s možností nastavení pořadí navrácených skupin s odjezdy - příklad `?stopIds[]={"0": ["U717Z5P"]}&stopIds[]={"1": ["U718Z5P", "U719Z5P"]}`
1282
+ - podle názvů linek a jak daleko do budoucnosti se mají odjezdy navracet
1283
+ - limitování počtu odjezdů v každé skupině
1284
+ - EP je optimalizován pro vyšší zátěž z mobilní aplikace PID lítačka - požadavek do databáze z OG pouze v případě nutnosti obnovit cache s vehicle descriptory (klimatizace, usb nabíječky), jinak je vše z Redisu