@golemio/pid 5.18.1 → 5.18.2-dev.2769428000

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 (31) hide show
  1. package/db/migrations/postgresql/20260813120000-jis-events-ropidgtfs-routes-route-details.js +49 -0
  2. package/db/migrations/postgresql/sqls/20260813120000-jis-events-ropidgtfs-routes-route-details-down.sql +2 -0
  3. package/db/migrations/postgresql/sqls/20260813120000-jis-events-ropidgtfs-routes-route-details-up.sql +2 -0
  4. package/dist/helpers/jis/interfaces/IJISEventCustomFormatDto.d.ts +2 -3
  5. package/dist/integration-engine/jis/transformations/JISEventsTransformation.js +2 -1
  6. package/dist/integration-engine/jis/transformations/JISEventsTransformation.js.map +1 -1
  7. package/dist/integration-engine/jis/transformations/UpdateEventWebhookTransformation.d.ts +9 -3
  8. package/dist/integration-engine/jis/transformations/UpdateEventWebhookTransformation.js +1 -0
  9. package/dist/integration-engine/jis/transformations/UpdateEventWebhookTransformation.js.map +1 -1
  10. package/dist/integration-engine/jis/workers/tasks/UpdateEventWebhookTask.js +29 -16
  11. package/dist/integration-engine/jis/workers/tasks/UpdateEventWebhookTask.js.map +1 -1
  12. package/dist/output-gateway/jis/data-access/JISEventsRepository.d.ts +4 -1
  13. package/dist/output-gateway/jis/data-access/JISEventsRepository.js +24 -6
  14. package/dist/output-gateway/jis/data-access/JISEventsRepository.js.map +1 -1
  15. package/dist/output-gateway/jis/domain/IJISEventsInterfaces.d.ts +9 -0
  16. package/dist/output-gateway/jis/transformations/JISEventsCustomFormatTransformation.d.ts +8 -2
  17. package/dist/output-gateway/jis/transformations/JISEventsCustomFormatTransformation.js +22 -6
  18. package/dist/output-gateway/jis/transformations/JISEventsCustomFormatTransformation.js.map +1 -1
  19. package/dist/schema-definitions/jis/datasources/JISEventsJsonSchema.js +19 -0
  20. package/dist/schema-definitions/jis/datasources/JISEventsJsonSchema.js.map +1 -1
  21. package/dist/schema-definitions/jis/datasources/interfaces/IJISEventRoute.d.ts +7 -0
  22. package/dist/schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel.d.ts +1 -0
  23. package/dist/schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel.js +22 -0
  24. package/dist/schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel.js.map +1 -1
  25. package/dist/schema-definitions/jis/models/interfaces/IJISEventsRopidGTFSRoutes.d.ts +2 -0
  26. package/docs/asyncapi.yaml +22 -0
  27. package/docs/implementation_documentation.md +4 -1
  28. package/docs/jis/index.md +37 -0
  29. package/docs/openapi-input.yaml +50 -1
  30. package/docs/openapi-output.yaml +7 -0
  31. package/package.json +2 -2
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var dbm;
4
+ var type;
5
+ var seed;
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var Promise;
9
+
10
+ exports.setup = function(options, seedLink) {
11
+ dbm = options.dbmigrate;
12
+ type = dbm.dataType;
13
+ seed = seedLink;
14
+ Promise = options.Promise;
15
+ };
16
+
17
+ exports.up = function(db) {
18
+ var filePath = path.join(__dirname, 'sqls', '20260813120000-jis-events-ropidgtfs-routes-route-details-up.sql');
19
+ return new Promise( function( resolve, reject ) {
20
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
21
+ if (err) return reject(err);
22
+ console.log('received data: ' + data);
23
+
24
+ resolve(data);
25
+ });
26
+ })
27
+ .then(function(data) {
28
+ return db.runSql(data);
29
+ });
30
+ };
31
+
32
+ exports.down = function(db) {
33
+ var filePath = path.join(__dirname, 'sqls', '20260813120000-jis-events-ropidgtfs-routes-route-details-down.sql');
34
+ return new Promise( function( resolve, reject ) {
35
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
36
+ if (err) return reject(err);
37
+ console.log('received data: ' + data);
38
+
39
+ resolve(data);
40
+ });
41
+ })
42
+ .then(function(data) {
43
+ return db.runSql(data);
44
+ });
45
+ };
46
+
47
+ exports._meta = {
48
+ "version": 1
49
+ };
@@ -0,0 +1,2 @@
1
+ ALTER TABLE jis_events_ropidgtfs_routes
2
+ DROP COLUMN route_details;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE jis_events_ropidgtfs_routes
2
+ ADD COLUMN route_details JSONB;
@@ -1,7 +1,6 @@
1
1
  import { IJISEventAttachmentName } from "../../../schema-definitions/jis/datasources/interfaces/IJISEventAttachmentName";
2
2
  import { IJISTranslationTextNullable } from "../../../schema-definitions/jis/datasources/interfaces/IJISTranslationTextNullable";
3
3
  import { IJISEventTranslationText, IJISTranslationText } from "../../../schema-definitions/jis/models/interfaces";
4
- import { RouteDto } from "../../../schema-definitions/ropid-gtfs/models/RouteDto";
5
4
  export interface IJISEventCustomFormatDto {
6
5
  id: string;
7
6
  type: string;
@@ -24,8 +23,9 @@ export interface IJISEventCustomFormatDto {
24
23
  informed_entity?: {
25
24
  routes?: Array<{
26
25
  id: string;
26
+ route_id: string;
27
27
  route_short_name: string;
28
- route_long_name: string;
28
+ route_long_name: string | null;
29
29
  route_type: number;
30
30
  }>;
31
31
  } | null;
@@ -38,4 +38,3 @@ export interface IJISEventCustomFormatAttachment {
38
38
  url: string;
39
39
  name: IJISEventAttachmentName;
40
40
  }
41
- export type IJISEventRouteDto = Pick<RouteDto, "route_long_name" | "route_short_name" | "route_type" | "route_id">;
@@ -37,9 +37,10 @@ let JISEventsTransformation = class JISEventsTransformation extends AbstractTran
37
37
  updated_timestamp: new Date(data.last_modified_timestamp),
38
38
  deleted_timestamp: data.deleted_at ? new Date(data.deleted_at) : null,
39
39
  };
40
- const eventsRopidGTFSRoutes = data.informed_entity?.routes?.map(({ id }) => ({
40
+ const eventsRopidGTFSRoutes = data.informed_entity?.routes?.map(({ id, route_details }) => ({
41
41
  event_id: data.id,
42
42
  route_id: id,
43
+ route_details: route_details ?? null,
43
44
  })) ?? [];
44
45
  return {
45
46
  event,
@@ -1 +1 @@
1
- {"version":3,"file":"JISEventsTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/JISEventsTransformation.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oFAAyE;AAMzE,6GAA0G;AAC1G,iEAAgE;AASzD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,+CAAiD;IAAvF;;QACI,SAAI,GAAG,yBAAyB,CAAC;QAE9B,sBAAiB,GAAG,CAAC,IAAiB,EAAgB,EAAE;YAC9D,MAAM,KAAK,GAAmB;gBAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,mBAAmB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBACvD,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnF,oBAAoB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBACzD,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtF,MAAM,EAAE,2CAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3D,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;gBACrC,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACnD,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;gBACzD,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;aACxE,CAAC;YACF,MAAM,qBAAqB,GACvB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3C,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,QAAQ,EAAE,EAAE;aACf,CAAC,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;gBACH,KAAK;gBACL,qBAAqB;aACxB,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CAAA,CAAA;AApCY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,qBAAU,GAAE;GACA,uBAAuB,CAoCnC"}
1
+ {"version":3,"file":"JISEventsTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/JISEventsTransformation.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oFAAyE;AAMzE,6GAA0G;AAC1G,iEAAgE;AASzD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,+CAAiD;IAAvF;;QACI,SAAI,GAAG,yBAAyB,CAAC;QAE9B,sBAAiB,GAAG,CAAC,IAAiB,EAAgB,EAAE;YAC9D,MAAM,KAAK,GAAmB;gBAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,mBAAmB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBACvD,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnF,oBAAoB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBACzD,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtF,MAAM,EAAE,2CAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3D,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;gBACrC,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACnD,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;gBACzD,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;aACxE,CAAC;YACF,MAAM,qBAAqB,GACvB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1D,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,aAAa,IAAI,IAAI;aACvC,CAAC,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;gBACH,KAAK;gBACL,qBAAqB;aACxB,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CAAA,CAAA;AArCY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,qBAAU,GAAE;GACA,uBAAuB,CAqCnC"}
@@ -1,16 +1,22 @@
1
- import { IJISEventRouteDto, IJISEventCustomFormatDto } from "../../../helpers/jis/interfaces/IJISEventCustomFormatDto";
1
+ import { IJISEventCustomFormatDto } from "../../../helpers/jis/interfaces/IJISEventCustomFormatDto";
2
2
  import { IJISEvent } from "../../../schema-definitions/jis/datasources/interfaces";
3
3
  import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
4
+ export type UpdateEventWebhookRouteInput = {
5
+ route_id: string;
6
+ route_short_name: string;
7
+ route_long_name: string | null;
8
+ route_type: number;
9
+ };
4
10
  export declare class UpdateEventWebhookTransformation extends AbstractTransformation<{
5
11
  event: IJISEvent;
6
- routes: IJISEventRouteDto[];
12
+ routes: UpdateEventWebhookRouteInput[];
7
13
  }, IJISEventCustomFormatDto & {
8
14
  deleted_timestamp: string | null;
9
15
  }> {
10
16
  name: string;
11
17
  protected transformInternal: ({ event, routes, }: {
12
18
  event: IJISEvent;
13
- routes: IJISEventRouteDto[];
19
+ routes: UpdateEventWebhookRouteInput[];
14
20
  }) => IJISEventCustomFormatDto & {
15
21
  deleted_timestamp: string | null;
16
22
  };
@@ -42,6 +42,7 @@ let UpdateEventWebhookTransformation = class UpdateEventWebhookTransformation ex
42
42
  informed_entity: {
43
43
  routes: routes.map((r) => ({
44
44
  id: r.route_id,
45
+ route_id: r.route_id,
45
46
  route_long_name: r.route_long_name,
46
47
  route_short_name: r.route_short_name,
47
48
  route_type: r.route_type,
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateEventWebhookTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/UpdateEventWebhookTransformation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateEventWebhookTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/UpdateEventWebhookTransformation.ts"],"names":[],"mappings":"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"}
@@ -83,21 +83,27 @@ let UpdateEventWebhookTask = class UpdateEventWebhookTask extends AbstractTaskJs
83
83
  }
84
84
  }
85
85
  async fillMissingDataAndTransform(events) {
86
- const routeIds = Array.from(new Set(events.flatMap((event) => event.informed_entity?.routes?.map((route) => route.id) || [])));
87
- let routeRecords;
88
- try {
89
- routeRecords = await this.routesRepository["sequelizeModel"].findAll({
90
- where: {
91
- route_id: { [sequelize_1.Op.in]: routeIds },
92
- },
93
- attributes: ["route_short_name", "route_long_name", "route_type", "route_id"],
94
- raw: true,
95
- });
96
- }
97
- catch (err) {
98
- if (err instanceof golemio_errors_1.GeneralError)
99
- throw err;
100
- throw new golemio_errors_1.GeneralError(`Error while getting route details from DB`, this.constructor.name, err);
86
+ // snapshot-first: a GTFS lookup is needed for routes without route_details, and as a
87
+ // fallback for routes whose route_details.route_id doesn't match the reported id.
88
+ const routeIdsMissingSnapshot = Array.from(new Set(events.flatMap((event) => event.informed_entity?.routes
89
+ ?.filter((route) => !route.route_details || route.route_details.route_id !== route.id)
90
+ .map((route) => route.id) || [])));
91
+ let routeRecords = [];
92
+ if (routeIdsMissingSnapshot.length > 0) {
93
+ try {
94
+ routeRecords = await this.routesRepository["sequelizeModel"].findAll({
95
+ where: {
96
+ route_id: { [sequelize_1.Op.in]: routeIdsMissingSnapshot },
97
+ },
98
+ attributes: ["route_short_name", "route_long_name", "route_type", "route_id"],
99
+ raw: true,
100
+ });
101
+ }
102
+ catch (err) {
103
+ if (err instanceof golemio_errors_1.GeneralError)
104
+ throw err;
105
+ throw new golemio_errors_1.GeneralError(`Error while getting route details from DB`, this.constructor.name, err);
106
+ }
101
107
  }
102
108
  const routeMap = new Map();
103
109
  for (const route of routeRecords) {
@@ -106,7 +112,14 @@ let UpdateEventWebhookTask = class UpdateEventWebhookTask extends AbstractTaskJs
106
112
  const result = events.map((event) => {
107
113
  const routes = [];
108
114
  for (const r of event.informed_entity?.routes || []) {
109
- const routeData = routeMap.get(r.id);
115
+ const routeData = r.route_details && r.route_details.route_id === r.id
116
+ ? {
117
+ route_id: r.route_details.route_id,
118
+ route_short_name: r.route_details.route_short_name,
119
+ route_long_name: r.route_details.route_long_name,
120
+ route_type: r.route_details.route_type,
121
+ }
122
+ : routeMap.get(r.id);
110
123
  if (routeData) {
111
124
  routes.push({
112
125
  route_id: routeData.route_id,
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateEventWebhookTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/jis/workers/tasks/UpdateEventWebhookTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateEventWebhookTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/jis/workers/tasks/UpdateEventWebhookTask.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { JSONSchemaValidator } from "@golemio/core/dist/shared/golemio-validator
6
6
  import { ModelStatic } from "@golemio/core/dist/shared/sequelize";
7
7
  import { JISEventsRopidGTFSRoutesRepository } from "./JISEventsRopidGTFSRoutesRepository";
8
8
  import { RopidGTFSRoutesRepository } from "./RopidGTFSRoutesRepository";
9
+ import { IJISEventRouteWithGtfs } from "../domain/IJISEventsInterfaces";
9
10
  export declare class JISEventsRepository extends AbstractValidatableRepository {
10
11
  private eventsRopidGTFSRoutesRepository;
11
12
  private ropidGTFSRoutesRepository;
@@ -14,6 +15,8 @@ export declare class JISEventsRepository extends AbstractValidatableRepository {
14
15
  tableName: string;
15
16
  sequelizeModel: ModelStatic<JISEventsModel>;
16
17
  constructor(connector: IDatabaseConnector, logger: ILogger, eventsRopidGTFSRoutesRepository: JISEventsRopidGTFSRoutesRepository, ropidGTFSRoutesRepository: RopidGTFSRoutesRepository);
17
- getAllForCustomFormat: (organizationNames?: string[], displayPeriodStart?: string, displayPeriodEnd?: string, type?: string) => Promise<JISEventsModel[]>;
18
+ getAllForCustomFormat: (organizationNames?: string[], displayPeriodStart?: string, displayPeriodEnd?: string, type?: string) => Promise<Array<JISEventsModel & {
19
+ routes: IJISEventRouteWithGtfs[];
20
+ }>>;
18
21
  private buildWhereForCustomFormat;
19
22
  }
@@ -34,10 +34,20 @@ let JISEventsRepository = class JISEventsRepository extends AbstractValidatableR
34
34
  this.getAllForCustomFormat = async (organizationNames, displayPeriodStart, displayPeriodEnd, type) => {
35
35
  try {
36
36
  const where = this.buildWhereForCustomFormat(organizationNames, displayPeriodStart, displayPeriodEnd, type);
37
- return await this.sequelizeModel.findAll({
37
+ return (await this.sequelizeModel.findAll({
38
38
  where,
39
- include: { model: this.ropidGTFSRoutesRepository["sequelizeModel"], as: "routes" },
40
- });
39
+ include: {
40
+ model: this.eventsRopidGTFSRoutesRepository["sequelizeModel"],
41
+ as: "routes",
42
+ include: [
43
+ {
44
+ model: this.ropidGTFSRoutesRepository["sequelizeModel"],
45
+ as: "gtfsRoute",
46
+ required: false,
47
+ },
48
+ ],
49
+ },
50
+ }));
41
51
  }
42
52
  catch (err) {
43
53
  throw new golemio_errors_1.GeneralError("Error in getAllForCustomFormat", this.constructor.name, err);
@@ -47,12 +57,20 @@ let JISEventsRepository = class JISEventsRepository extends AbstractValidatableR
47
57
  this.sequelizeModel = connector.getConnection().define(this.tableName, JISEventsModel_1.JISEventsModel.attributeModel, {
48
58
  schema: this.schema,
49
59
  });
50
- this.sequelizeModel.belongsToMany(this.ropidGTFSRoutesRepository["sequelizeModel"], {
51
- through: eventsRopidGTFSRoutesRepository["sequelizeModel"],
60
+ // Junction-first: hasMany the junction table (never drops a route without a GTFS counterpart),
61
+ // then optionally resolve the GTFS row for legacy rows whose route_details snapshot is null.
62
+ // A belongsToMany through the junction would inner-join junction->target and silently drop
63
+ // junction rows without a GTFS counterpart, even with required: false.
64
+ this.sequelizeModel.hasMany(eventsRopidGTFSRoutesRepository["sequelizeModel"], {
52
65
  foreignKey: "event_id",
53
- otherKey: "route_id",
66
+ sourceKey: "id",
54
67
  as: "routes",
55
68
  });
69
+ eventsRopidGTFSRoutesRepository["sequelizeModel"].belongsTo(this.ropidGTFSRoutesRepository["sequelizeModel"], {
70
+ foreignKey: "route_id",
71
+ targetKey: "route_id",
72
+ as: "gtfsRoute",
73
+ });
56
74
  }
57
75
  buildWhereForCustomFormat(organizationNames, displayPeriodStart, displayPeriodEnd, type) {
58
76
  const where = {
@@ -1 +1 @@
1
- {"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/data-access/JISEventsRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/data-access/JISEventsRepository.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import { JISEventsModel } from "../../../schema-definitions/jis/models/JISEventsModel";
2
+ import { JISEventsRopidGTFSRoutesModel } from "../../../schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel";
3
+ import { RouteDto } from "../../../schema-definitions/ropid-gtfs/models/RouteDto";
2
4
  export interface IJISEventCustomFormatInputDto {
3
5
  data: JISEventsModel;
4
6
  timezone: string;
5
7
  }
8
+ /**
9
+ * Junction-first read result for a single event route: the junction row is always present,
10
+ * `gtfsRoute` is populated only when a matching ropidgtfs_routes row exists (optional resolution).
11
+ */
12
+ export type IJISEventRouteWithGtfs = JISEventsRopidGTFSRoutesModel & {
13
+ gtfsRoute?: RouteDto | null;
14
+ };
@@ -1,9 +1,15 @@
1
1
  import { IJISEventCustomFormatDto } from "../../../helpers/jis/interfaces/IJISEventCustomFormatDto";
2
2
  import { JISEventsModel } from "../../../schema-definitions/jis/models/JISEventsModel";
3
3
  import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
4
- export declare class JISEventsCustomFormatTransformation extends AbstractTransformation<JISEventsModel, IJISEventCustomFormatDto> {
4
+ import { IJISEventRouteWithGtfs } from "../domain/IJISEventsInterfaces";
5
+ type TransformIn = JISEventsModel & {
6
+ routes?: IJISEventRouteWithGtfs[];
7
+ };
8
+ export declare class JISEventsCustomFormatTransformation extends AbstractTransformation<TransformIn, IJISEventCustomFormatDto> {
5
9
  name: string;
6
- protected transformInternal: (event: JISEventsModel) => IJISEventCustomFormatDto;
10
+ protected transformInternal: (event: TransformIn) => IJISEventCustomFormatDto;
11
+ private buildRoutes;
7
12
  private attachmentsToDto;
8
13
  private effectsToTranslation;
9
14
  }
15
+ export {};
@@ -40,12 +40,7 @@ let JISEventsCustomFormatTransformation = class JISEventsCustomFormatTransformat
40
40
  description_html: event.description_html,
41
41
  organization_name: event.organization_name,
42
42
  informed_entity: {
43
- routes: event.routes?.map((route) => ({
44
- id: route.route_id,
45
- route_short_name: route.route_short_name,
46
- route_long_name: route.route_long_name,
47
- route_type: route.route_type,
48
- })) || [],
43
+ routes: this.buildRoutes(event.routes),
49
44
  },
50
45
  attachments: this.attachmentsToDto(event.attachments),
51
46
  last_modified_timestamp: event.updated_timestamp.toISOString(),
@@ -53,6 +48,27 @@ let JISEventsCustomFormatTransformation = class JISEventsCustomFormatTransformat
53
48
  };
54
49
  };
55
50
  }
51
+ // Snapshot-first: route_details (stored on every VYMI push) is authoritative, but only if it
52
+ // actually describes this route (route_id matches); otherwise fall back to the GTFS join like
53
+ // legacy rows without a snapshot. Neither present -> the route is skipped (matches pre-snapshot
54
+ // behavior, no regression).
55
+ buildRoutes(routes = []) {
56
+ return routes
57
+ .map((route) => {
58
+ const snapshot = route.route_details?.route_id === route.route_id ? route.route_details : null;
59
+ const details = snapshot ?? route.gtfsRoute;
60
+ return details
61
+ ? {
62
+ id: route.route_id,
63
+ route_id: details.route_id,
64
+ route_short_name: details.route_short_name,
65
+ route_long_name: details.route_long_name ?? null,
66
+ route_type: details.route_type,
67
+ }
68
+ : null;
69
+ })
70
+ .filter((route) => route !== null);
71
+ }
56
72
  attachmentsToDto(attachments) {
57
73
  return (attachments ?? []).map((attachment) => ({
58
74
  url: attachment.url,
@@ -1 +1 @@
1
- {"version":3,"file":"JISEventsCustomFormatTransformation.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/transformations/JISEventsCustomFormatTransformation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JISEventsCustomFormatTransformation.js","sourceRoot":"","sources":["../../../../src/output-gateway/jis/transformations/JISEventsCustomFormatTransformation.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.jisEventsJsonSchema = void 0;
4
4
  const JISEventSeverityLevelEnum_1 = require("../../../helpers/jis/JISEventSeverityLevelEnum");
5
+ const RouteTypeEnums_1 = require("../../../helpers/RouteTypeEnums");
5
6
  const jisEventCause_1 = require("../constants/jisEventCause");
6
7
  const jisEventEffect_1 = require("../constants/jisEventEffect");
7
8
  const jisEventType_1 = require("../constants/jisEventType");
9
+ const gtfsRouteTypeValues = Object.values(RouteTypeEnums_1.GTFSRouteTypeEnum).filter((value) => typeof value === "number");
8
10
  exports.jisEventsJsonSchema = {
9
11
  type: "array",
10
12
  items: {
@@ -78,6 +80,23 @@ exports.jisEventsJsonSchema = {
78
80
  type: "object",
79
81
  properties: {
80
82
  id: { type: "string" },
83
+ route_details: {
84
+ type: "object",
85
+ nullable: true,
86
+ properties: {
87
+ route_id: { type: "string", maxLength: 50 },
88
+ route_short_name: { type: "string", maxLength: 255 },
89
+ route_long_name: {
90
+ oneOf: [
91
+ { type: "string", maxLength: 255 },
92
+ { type: "null", nullable: true },
93
+ ],
94
+ },
95
+ route_type: { type: "integer", enum: gtfsRouteTypeValues },
96
+ },
97
+ additionalProperties: false,
98
+ required: ["route_id", "route_short_name", "route_long_name", "route_type"],
99
+ },
81
100
  },
82
101
  additionalProperties: false,
83
102
  required: ["id"],
@@ -1 +1 @@
1
- {"version":3,"file":"JISEventsJsonSchema.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/datasources/JISEventsJsonSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JISEventsJsonSchema.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/datasources/JISEventsJsonSchema.ts"],"names":[],"mappings":";;;AAAA,8FAA+E;AAC/E,oEAA4D;AAE5D,8DAA2D;AAC3D,gEAA6D;AAE7D,4DAAyD;AAEzD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,kCAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAE9G,QAAA,mBAAmB,GAAgC;IAC5D,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAAY,EAAE;YAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAClD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAAa,EAAE;YAC9C,YAAY,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;YAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,iDAAqB,CAAC,EAAE;YAC9E,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;oBAC9C,GAAG,EAAE;wBACD,KAAK,EAAE;4BACH,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;4BACvC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;yBACnC;qBACJ;iBACJ;gBACD,oBAAoB,EAAE,KAAK;gBAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC;aACtB;YACD,cAAc,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;oBAC9C,GAAG,EAAE;wBACD,KAAK,EAAE;4BACH,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;4BACvC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;yBACnC;qBACJ;iBACJ;gBACD,oBAAoB,EAAE,KAAK;gBAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC;aACtB;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,+BAAc;yBACvB;wBACD,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,CAAC;wBACX,WAAW,EAAE,IAAI;qBACpB;oBACD;wBACI,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,+BAAc;qBACvB;iBACJ;aACJ;YACD,aAAa,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACpD,gBAAgB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACvD,gBAAgB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACvD,GAAG,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAC1C,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrC,eAAe,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE;oBACR,MAAM,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACtB,aAAa,EAAE;oCACX,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,IAAI;oCACd,UAAU,EAAE;wCACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;wCAC3C,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;wCACpD,eAAe,EAAE;4CACb,KAAK,EAAE;gDACH,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;gDAClC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;6CACnC;yCACJ;wCACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE;qCAC7D;oCACD,oBAAoB,EAAE,KAAK;oCAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,CAAC;iCAC9E;6BACJ;4BACD,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,IAAI,CAAC;yBACnB;qBACJ;iBACJ;gBACD,oBAAoB,EAAE,KAAK;aAC9B;YACD,WAAW,EAAE;gBACT,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACvB,IAAI,EAAE;oCACF,KAAK,EAAE;wCACH;4CACI,IAAI,EAAE,QAAQ;4CACd,UAAU,EAAE;gDACR,EAAE,EAAE;oDACA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oDAC7D,QAAQ,EAAE,IAAI;iDACjB;gDACD,EAAE,EAAE;oDACA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oDAC7D,QAAQ,EAAE,IAAI;iDACjB;gDACD,EAAE,EAAE;oDACA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oDAC7D,QAAQ,EAAE,IAAI;iDACjB;6CACJ;4CACD,oBAAoB,EAAE,KAAK;yCAC9B;wCACD,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;qCACnC;oCACD,QAAQ,EAAE,IAAI;iCACjB;6BACJ;4BACD,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,KAAK,CAAC;yBACpB;qBACJ;oBACD,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACnC;gBACD,QAAQ,EAAE,IAAI;aACjB;YACD,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAC1D,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAChE,UAAU,EAAE;gBACR,KAAK,EAAE;oBACH,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;oBACvC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACnC;aACJ;SACJ;QACD,QAAQ,EAAE;YACN,IAAI;YACJ,MAAM;YACN,aAAa;YACb,OAAO;YACP,cAAc;YACd,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,QAAQ;YACR,eAAe;YACf,kBAAkB;YAClB,kBAAkB;YAClB,KAAK;YACL,mBAAmB;YACnB,mBAAmB;YACnB,yBAAyB;SAC5B;KACJ;IACD,WAAW,EAAE;QACT,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;gBACrE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;aACxE;YACD,oBAAoB,EAAE,KAAK;YAC3B,QAAQ,EAAE,CAAC,IAAI,CAAC;SACnB;QACD,mBAAmB,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;gBACrE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;aACxE;YACD,oBAAoB,EAAE,KAAK;YAC3B,QAAQ,EAAE,CAAC,IAAI,CAAC;SACnB;KACJ;CACJ,CAAC"}
@@ -1,3 +1,10 @@
1
+ export interface IJISEventRouteDetails {
2
+ route_id: string;
3
+ route_short_name: string;
4
+ route_long_name: string | null;
5
+ route_type: number;
6
+ }
1
7
  export interface IJISEventRoute {
2
8
  id: string;
9
+ route_details?: IJISEventRouteDetails | null;
3
10
  }
@@ -5,6 +5,7 @@ export declare class JISEventsRopidGTFSRoutesModel extends Model<InferAttributes
5
5
  static tableName: string;
6
6
  event_id: string;
7
7
  route_id: string;
8
+ route_details: IJISEventsRopidGTFSRoutes["route_details"];
8
9
  created_at: CreationOptional<Date>;
9
10
  updated_at: CreationOptional<Date>;
10
11
  static attributeModel: ModelAttributes<JISEventsRopidGTFSRoutesModel>;
@@ -17,6 +17,10 @@ JISEventsRopidGTFSRoutesModel.attributeModel = {
17
17
  type: sequelize_1.DataTypes.STRING(50),
18
18
  allowNull: false,
19
19
  },
20
+ route_details: {
21
+ type: sequelize_1.DataTypes.JSONB,
22
+ allowNull: true,
23
+ },
20
24
  created_at: {
21
25
  type: sequelize_1.DataTypes.DATE,
22
26
  allowNull: false,
@@ -33,6 +37,24 @@ JISEventsRopidGTFSRoutesModel.jsonSchema = {
33
37
  properties: {
34
38
  event_id: { type: "string" },
35
39
  route_id: { type: "string" },
40
+ route_details: {
41
+ oneOf: [
42
+ {
43
+ type: "object",
44
+ properties: {
45
+ route_id: { type: "string" },
46
+ route_short_name: { type: "string" },
47
+ route_long_name: {
48
+ oneOf: [{ type: "string" }, { type: "null", nullable: true }],
49
+ },
50
+ route_type: { type: "integer" },
51
+ },
52
+ additionalProperties: false,
53
+ required: ["route_id", "route_short_name", "route_long_name", "route_type"],
54
+ },
55
+ { type: "null", nullable: true },
56
+ ],
57
+ },
36
58
  },
37
59
  additionalProperties: false,
38
60
  required: ["event_id", "route_id"],
@@ -1 +1 @@
1
- {"version":3,"file":"JISEventsRopidGTFSRoutesModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel.ts"],"names":[],"mappings":";;;AACA,mEAO6C;AAG7C,MAAa,6BACT,SAAQ,iBAA6G;;AADzH,sEA4CC;AAxCiB,uCAAS,GAAG,6BAA6B,CAAC;AAO1C,4CAAc,GAAmD;IAC3E,QAAQ,EAAE;QACN,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACN,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;CACJ,CAAC;AAEY,wCAAU,GAAgD;IACpE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B;QACD,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;KACrC;CACJ,CAAC"}
1
+ {"version":3,"file":"JISEventsRopidGTFSRoutesModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/models/JISEventsRopidGTFSRoutesModel.ts"],"names":[],"mappings":";;;AACA,mEAO6C;AAG7C,MAAa,6BACT,SAAQ,iBAA6G;;AADzH,sEAmEC;AA/DiB,uCAAS,GAAG,6BAA6B,CAAC;AAQ1C,4CAAc,GAAmD;IAC3E,QAAQ,EAAE;QACN,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACN,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;KACnB;CACJ,CAAC;AAEY,wCAAU,GAAgD;IACpE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,aAAa,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC5B,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACpC,eAAe,EAAE;gCACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;6BAChE;4BACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBAClC;wBACD,oBAAoB,EAAE,KAAK;wBAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,CAAC;qBAC9E;oBACD,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACnC;aACJ;SACJ;QACD,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;KACrC;CACJ,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { IJISEventRouteDetails } from "../../datasources/interfaces/IJISEventRoute";
1
2
  export interface IJISEventsRopidGTFSRoutes {
2
3
  event_id: string;
3
4
  route_id: string;
5
+ route_details: IJISEventRouteDetails | null;
4
6
  }
@@ -1882,6 +1882,28 @@ components:
1882
1882
  id:
1883
1883
  type: string
1884
1884
  description: Unique GTFS identifier of the affected route
1885
+ route_details:
1886
+ type: object
1887
+ nullable: true
1888
+ description: >-
1889
+ Optional snapshot of the route's GTFS attributes at the time VYMI sent the event.
1890
+ Present on every route sent by producers that support it (older payloads omit it,
1891
+ or send it as null)
1892
+ properties:
1893
+ route_id:
1894
+ type: string
1895
+ route_short_name:
1896
+ type: string
1897
+ route_long_name:
1898
+ type: string
1899
+ nullable: true
1900
+ route_type:
1901
+ type: integer
1902
+ required:
1903
+ - route_id
1904
+ - route_short_name
1905
+ - route_long_name
1906
+ - route_type
1885
1907
  required:
1886
1908
  - id
1887
1909
  last_modified_timestamp:
@@ -1291,6 +1291,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1291
1291
  - pole `effects` je pole až 3 unikátních řetězců; v GTFS-RT `Alert.effect` se použije pouze `effects[0]`, zbývající hodnoty jsou dostupné pouze v custom-format exportu
1292
1292
  - pole `cause_detail` je volný text zpřesňující příčinu události; může být `null`
1293
1293
  - pole `cause` obsahuje překlady do češtiny i angličtiny; anglické hodnoty jsou zahrnuty i ve výstupu GTFS-RT alert feedu
1294
+ - `informed_entity.routes[].route_details` (volitelné) je snímek GTFS atributů trasy z VYMI, uložený beze změny do `jis_events_ropidgtfs_routes.route_details`; podrobněji viz [jis/index.md](./jis/index.md#informed_entityroutesroute_details-snímek-gtfs-atributů-trasy)
1294
1295
  - pole `header_text`, `description_text`, `description_html` a `cause` mají navíc německou mutaci (`de`) v custom-format exportu a ve webhooku; `cause_detail`, `effect_detail`, `url` a `effects` němčinu nemají (VYMI ji tam neposílá) — viz [docs/jis/index.md](jis/index.md#německá-jazyková-mutace-de)
1295
1296
  - nové pole `attachments` (JSONB, nullable) — dokumenty a odkazy přiložené k události (`{url, name: {cs, en, de}}`); vložené obrázky se nepropagují — viz [docs/jis/index.md](jis/index.md#attachments-přílohy)
1296
1297
 
@@ -1313,6 +1314,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1313
1314
  - Popis tasku
1314
1315
  - Task posila POST requestem aktualizace dat o změněných událostech hned po přijetí z VYMI a uložení do VP databáze na webhooky definované v module config hodnotami `jis.webhooks.eventUpdate.targets.*`
1315
1316
  - Jako fallback při výpadku webhooku se muze dotazat uzivatel na `/v1/jis/events/custom-format`
1317
+ - Tělo POST požadavku má tvar `EventCustomFormat` (viz [openapi-output.yaml](./openapi-output.yaml)) rozšířený o `deleted_timestamp`; trasy jsou snapshot-first z `route_details` z příchozí zprávy, GTFS dotaz (`ropidgtfs_routes`) je jen fallback pro trasy bez `route_details`
1316
1318
 
1317
1319
  - vstupní rabbitmq fronta
1318
1320
  - název: vehicle-positions.jis.updateEventWebhook
@@ -1325,7 +1327,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1325
1327
  - transformace
1326
1328
  - [UpdateEventWebhookTransformation](../src/integration-engine/jis/transformations/UpdateEventWebhookTransformation.ts)
1327
1329
  - data modely
1328
- - RopidGTFSRoutes `ropidgtfs_routes`
1330
+ - RopidGTFSRoutes `ropidgtfs_routes` (fallback dotaz, jen pro trasy bez `route_details` ve vstupní zprávě)
1329
1331
 
1330
1332
  #### _task: FetchJISEventsTask_
1331
1333
 
@@ -1653,3 +1655,4 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1653
1655
  - `type` – filtrování podle typu události (`INCIDENT`, `DISRUPTION`, `SERVICE_CHANGE`)
1654
1656
  - zdrojové tabulky: `jis_events`, `jis_events_ropidgtfs_routes`
1655
1657
  - formát odpovědi: viz schéma `EventCustomFormat` v [openapi-output.yaml](./openapi-output.yaml)
1658
+ - trasy v `informed_entity.routes` jsou snapshot-first (`jis_events_ropidgtfs_routes.route_details`), s GTFS fallbackem (`ropidgtfs_routes`) jen pro starší řádky bez snímku; podrobněji viz [jis/index.md](./jis/index.md#informed_entityroutesroute_details-snímek-gtfs-atributů-trasy)
package/docs/jis/index.md CHANGED
@@ -279,3 +279,40 @@ Pole `attachments` obsahuje dokumenty a odkazy přiložené k události (VYMI `k
279
279
  ### `effects` (pole příčin dopadu)
280
280
 
281
281
  Pole `effects` může obsahovat 1–3 unikátní řetězcové hodnoty. Pouze `effects[0]` se mapuje na standardní GTFS-RT `Alert.effect`; zbývající hodnoty jsou dostupné výhradně v custom-format exportu.
282
+
283
+ ### `informed_entity.routes[].route_details` (snímek GTFS atributů trasy)
284
+
285
+ Vedle kompatibilního identifikátoru `id` může VYMI u každé trasy poslat volitelné pole `route_details`
286
+ (`route_id`, `route_short_name`, `route_long_name` — může být `null`, `route_type`). Jde o snímek GTFS
287
+ atributů trasy v okamžiku, kdy VYMI událost odeslala — je zahrnut i pro trasy, které v aktuálním GTFS
288
+ JŘ už neexistují nebo jsou neaktivní. Pole je v PID vstupním schématu (`JISEventsJsonSchema`) volitelné
289
+ (není v `required` u položky `routes[]`), aby starší VYMI verze bez tohoto pole neselhávaly na validaci —
290
+ je ale u nového VYMI producenta odesíláno vždy.
291
+
292
+ `route_details` se ukládá tak, jak přišlo, do sloupce `jis_events_ropidgtfs_routes.route_details` (JSONB,
293
+ nullable). Čtecí modely (custom-format export `/v1/jis/events/custom-format` a webhook `UpdateEventWebhookTask`)
294
+ jsou **snapshot-first**: pokud je `route_details` u dané trasy vyplněné, použije se přímo bez dotazu do GTFS
295
+ dat. Teprve u starších řádků, které vznikly před zavedením tohoto sloupce a mají `route_details = null`, se
296
+ provede fallback dohledání aktuální GTFS trasy (`ropidgtfs_routes`) podle `id`. Pokud není k dispozici ani
297
+ snímek, ani odpovídající GTFS trasa, je daná trasa z výstupu vynechána (chování shodné s obdobím před
298
+ zavedením snímku, žádná regrese).
299
+
300
+ ### Asymetrie GTFS-RT protobuf (`alerts.pb`) vs. custom-format / webhook výstup
301
+
302
+ `getCurrentIncidents` (zdroj pro `alerts.pb`) používá vůči `ropidgtfs_routes` `required: true` (inner join) —
303
+ událost, jejíž všechny trasy jsou v aktuálním GTFS neznámé nebo neaktivní, je z protobuf feedu úplně
304
+ vynechána; u smíšené události (část tras GTFS zná, část ne) zůstanou v `alerts.pb` jen GTFS-známé trasy.
305
+ Custom-format export a webhook naproti tomu GTFS-neznámé trasy zobrazují (díky `route_details` snímku).
306
+ Tato asymetrie je záměrná — `alerts.pb` konzumují GTFS-RT klienti, kteří GTFS-neznámou trasu stejně neumí
307
+ spárovat s jízdním řádem; custom-format/webhook konzumenti (např. web PID.cz) naopak potřebují zrušené/
308
+ neaktivní linky zobrazit i bez GTFS záznamu.
309
+
310
+ ### Webhook výstup (`UpdateEventWebhookTask`)
311
+
312
+ Kromě uložení do databáze `UpdateEventWebhookTask` po přijetí události z VYMI odešle HTTP POST na cílové
313
+ adresy nakonfigurované v `module.pid.jis.webhooks.eventUpdate.targets.*`. Tělo požadavku má stejný tvar jako
314
+ `EventCustomFormat` (viz [openapi-output.yaml](../openapi-output.yaml)), navíc obsahuje pole
315
+ `deleted_timestamp` (čas smazání události, nebo `null`) — to `/v1/jis/events/custom-format` nevrací a slouží
316
+ konzumentům webhooku k rozpoznání smazaných událostí bez nutnosti dalšího dotazu. Trasy v `informed_entity.routes`
317
+ jsou stejně jako u custom-format výstupu snapshot-first s GTFS fallbackem pro starší řádky bez snímku;
318
+ při výpadku webhooku je fallbackem pro konzumenta dotaz na `/v1/jis/events/custom-format`.
@@ -725,6 +725,43 @@ components:
725
725
  id:
726
726
  type: string
727
727
  description: Unique GTFS identifier of the affected route
728
+ route_details:
729
+ type: object
730
+ nullable: true
731
+ description: >-
732
+ Optional snapshot of the route's GTFS attributes at the time the producer sent
733
+ the event, stored as-is and used to render the route in web outputs (custom-format
734
+ export, webhook) without a live GTFS lookup. Omit or send null for routes without
735
+ a snapshot (legacy producers); such rows fall back to a live GTFS lookup by
736
+ `id` when rendered.
737
+ properties:
738
+ route_id:
739
+ type: string
740
+ maxLength: 50
741
+ route_short_name:
742
+ type: string
743
+ maxLength: 255
744
+ route_long_name:
745
+ type: string
746
+ nullable: true
747
+ maxLength: 255
748
+ route_type:
749
+ type: integer
750
+ example: 0
751
+ enum:
752
+ - 0
753
+ - 1
754
+ - 2
755
+ - 3
756
+ - 4
757
+ - 7
758
+ - 11
759
+ - 1700
760
+ required:
761
+ - route_id
762
+ - route_short_name
763
+ - route_long_name
764
+ - route_type
728
765
  required:
729
766
  - id
730
767
  attachments:
@@ -981,7 +1018,19 @@ components:
981
1018
  "cs": "https://dpp.cz/omezeni-a-mimoradne-udalosti/detail/test-0"
982
1019
  },
983
1020
  "informed_entity": {
984
- "routes": [{ "id": "L24" }, { "id": "L10" }, { "id": "L3" }]
1021
+ "routes": [
1022
+ {
1023
+ "id": "L24",
1024
+ "route_details": {
1025
+ "route_id": "L24",
1026
+ "route_short_name": "24",
1027
+ "route_long_name": "Nádraží Vysočany - Spořilov",
1028
+ "route_type": 0
1029
+ }
1030
+ },
1031
+ { "id": "L10" },
1032
+ { "id": "L3" }
1033
+ ]
985
1034
  },
986
1035
  "attachments": [
987
1036
  {
@@ -4020,16 +4020,23 @@ components:
4020
4020
  id:
4021
4021
  type: string
4022
4022
  example: L13
4023
+ description: Identifier of the route as informed by VYMI
4024
+ route_id:
4025
+ type: string
4026
+ example: L13
4027
+ description: GTFS route_id resolved from the route_details snapshot (or, for legacy rows, from GTFS data)
4023
4028
  route_short_name:
4024
4029
  type: string
4025
4030
  example: "13"
4026
4031
  route_long_name:
4027
4032
  type: string
4028
4033
  example: "Čechovo náměstí - Olšanské hřbitovy"
4034
+ nullable: true
4029
4035
  route_type:
4030
4036
  $ref: "#/components/schemas/RouteType"
4031
4037
  required:
4032
4038
  - id
4039
+ - route_id
4033
4040
  - route_short_name
4034
4041
  - route_type
4035
4042
  - route_long_name
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "5.18.1",
3
+ "version": "5.18.2-dev.2769428000",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -81,7 +81,7 @@
81
81
  "@golemio/core": "^3.0.7-dev.2 || ^3.1.0-dev.2 || ^3.0.0"
82
82
  },
83
83
  "dependencies": {
84
- "@golemio/ovapi-gtfs-realtime-bindings": "1.4.0",
84
+ "@golemio/ovapi-gtfs-realtime-bindings": "1.4.1-dev.2464451735",
85
85
  "@turf/turf": "^6.5.0",
86
86
  "cheap-ruler": "^3.0.2",
87
87
  "csv-parser": "^3.0.0",