@golemio/pid 6.4.1-dev.3053867815 → 6.4.1-dev.3054859807

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 (86) hide show
  1. package/db/example/00_clear_test_data.sql +1 -0
  2. package/db/example/24_jis_delayed_segments.sql +142 -0
  3. package/db/migrations/postgresql/20261027100000-jis-delayed-segments.js +16 -0
  4. package/db/migrations/postgresql/sqls/20250127134438-departure-additional-indexes-down.sql +20 -2
  5. package/db/migrations/postgresql/sqls/20261027100000-jis-delayed-segments-down.sql +17 -0
  6. package/db/migrations/postgresql/sqls/20261027100000-jis-delayed-segments-up.sql +42 -0
  7. package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.d.ts +9 -0
  8. package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.js +54 -0
  9. package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.js.map +1 -0
  10. package/dist/integration-engine/jis/ioc/Di.js +10 -0
  11. package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
  12. package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +5 -0
  13. package/dist/integration-engine/jis/ioc/JISContainerToken.js +5 -0
  14. package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
  15. package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.d.ts +14 -0
  16. package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.js +69 -0
  17. package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.js.map +1 -0
  18. package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.d.ts +23 -0
  19. package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.js +73 -0
  20. package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.js.map +1 -0
  21. package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.d.ts +13 -0
  22. package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.js +266 -0
  23. package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.js.map +1 -0
  24. package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.d.ts +23 -0
  25. package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.js +2 -0
  26. package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.js.map +1 -0
  27. package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.d.ts +38 -0
  28. package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.js +174 -0
  29. package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.js.map +1 -0
  30. package/dist/integration-engine/jis/workers/JISWorker.js +1 -0
  31. package/dist/integration-engine/jis/workers/JISWorker.js.map +1 -1
  32. package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.d.ts +15 -0
  33. package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.js +55 -0
  34. package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.js.map +1 -0
  35. package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.d.ts +9 -0
  36. package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.js +54 -0
  37. package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.js.map +1 -0
  38. package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.d.ts +14 -0
  39. package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.js +56 -0
  40. package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.js.map +1 -0
  41. package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.d.ts +12 -0
  42. package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.js +2 -0
  43. package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.js.map +1 -0
  44. package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.d.ts +5 -0
  45. package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.js +2 -0
  46. package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.js.map +1 -0
  47. package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.d.ts +8 -0
  48. package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.js +13 -0
  49. package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.js.map +1 -0
  50. package/dist/output-gateway/jis/ioc/Di.js +6 -0
  51. package/dist/output-gateway/jis/ioc/Di.js.map +1 -1
  52. package/dist/output-gateway/jis/ioc/OgJisToken.d.ts +3 -0
  53. package/dist/output-gateway/jis/ioc/OgJisToken.js +3 -0
  54. package/dist/output-gateway/jis/ioc/OgJisToken.js.map +1 -1
  55. package/dist/output-gateway/jis/routers/v1/V1JISRouter.d.ts +2 -0
  56. package/dist/output-gateway/jis/routers/v1/V1JISRouter.js +9 -0
  57. package/dist/output-gateway/jis/routers/v1/V1JISRouter.js.map +1 -1
  58. package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.d.ts +7 -0
  59. package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.js +32 -0
  60. package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.js.map +1 -0
  61. package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.d.ts +3 -0
  62. package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.js +16 -0
  63. package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.js.map +1 -0
  64. package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.d.ts +10 -0
  65. package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.js +2 -0
  66. package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.js.map +1 -0
  67. package/dist/schema-definitions/jis/datasources/interfaces/index.d.ts +1 -0
  68. package/dist/schema-definitions/jis/datasources/interfaces/index.js +1 -0
  69. package/dist/schema-definitions/jis/datasources/interfaces/index.js.map +1 -1
  70. package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.d.ts +24 -0
  71. package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.js +138 -0
  72. package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.js.map +1 -0
  73. package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.d.ts +44 -0
  74. package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.js +2 -0
  75. package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.js.map +1 -0
  76. package/dist/schema-definitions/jis/models/interfaces/index.d.ts +1 -0
  77. package/dist/schema-definitions/jis/models/interfaces/index.js +1 -0
  78. package/dist/schema-definitions/jis/models/interfaces/index.js.map +1 -1
  79. package/docs/assets/pid_jis_erd.png +0 -0
  80. package/docs/asyncapi.yaml +15 -0
  81. package/docs/implementation_documentation.md +56 -0
  82. package/docs/index.md +1 -0
  83. package/docs/jis/delayed-segments.md +241 -0
  84. package/docs/jis/index.md +9 -0
  85. package/docs/openapi-output.yaml +176 -0
  86. package/package.json +1 -1
@@ -17,6 +17,7 @@ export class JISWorker extends AbstractWorker {
17
17
  this.registerTask(JISContainer.resolve(JISContainerToken.RefreshJISInfotextsTask));
18
18
  this.registerTask(JISContainer.resolve(JISContainerToken.RefreshJISInfotextsCacheTask));
19
19
  this.registerTask(JISContainer.resolve(JISContainerToken.UpdateEventWebhookTask));
20
+ this.registerTask(JISContainer.resolve(JISContainerToken.RefreshDelayedSegmentsTask));
20
21
  }
21
22
  }
22
23
  //# sourceMappingURL=JISWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JISWorker.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/workers/JISWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQjD,MAAM,OAAO,SAAU,SAAQ,cAAc;IAGzC;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAcxC,iBAAY,GAAG,CAAC,IAAW,EAAQ,EAAE;YACxC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QAZE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAqB,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAwB,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAuB,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAA0B,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAA+B,iBAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACtH,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAyB,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC9G,CAAC;CAMJ"}
1
+ {"version":3,"file":"JISWorker.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/workers/JISWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjD,MAAM,OAAO,SAAU,SAAQ,cAAc;IAGzC;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAexC,iBAAY,GAAG,CAAC,IAAW,EAAQ,EAAE;YACxC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QAbE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAqB,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAwB,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAuB,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAA0B,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAA+B,iBAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACtH,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAyB,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAA6B,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtH,CAAC;CAMJ"}
@@ -0,0 +1,15 @@
1
+ import { JISDelayedSegmentsDataSourceFactory } from "#ie/jis/datasources/JISDelayedSegmentsDataSourceFactory";
2
+ import { JISDelayedSegmentsDataService } from "#ie/jis/services/JISDelayedSegmentsDataService";
3
+ import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine/index.js";
4
+ /**
5
+ * Fetches delayed segments detected by Mapa PID and replaces the stored ones with them, enriched with GTFS data.
6
+ * On failure, stored segments are kept untouched and expire for consumers by their last detection time.
7
+ */
8
+ export declare class RefreshDelayedSegmentsTask extends AbstractEmptyTask {
9
+ private dataSourceFactory;
10
+ private dataService;
11
+ readonly queueName = "refreshDelayedSegments";
12
+ readonly queueTtl: number;
13
+ constructor(dataSourceFactory: JISDelayedSegmentsDataSourceFactory, dataService: JISDelayedSegmentsDataService);
14
+ protected execute(): Promise<void>;
15
+ }
@@ -0,0 +1,55 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { JISDelayedSegmentsDataSourceFactory } from "#ie/jis/datasources/JISDelayedSegmentsDataSourceFactory";
14
+ import { JISContainerToken } from "#ie/jis/ioc/JISContainerToken";
15
+ import { JISDelayedSegmentsDataService } from "#ie/jis/services/JISDelayedSegmentsDataService";
16
+ import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine/index.js";
17
+ import GolemioErrorsCore from "@golemio/core/dist/shared/golemio-errors.js";
18
+ const { AbstractGolemioError, GeneralError } = GolemioErrorsCore;
19
+ import { inject, injectable } from "@golemio/core/dist/shared/tsyringe.js";
20
+ import { JIS_WORKER_NAME } from "../constants.js";
21
+ /**
22
+ * Fetches delayed segments detected by Mapa PID and replaces the stored ones with them, enriched with GTFS data.
23
+ * On failure, stored segments are kept untouched and expire for consumers by their last detection time.
24
+ */
25
+ let RefreshDelayedSegmentsTask = class RefreshDelayedSegmentsTask extends AbstractEmptyTask {
26
+ constructor(dataSourceFactory, dataService) {
27
+ super(JIS_WORKER_NAME.toLowerCase());
28
+ this.dataSourceFactory = dataSourceFactory;
29
+ this.dataService = dataService;
30
+ this.queueName = "refreshDelayedSegments";
31
+ this.queueTtl = 4 * 60 * 1000;
32
+ }
33
+ async execute() {
34
+ try {
35
+ const detectedAt = new Date();
36
+ const delayShapes = await this.dataSourceFactory.getDataSource().getAll();
37
+ await this.dataService.refreshDelayedSegments(delayShapes, detectedAt);
38
+ }
39
+ catch (err) {
40
+ if (err instanceof AbstractGolemioError) {
41
+ throw err;
42
+ }
43
+ throw new GeneralError("Error while refreshing delayed segments", this.constructor.name, err);
44
+ }
45
+ }
46
+ };
47
+ RefreshDelayedSegmentsTask = __decorate([
48
+ injectable(),
49
+ __param(0, inject(JISContainerToken.JISDelayedSegmentsDataSourceFactory)),
50
+ __param(1, inject(JISContainerToken.JISDelayedSegmentsDataService)),
51
+ __metadata("design:paramtypes", [JISDelayedSegmentsDataSourceFactory,
52
+ JISDelayedSegmentsDataService])
53
+ ], RefreshDelayedSegmentsTask);
54
+ export { RefreshDelayedSegmentsTask };
55
+ //# sourceMappingURL=RefreshDelayedSegmentsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshDelayedSegmentsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAiB;IAI7D,YAEI,iBAA8D,EAE9D,WAAkD;QAElD,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QAJ7B,sBAAiB,GAAjB,iBAAiB,CAAqC;QAEtD,gBAAW,GAAX,WAAW,CAA+B;QAPtC,cAAS,GAAG,wBAAwB,CAAC;QACrC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IASzC,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;YAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,yCAAyC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;IACL,CAAC;CACJ,CAAA;AAzBY,0BAA0B;IADtC,UAAU,EAAE;IAMJ,WAAA,MAAM,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,CAAA;IAE7D,WAAA,MAAM,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAA;qCAD7B,mCAAmC;QAEzC,6BAA6B;GAR7C,0BAA0B,CAyBtC"}
@@ -0,0 +1,9 @@
1
+ import { JISDelayedSegmentsTransformation } from "#og/jis/transformations/JISDelayedSegmentsTransformation";
2
+ import type { RequestHandler } from "@golemio/core/dist/shared/express.js";
3
+ import { JISDelayedSegmentsRepository } from "../../data-access/JISDelayedSegmentsRepository.js";
4
+ export declare class V1DelayedSegmentsController {
5
+ private delayedSegmentsRepository;
6
+ private delayedSegmentsTransformation;
7
+ constructor(delayedSegmentsRepository: JISDelayedSegmentsRepository, delayedSegmentsTransformation: JISDelayedSegmentsTransformation);
8
+ getAllDelayedSegments: RequestHandler;
9
+ }
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { JISDelayedSegmentInfoPanelStopsFilter } from "#og/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter";
14
+ import { OgJisToken } from "#og/jis/ioc/OgJisToken";
15
+ import { JISDelayedSegmentsTransformation } from "#og/jis/transformations/JISDelayedSegmentsTransformation";
16
+ import { createChildSpan } from "@golemio/core/dist/monitoring/index.js";
17
+ import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
18
+ const { matchedData } = ExpressValidatorCore;
19
+ import { inject, injectable } from "@golemio/core/dist/shared/tsyringe.js";
20
+ import { JISDelayedSegmentsRepository } from "../../data-access/JISDelayedSegmentsRepository.js";
21
+ let V1DelayedSegmentsController = class V1DelayedSegmentsController {
22
+ constructor(delayedSegmentsRepository, delayedSegmentsTransformation) {
23
+ this.delayedSegmentsRepository = delayedSegmentsRepository;
24
+ this.delayedSegmentsTransformation = delayedSegmentsTransformation;
25
+ this.getAllDelayedSegments = async (req, res, next) => {
26
+ const span = createChildSpan("V1DelayedSegmentsController.getAllDelayedSegments");
27
+ try {
28
+ const { minDelaySeconds, minDistanceStops, maxDistanceStops } = matchedData(req);
29
+ const delayedSegments = await this.delayedSegmentsRepository.getAll(minDelaySeconds);
30
+ const transformedSegments = this.delayedSegmentsTransformation.transformArray(delayedSegments).map((segment) => ({
31
+ ...segment,
32
+ info_panel_stops: JISDelayedSegmentInfoPanelStopsFilter.filterByDistance(segment.info_panel_stops, minDistanceStops, maxDistanceStops),
33
+ }));
34
+ return res.status(200).json(transformedSegments);
35
+ }
36
+ catch (err) {
37
+ span?.recordException(err);
38
+ next(err);
39
+ }
40
+ finally {
41
+ span?.end();
42
+ }
43
+ };
44
+ }
45
+ };
46
+ V1DelayedSegmentsController = __decorate([
47
+ injectable(),
48
+ __param(0, inject(OgJisToken.JISDelayedSegmentsRepository)),
49
+ __param(1, inject(OgJisToken.JISDelayedSegmentsTransformation)),
50
+ __metadata("design:paramtypes", [JISDelayedSegmentsRepository,
51
+ JISDelayedSegmentsTransformation])
52
+ ], V1DelayedSegmentsController);
53
+ export { V1DelayedSegmentsController };
54
+ //# sourceMappingURL=V1DelayedSegmentsController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V1DelayedSegmentsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,qCAAqC,EAAE,MAAM,uDAAuD,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AAG1F,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACpC,YACqD,yBAA+D,EAEhH,6BAAuE;QAFd,8BAAyB,GAAzB,yBAAyB,CAA8B;QAExG,kCAA6B,GAA7B,6BAA6B,CAAkC;QAGpE,0BAAqB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACpE,MAAM,IAAI,GAAG,eAAe,CAAC,mDAAmD,CAAC,CAAC;YAClF,IAAI,CAAC;gBACD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAC,GAAG,CAA6B,CAAC;gBAC7G,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACrF,MAAM,mBAAmB,GAAG,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC7G,GAAG,OAAO;oBACV,gBAAgB,EAAE,qCAAqC,CAAC,gBAAgB,CACpE,OAAO,CAAC,gBAAgB,EACxB,gBAAgB,EAChB,gBAAgB,CACnB;iBACJ,CAAC,CAAC,CAAC;gBACJ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IAtBC,CAAC;CAuBP,CAAA;AA5BY,2BAA2B;IADvC,UAAU,EAAE;IAGJ,WAAA,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAA;IAC/C,WAAA,MAAM,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAA;qCADgC,4BAA4B;QAEzE,gCAAgC;GAJlE,2BAA2B,CA4BvC"}
@@ -0,0 +1,14 @@
1
+ import { JISDelayedSegmentsModel } from "#sch/jis/models/JISDelayedSegmentsModel";
2
+ import { type ILogger } from "@golemio/core/dist/helpers/index.js";
3
+ import { type IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector.js";
4
+ import { AbstractValidatableRepository } from "@golemio/core/dist/helpers/data-access/postgres/repositories/AbstractValidatableRepository.js";
5
+ import type { JSONSchemaValidator as TJSONSchemaValidator } from "@golemio/core/dist/shared/golemio-validator.js";
6
+ import type { ModelStatic } from "@golemio/core/dist/shared/sequelize.js";
7
+ export declare class JISDelayedSegmentsRepository extends AbstractValidatableRepository {
8
+ validator: TJSONSchemaValidator;
9
+ schema: string;
10
+ tableName: string;
11
+ sequelizeModel: ModelStatic<JISDelayedSegmentsModel>;
12
+ constructor(connector: IDatabaseConnector, logger: ILogger);
13
+ getAll(minDelaySeconds?: number): Promise<JISDelayedSegmentsModel[]>;
14
+ }
@@ -0,0 +1,56 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { PG_SCHEMA } from "#sch/const";
14
+ import { JISDelayedSegmentsModel } from "#sch/jis/models/JISDelayedSegmentsModel";
15
+ import { AbstractValidatableRepository } from "@golemio/core/dist/helpers/data-access/postgres/repositories/AbstractValidatableRepository.js";
16
+ import { CoreToken } from "@golemio/core/dist/helpers/ioc/CoreToken.js";
17
+ import GolemioErrorsCore from "@golemio/core/dist/shared/golemio-errors.js";
18
+ const { GeneralError } = GolemioErrorsCore;
19
+ import GolemioValidatorCore from "@golemio/core/dist/shared/golemio-validator.js";
20
+ const { JSONSchemaValidator } = GolemioValidatorCore;
21
+ import SequelizeCore from "@golemio/core/dist/shared/sequelize.js";
22
+ const { Op } = SequelizeCore;
23
+ import { inject, injectable } from "@golemio/core/dist/shared/tsyringe.js";
24
+ let JISDelayedSegmentsRepository = class JISDelayedSegmentsRepository extends AbstractValidatableRepository {
25
+ constructor(connector, logger) {
26
+ super(connector, logger);
27
+ this.schema = PG_SCHEMA;
28
+ this.tableName = JISDelayedSegmentsModel.tableName;
29
+ this.validator = new JSONSchemaValidator("JISDelayedSegmentsRepository", JISDelayedSegmentsModel.jsonSchema);
30
+ this.sequelizeModel = connector
31
+ .getConnection()
32
+ .define(this.tableName, JISDelayedSegmentsModel.attributeModel, { schema: this.schema });
33
+ }
34
+ async getAll(minDelaySeconds = 0) {
35
+ try {
36
+ return await this.sequelizeModel.findAll({
37
+ where: { expected_delay_seconds: { [Op.gte]: minDelaySeconds } },
38
+ order: [
39
+ ["expected_delay_seconds", "DESC"],
40
+ ["id", "ASC"],
41
+ ],
42
+ });
43
+ }
44
+ catch (err) {
45
+ throw new GeneralError("Error while getting delayed segments", this.constructor.name, err, 500);
46
+ }
47
+ }
48
+ };
49
+ JISDelayedSegmentsRepository = __decorate([
50
+ injectable(),
51
+ __param(0, inject(CoreToken.PostgresConnector)),
52
+ __param(1, inject(CoreToken.Logger)),
53
+ __metadata("design:paramtypes", [Object, Object])
54
+ ], JISDelayedSegmentsRepository);
55
+ export { JISDelayedSegmentsRepository };
56
+ //# sourceMappingURL=JISDelayedSegmentsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JISDelayedSegmentsRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/data-access/JISDelayedSegmentsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGlF,OAAO,EAAE,6BAA6B,EAAE,MAAM,+FAA+F,CAAC;AAC9I,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AAE3C,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,mBAAmB,EAAE,GAAG,oBAAoB,CAAC;AAErD,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAGpE,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,6BAA6B;IAM3E,YAAiD,SAA6B,EAA4B,MAAe;QACrH,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QALtB,WAAM,GAAG,SAAS,CAAC;QACnB,cAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC;QAKjD,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,8BAA8B,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAC7G,IAAI,CAAC,cAAc,GAAG,SAAS;aAC1B,aAAa,EAAE;aACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC;QACnC,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBACrC,KAAK,EAAE,EAAE,sBAAsB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE;gBAChE,KAAK,EAAE;oBACH,CAAC,wBAAwB,EAAE,MAAM,CAAC;oBAClC,CAAC,IAAI,EAAE,KAAK,CAAC;iBAChB;aACJ,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,sCAAsC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpG,CAAC;IACL,CAAC;CACJ,CAAA;AA3BY,4BAA4B;IADxC,UAAU,EAAE;IAOI,WAAA,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IAAiC,WAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;;GANhG,4BAA4B,CA2BxC"}
@@ -0,0 +1,12 @@
1
+ import { type IJISDelayedSegmentInfoPanelStop, type IJISDelayedSegmentRoute, type IJISDelayedSegmentStop } from "#sch/jis/models/interfaces/index";
2
+ export interface IJISDelayedSegmentDto {
3
+ id: string;
4
+ from_stop: IJISDelayedSegmentStop;
5
+ to_stop: IJISDelayedSegmentStop;
6
+ expected_delay_seconds: number;
7
+ first_detected_at: string;
8
+ last_detected_at: string;
9
+ stops: IJISDelayedSegmentStop[];
10
+ routes: IJISDelayedSegmentRoute[];
11
+ info_panel_stops: IJISDelayedSegmentInfoPanelStop[];
12
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IJISDelayedSegmentDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IJISDelayedSegmentDto.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/domain/IJISDelayedSegmentDto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface IDelayedSegmentsQueryDto {
2
+ minDelaySeconds?: number;
3
+ minDistanceStops?: number;
4
+ maxDistanceStops?: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IDelayedSegmentsQueryDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDelayedSegmentsQueryDto.js","sourceRoot":"","sources":["../../../../../src/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { type IJISDelayedSegmentInfoPanelStop } from "#sch/jis/models/interfaces/index";
2
+ /**
3
+ * Keeps only the routes of info panel stops whose signed distance from the segment lies within the inclusive range,
4
+ * so that consumers get only the panels they inform; stops left without a route are left out
5
+ */
6
+ export declare class JISDelayedSegmentInfoPanelStopsFilter {
7
+ static filterByDistance(infoPanelStops: IJISDelayedSegmentInfoPanelStop[], minDistanceStops?: number, maxDistanceStops?: number): IJISDelayedSegmentInfoPanelStop[];
8
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Keeps only the routes of info panel stops whose signed distance from the segment lies within the inclusive range,
3
+ * so that consumers get only the panels they inform; stops left without a route are left out
4
+ */
5
+ export class JISDelayedSegmentInfoPanelStopsFilter {
6
+ static filterByDistance(infoPanelStops, minDistanceStops = -Infinity, maxDistanceStops = Infinity) {
7
+ return infoPanelStops.flatMap((infoPanelStop) => {
8
+ const routes = infoPanelStop.routes.filter((route) => route.distance_stops >= minDistanceStops && route.distance_stops <= maxDistanceStops);
9
+ return routes.length > 0 ? [{ ...infoPanelStop, routes }] : [];
10
+ });
11
+ }
12
+ }
13
+ //# sourceMappingURL=JISDelayedSegmentInfoPanelStopsFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JISDelayedSegmentInfoPanelStopsFilter.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,qCAAqC;IACvC,MAAM,CAAC,gBAAgB,CAC1B,cAAiD,EACjD,gBAAgB,GAAG,CAAC,QAAQ,EAC5B,gBAAgB,GAAG,QAAQ;QAE3B,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CACtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,gBAAgB,IAAI,KAAK,CAAC,cAAc,IAAI,gBAAgB,CAClG,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,21 +1,27 @@
1
1
  import { OutputGatewayContainer } from "@golemio/core/dist/output-gateway/ioc/index.js";
2
+ import { V1DelayedSegmentsController } from "../controllers/v1/V1DelayedSegmentsController.js";
2
3
  import { V1EventsController } from "../controllers/v1/V1EventsController.js";
4
+ import { JISDelayedSegmentsRepository } from "../data-access/JISDelayedSegmentsRepository.js";
3
5
  import { JISEventsRepository } from "../data-access/JISEventsRepository.js";
4
6
  import { JISEventsRopidGTFSRoutesRepository } from "../data-access/JISEventsRopidGTFSRoutesRepository.js";
5
7
  import { RopidGTFSRoutesRepository } from "../data-access/RopidGTFSRoutesRepository.js";
8
+ import { JISDelayedSegmentsTransformation } from "../transformations/JISDelayedSegmentsTransformation.js";
6
9
  import { JISEventsCustomFormatTransformation } from "../transformations/JISEventsCustomFormatTransformation.js";
7
10
  import { OgJisToken } from "./OgJisToken.js";
8
11
  const ogJisContainer = OutputGatewayContainer.createChildContainer();
9
12
  //#region Controllers
10
13
  ogJisContainer.registerSingleton(OgJisToken.V1EventsController, V1EventsController);
14
+ ogJisContainer.registerSingleton(OgJisToken.V1DelayedSegmentsController, V1DelayedSegmentsController);
11
15
  //#endregion
12
16
  //#region Repositories
13
17
  ogJisContainer.registerSingleton(OgJisToken.JISEventsRepository, JISEventsRepository);
14
18
  ogJisContainer.registerSingleton(OgJisToken.JISEventsRopidGTFSRoutesRepository, JISEventsRopidGTFSRoutesRepository);
15
19
  ogJisContainer.registerSingleton(OgJisToken.RopidGTFSRoutesRepository, RopidGTFSRoutesRepository);
20
+ ogJisContainer.registerSingleton(OgJisToken.JISDelayedSegmentsRepository, JISDelayedSegmentsRepository);
16
21
  //#endregion
17
22
  //#region Transformations
18
23
  ogJisContainer.registerSingleton(OgJisToken.JISEventsCustomFormatTransformation, JISEventsCustomFormatTransformation);
24
+ ogJisContainer.registerSingleton(OgJisToken.JISDelayedSegmentsTransformation, JISDelayedSegmentsTransformation);
19
25
  //#endregion
20
26
  export { ogJisContainer as OgJisContainer };
21
27
  //# sourceMappingURL=Di.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/ioc/Di.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,cAAc,GAAwB,sBAAsB,CAAC,oBAAoB,EAAE,CAAC;AAE1F,qBAAqB;AACrB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;AACpF,YAAY;AAEZ,sBAAsB;AACtB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AACtF,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,kCAAkC,EAAE,kCAAkC,CAAC,CAAC;AACpH,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAClG,YAAY;AAEZ,yBAAyB;AACzB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,mCAAmC,EAAE,mCAAmC,CAAC,CAAC;AACtH,YAAY;AAEZ,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/ioc/Di.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAExF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wDAAwD,CAAC;AAC1G,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,cAAc,GAAwB,sBAAsB,CAAC,oBAAoB,EAAE,CAAC;AAE1F,qBAAqB;AACrB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;AACpF,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;AACtG,YAAY;AAEZ,sBAAsB;AACtB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AACtF,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,kCAAkC,EAAE,kCAAkC,CAAC,CAAC;AACpH,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAClG,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,4BAA4B,EAAE,4BAA4B,CAAC,CAAC;AACxG,YAAY;AAEZ,yBAAyB;AACzB,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,mCAAmC,EAAE,mCAAmC,CAAC,CAAC;AACtH,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,gCAAgC,EAAE,gCAAgC,CAAC,CAAC;AAChH,YAAY;AAEZ,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export declare const OgJisToken: {
2
2
  V1EventsController: symbol;
3
+ V1DelayedSegmentsController: symbol;
3
4
  JISEventsRepository: symbol;
4
5
  JISEventsRopidGTFSRoutesRepository: symbol;
5
6
  JISInfotextsRedisRepository: symbol;
6
7
  RopidGTFSRoutesRepository: symbol;
8
+ JISDelayedSegmentsRepository: symbol;
7
9
  JISEventsCustomFormatTransformation: symbol;
10
+ JISDelayedSegmentsTransformation: symbol;
8
11
  VPSubscriber: symbol;
9
12
  };
@@ -1,15 +1,18 @@
1
1
  export const OgJisToken = {
2
2
  //#region Controllers
3
3
  V1EventsController: Symbol("V1EventsController"),
4
+ V1DelayedSegmentsController: Symbol("V1DelayedSegmentsController"),
4
5
  //#endregion
5
6
  //#region Repositories
6
7
  JISEventsRepository: Symbol("JISEventsRepository"),
7
8
  JISEventsRopidGTFSRoutesRepository: Symbol("JISEventsRopidGTFSRoutesRepository"),
8
9
  JISInfotextsRedisRepository: Symbol("JISInfotextsRedisRepository"),
9
10
  RopidGTFSRoutesRepository: Symbol("RopidGTFSRoutesRepository"),
11
+ JISDelayedSegmentsRepository: Symbol("JISDelayedSegmentsRepository"),
10
12
  //#endregion
11
13
  //#region Transformations
12
14
  JISEventsCustomFormatTransformation: Symbol("JISEventsCustomFormatTransformation"),
15
+ JISDelayedSegmentsTransformation: Symbol("JISDelayedSegmentsTransformation"),
13
16
  //#endregion
14
17
  //#region Helpers
15
18
  VPSubscriber: Symbol("VPSubscriber"),
@@ -1 +1 @@
1
- {"version":3,"file":"OgJisToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/ioc/OgJisToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,qBAAqB;IACrB,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,YAAY;IAEZ,sBAAsB;IACtB,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,YAAY;IAEZ,yBAAyB;IACzB,mCAAmC,EAAE,MAAM,CAAC,qCAAqC,CAAC;IAClF,YAAY;IAEZ,iBAAiB;IACjB,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,YAAY;CACf,CAAC"}
1
+ {"version":3,"file":"OgJisToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/ioc/OgJisToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,qBAAqB;IACrB,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IAEZ,sBAAsB;IACtB,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,4BAA4B,EAAE,MAAM,CAAC,8BAA8B,CAAC;IACpE,YAAY;IAEZ,yBAAyB;IACzB,mCAAmC,EAAE,MAAM,CAAC,qCAAqC,CAAC;IAClF,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,YAAY;IAEZ,iBAAiB;IACjB,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,YAAY;CACf,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { V1DelayedSegmentsController } from "#og/jis/controllers/v1/V1DelayedSegmentsController";
1
2
  import { V1EventsController } from "#og/jis/controllers/v1/V1EventsController";
2
3
  import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
3
4
  import { CacheHeaderMiddleware } from "@golemio/core/dist/output-gateway/CacheHeaderMiddleware.js";
@@ -6,6 +7,7 @@ export declare class V1JISRouter extends AbstractRouter {
6
7
  readonly router: TRouter;
7
8
  readonly cacheHeaderMiddleware: CacheHeaderMiddleware;
8
9
  readonly eventsController: V1EventsController;
10
+ readonly delayedSegmentsController: V1DelayedSegmentsController;
9
11
  constructor();
10
12
  protected initRoutes: () => void;
11
13
  }
@@ -1,6 +1,7 @@
1
1
  import { OgJisContainer } from "#og/jis/ioc/Di";
2
2
  import { OgJisToken } from "#og/jis/ioc/OgJisToken";
3
3
  import { RouteVersion } from "#og/shared/constants/index";
4
+ import { PG_INT_MAX, PG_INT_MIN } from "../../../../const.js";
4
5
  import { jisEventType } from "#sch/jis/constants/jisEventType";
5
6
  import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
6
7
  import { ContainerToken } from "@golemio/core/dist/output-gateway/ioc/index.js";
@@ -22,8 +23,16 @@ export class V1JISRouter extends AbstractRouter {
22
23
  ], checkErrors,
23
24
  // // max-age 5 seconds, stale-while-revalidate 5 seconds
24
25
  this.cacheHeaderMiddleware.getMiddleware(5, 5), this.eventsController.getAllEventsInCustomFormat);
26
+ this.router.get("/delayed-segments", [
27
+ query("minDelaySeconds").optional().isInt({ min: 0, max: PG_INT_MAX }).not().isArray().toInt(),
28
+ query("minDistanceStops").optional().isInt({ min: PG_INT_MIN, max: PG_INT_MAX }).not().isArray().toInt(),
29
+ query("maxDistanceStops").optional().isInt({ min: PG_INT_MIN, max: PG_INT_MAX }).not().isArray().toInt(),
30
+ ], checkErrors,
31
+ // max-age 5 seconds, stale-while-revalidate 5 seconds
32
+ this.cacheHeaderMiddleware.getMiddleware(5, 5), this.delayedSegmentsController.getAllDelayedSegments);
25
33
  };
26
34
  this.eventsController = OgJisContainer.resolve(OgJisToken.V1EventsController);
35
+ this.delayedSegmentsController = OgJisContainer.resolve(OgJisToken.V1DelayedSegmentsController);
27
36
  this.cacheHeaderMiddleware = OgJisContainer.resolve(ContainerToken.CacheHeaderMiddleware);
28
37
  this.initRoutes();
29
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"V1JISRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/jis/routers/v1/V1JISRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC/B,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC;AAEvC,MAAM,OAAO,WAAY,SAAQ,cAAc;IAK3C;QACI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QALlB,WAAM,GAAY,MAAM,EAAE,CAAC;QAUjC,eAAU,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,uBAAuB,EACvB;gBACI,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;gBAClD,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;gBAChD,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;gBAC/C,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;aAC9C,EACD,WAAW;YACX,yDAAyD;YACzD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CACnD,CAAC;QACN,CAAC,CAAC;QAlBE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAqB,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAClG,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,OAAO,CAAwB,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACjH,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CAgBJ;AAED,MAAM,WAAW,GAAmB,IAAI,WAAW,EAAE,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"V1JISRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/jis/routers/v1/V1JISRouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC/B,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC;AAEvC,MAAM,OAAO,WAAY,SAAQ,cAAc;IAM3C;QACI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QANlB,WAAM,GAAY,MAAM,EAAE,CAAC;QAcjC,eAAU,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,uBAAuB,EACvB;gBACI,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;gBAClD,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;gBAChD,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;gBAC/C,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;aAC9C,EACD,WAAW;YACX,yDAAyD;YACzD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CACnD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,mBAAmB,EACnB;gBACI,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;gBAC9F,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;gBACxG,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;aAC3G,EACD,WAAW;YACX,sDAAsD;YACtD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,CACvD,CAAC;QACN,CAAC,CAAC;QAjCE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAqB,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAClG,IAAI,CAAC,yBAAyB,GAAG,cAAc,CAAC,OAAO,CACnD,UAAU,CAAC,2BAA2B,CACzC,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,OAAO,CAAwB,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACjH,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CA4BJ;AAED,MAAM,WAAW,GAAmB,IAAI,WAAW,EAAE,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { JISDelayedSegmentsModel } from "#sch/jis/models/JISDelayedSegmentsModel";
2
+ import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation.js";
3
+ import { type IJISDelayedSegmentDto } from "../domain/IJISDelayedSegmentDto.js";
4
+ export declare class JISDelayedSegmentsTransformation extends AbstractTransformation<JISDelayedSegmentsModel, IJISDelayedSegmentDto> {
5
+ name: string;
6
+ protected transformInternal: (segment: JISDelayedSegmentsModel) => IJISDelayedSegmentDto;
7
+ }
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation.js";
8
+ import { injectable } from "@golemio/core/dist/shared/tsyringe.js";
9
+ let JISDelayedSegmentsTransformation = class JISDelayedSegmentsTransformation extends AbstractTransformation {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = "JISDelayedSegmentsTransformation";
13
+ this.transformInternal = (segment) => {
14
+ return {
15
+ id: segment.id,
16
+ from_stop: { id: segment.from_stop_id, name: segment.from_stop_name },
17
+ to_stop: { id: segment.to_stop_id, name: segment.to_stop_name },
18
+ expected_delay_seconds: segment.expected_delay_seconds,
19
+ first_detected_at: segment.created_at.toISOString(),
20
+ last_detected_at: segment.updated_at.toISOString(),
21
+ stops: segment.stops,
22
+ routes: segment.routes,
23
+ info_panel_stops: segment.info_panel_stops,
24
+ };
25
+ };
26
+ }
27
+ };
28
+ JISDelayedSegmentsTransformation = __decorate([
29
+ injectable()
30
+ ], JISDelayedSegmentsTransformation);
31
+ export { JISDelayedSegmentsTransformation };
32
+ //# sourceMappingURL=JISDelayedSegmentsTransformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JISDelayedSegmentsTransformation.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qEAAqE,CAAC;AAC7G,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAI5D,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,sBAAsE;IAArH;;QACI,SAAI,GAAG,kCAAkC,CAAC;QAEvC,sBAAiB,GAAG,CAAC,OAAgC,EAAyB,EAAE;YACtF,OAAO;gBACH,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE;gBACrE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE;gBAC/D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;gBACnD,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;gBAClD,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC7C,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CAAA,CAAA;AAhBY,gCAAgC;IAD5C,UAAU,EAAE;GACA,gCAAgC,CAgB5C"}
@@ -0,0 +1,3 @@
1
+ import { type JSONSchemaType } from "@golemio/core/dist/shared/ajv.js";
2
+ import { type IMapaPidDelayShape } from "./interfaces/IMapaPidDelayShape.js";
3
+ export declare const mapaPidDelayShapesJsonSchema: JSONSchemaType<IMapaPidDelayShape[]>;
@@ -0,0 +1,16 @@
1
+ // Additional properties are allowed, as the endpoint serves the Mapa PID web map and its response contains more fields
2
+ export const mapaPidDelayShapesJsonSchema = {
3
+ type: "array",
4
+ items: {
5
+ type: "object",
6
+ properties: {
7
+ from_stop_id: { type: "string" },
8
+ to_stop_id: { type: "string" },
9
+ from_stop_name: { oneOf: [{ type: "string" }, { type: "null", nullable: true }] },
10
+ to_stop_name: { oneOf: [{ type: "string" }, { type: "null", nullable: true }] },
11
+ expected_delay: { type: "integer" },
12
+ },
13
+ required: ["from_stop_id", "to_stop_id", "from_stop_name", "to_stop_name", "expected_delay"],
14
+ },
15
+ };
16
+ //# sourceMappingURL=MapaPidDelayShapesJsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapaPidDelayShapesJsonSchema.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.ts"],"names":[],"mappings":"AAGA,uHAAuH;AACvH,MAAM,CAAC,MAAM,4BAA4B,GAAyC;IAC9E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SACtC;QACD,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,CAAC;KAC/F;CACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Delayed segment (merged chain of delayed stop-to-stop sections) as reported by Mapa PID
3
+ */
4
+ export interface IMapaPidDelayShape {
5
+ from_stop_id: string;
6
+ to_stop_id: string;
7
+ from_stop_name: string | null;
8
+ to_stop_name: string | null;
9
+ expected_delay: number;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IMapaPidDelayShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMapaPidDelayShape.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.ts"],"names":[],"mappings":""}
@@ -7,3 +7,4 @@ export * from "./IJISInfotext.js";
7
7
  export * from "./IJISInfotextStop.js";
8
8
  export * from "./IJISInfotextPreset.js";
9
9
  export * from "./IJISTranslationText.js";
10
+ export * from "./IMapaPidDelayShape.js";
@@ -7,4 +7,5 @@ export * from "./IJISInfotext.js";
7
7
  export * from "./IJISInfotextStop.js";
8
8
  export * from "./IJISInfotextPreset.js";
9
9
  export * from "./IJISTranslationText.js";
10
+ export * from "./IMapaPidDelayShape.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type JSONSchemaType } from "@golemio/core/dist/shared/ajv.js";
2
+ import type { CreationOptional, InferAttributes, InferCreationAttributes, ModelAttributes } from "@golemio/core/dist/shared/sequelize.js";
3
+ import SequelizeCore from "@golemio/core/dist/shared/sequelize.js";
4
+ declare const Model: typeof SequelizeCore.Model;
5
+ import { type IJISDelayedSegment, type IJISDelayedSegmentInfoPanelStop, type IJISDelayedSegmentRoute, type IJISDelayedSegmentStop } from "./interfaces/index.js";
6
+ export declare class JISDelayedSegmentsModel extends Model<InferAttributes<JISDelayedSegmentsModel>, InferCreationAttributes<JISDelayedSegmentsModel>> implements IJISDelayedSegment {
7
+ static tableName: string;
8
+ id: string;
9
+ external_from_stop_id: string;
10
+ external_to_stop_id: string;
11
+ from_stop_id: string;
12
+ from_stop_name: string;
13
+ to_stop_id: string;
14
+ to_stop_name: string;
15
+ expected_delay_seconds: number;
16
+ stops: IJISDelayedSegmentStop[];
17
+ routes: IJISDelayedSegmentRoute[];
18
+ info_panel_stops: IJISDelayedSegmentInfoPanelStop[];
19
+ created_at: CreationOptional<Date>;
20
+ updated_at: CreationOptional<Date>;
21
+ static attributeModel: ModelAttributes<JISDelayedSegmentsModel>;
22
+ static jsonSchema: JSONSchemaType<IJISDelayedSegment[]>;
23
+ }
24
+ export {};