@golemio/pid 3.17.1-dev.1889080306 → 3.17.1-dev.1919036985
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js +18 -0
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js.map +1 -1
- package/dist/integration-engine/jis/services/JISEventsDataService.js +3 -1
- package/dist/integration-engine/jis/services/JISEventsDataService.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.d.ts +6 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.js +13 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.js.map +1 -1
- package/docs/openapi-output.yaml +3 -3
- package/package.json +1 -1
|
@@ -75,6 +75,24 @@ let JISEventsRepository = exports.JISEventsRepository = class JISEventsRepositor
|
|
|
75
75
|
*/
|
|
76
76
|
async upsertAll(data, options) {
|
|
77
77
|
try {
|
|
78
|
+
// single-event update – race condition protection
|
|
79
|
+
if (data.length === 1) {
|
|
80
|
+
const incoming = data[0];
|
|
81
|
+
const existing = await this.sequelizeModel.findByPk(incoming.id, {
|
|
82
|
+
transaction: options?.transaction,
|
|
83
|
+
});
|
|
84
|
+
if (!existing || new Date(incoming.updated_timestamp) > new Date(existing.updated_timestamp)) {
|
|
85
|
+
const [record, created] = await this.sequelizeModel.upsert(incoming, {
|
|
86
|
+
transaction: options?.transaction,
|
|
87
|
+
});
|
|
88
|
+
this.logger.info(`${this.constructor.name}.upsertAll: ${created ? "inserted" : "updated"} single JIS event ID=${incoming.id}`);
|
|
89
|
+
return [record];
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.logger.info(`${this.constructor.name}.upsertAll: skipped outdated single JIS event ID=${incoming.id}`);
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
78
96
|
const upserted = await this.sequelizeModel.bulkCreate(data, {
|
|
79
97
|
updateOnDuplicate: this.getUpdateAttributes(),
|
|
80
98
|
transaction: options?.transaction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRepository.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,7 @@ let JISEventsDataService = exports.JISEventsDataService = class JISEventsDataSer
|
|
|
44
44
|
await transaction.commit();
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
|
+
const isSingleUpdate = events.length === 1;
|
|
47
48
|
await this.eventsRepository.upsertAll(events, { transaction });
|
|
48
49
|
await this.eventsRopidGTFSRoutesRepository.upsertAll(eventsRopidGTFSRoutes, { transaction });
|
|
49
50
|
await this.eventsRopidGTFSRoutesRepository.deleteAllLastUpdatedBefore(saveTime, events, {
|
|
@@ -51,7 +52,8 @@ let JISEventsDataService = exports.JISEventsDataService = class JISEventsDataSer
|
|
|
51
52
|
});
|
|
52
53
|
await transaction.commit();
|
|
53
54
|
this.logger.info(`${this.constructor.name}.upsertAll: ${events.length} JIS events and ` +
|
|
54
|
-
`${eventsRopidGTFSRoutes.length} JIS eventsRopidGTFSRoutes were saved`
|
|
55
|
+
`${eventsRopidGTFSRoutes.length} JIS eventsRopidGTFSRoutes were saved ` +
|
|
56
|
+
(isSingleUpdate ? "(single update)" : "(full sync)"));
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsDataService.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/services/JISEventsDataService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAkE;AAClE,6EAA+E;AAC/E,2GAA6G;AAI7G,wEAAqE;AACrE,6EAAwE;AACxE,iEAAwE;AAGjE,IAAM,oBAAoB,kCAA1B,MAAM,oBAAoB;IAC7B,YAEY,gBAAqC,EAErC,+BAAmE,EAC9B,iBAAqC,EAChD,MAAe;QAJzC,qBAAgB,GAAhB,gBAAgB,CAAqB;QAErC,oCAA+B,GAA/B,+BAA+B,CAAoC;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAEjD,aAAa;IACjB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAAC,MAAmB,EAAE,qBAAkD;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,IAAI;YACA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,4DAA4D,CAAC,CAAC;gBACvG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;aAC9B;iBAAM;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7F,MAAM,IAAI,CAAC,+BAA+B,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE;oBACpF,WAAW;iBACd,CAAC,CAAC;gBACH,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,kBAAkB;oBAClE,GAAG,qBAAqB,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"JISEventsDataService.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/services/JISEventsDataService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAkE;AAClE,6EAA+E;AAC/E,2GAA6G;AAI7G,wEAAqE;AACrE,6EAAwE;AACxE,iEAAwE;AAGjE,IAAM,oBAAoB,kCAA1B,MAAM,oBAAoB;IAC7B,YAEY,gBAAqC,EAErC,+BAAmE,EAC9B,iBAAqC,EAChD,MAAe;QAJzC,qBAAgB,GAAhB,gBAAgB,CAAqB;QAErC,oCAA+B,GAA/B,+BAA+B,CAAoC;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAEjD,aAAa;IACjB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAAC,MAAmB,EAAE,qBAAkD;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,IAAI;YACA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,4DAA4D,CAAC,CAAC;gBACvG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;aAC9B;iBAAM;gBACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7F,MAAM,IAAI,CAAC,+BAA+B,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE;oBACpF,WAAW;iBACd,CAAC,CAAC;gBACH,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,kBAAkB;oBAClE,GAAG,qBAAqB,CAAC,MAAM,wCAAwC;oBACvE,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAC3D,CAAC;aACL;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,YAAY,6BAAY;gBAAE,MAAM,GAAG,CAAC;YAC3C,MAAM,IAAI,6BAAY,CAAC,0CAA0C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAClG;IACL,CAAC;CACJ,CAAA;+BAhDY,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,mBAAmB,CAAC,CAAA;IAE7C,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,kCAAkC,CAAC,CAAA;IAE5D,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;IACnC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qCAJC,yCAAmB;QAEJ,uEAAkC;GALtE,oBAAoB,CAgDhC"}
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.d.ts
CHANGED
|
@@ -2,15 +2,19 @@ import { ICommonRunWithMessageDto } from "../../../../../schema-definitions/vehi
|
|
|
2
2
|
import { ILogger } from "@golemio/core/dist/helpers/logger";
|
|
3
3
|
import { ICommonMessageFilter } from "./interfaces/ICommonMessageFilter";
|
|
4
4
|
import { TimestampValidator } from "./TimestampValidator";
|
|
5
|
+
import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
|
|
5
6
|
export declare class BusMessageFilter implements ICommonMessageFilter {
|
|
6
7
|
private logger;
|
|
7
8
|
private timestampValidator;
|
|
8
|
-
|
|
9
|
+
private config;
|
|
10
|
+
private dppTestingBuses;
|
|
11
|
+
constructor(logger: ILogger, timestampValidator: TimestampValidator, config: ISimpleConfig);
|
|
9
12
|
/**
|
|
10
|
-
* Yield messages that are valid for processing (filter out internal bus lines)
|
|
13
|
+
* Yield messages that are valid for processing (filter out internal bus lines and testing buses)
|
|
11
14
|
* - route id is a string of length 3 or more
|
|
12
15
|
* - route id is a number in range of bus and trolleybus lines
|
|
13
16
|
* - route id >= 100 (bus) ∪ [50, 69] (trolleybus)
|
|
14
17
|
*/
|
|
15
18
|
yieldFilteredMessages(messages: ICommonRunWithMessageDto[], timestamp: number): Generator<ICommonRunWithMessageDto>;
|
|
19
|
+
private isTestingBus;
|
|
16
20
|
}
|
|
@@ -21,12 +21,14 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
21
21
|
const TROLLEYBUS_ROUTE_ID_MIN = 50;
|
|
22
22
|
const TROLLEYBUS_ROUTE_ID_MAX = 69;
|
|
23
23
|
let BusMessageFilter = exports.BusMessageFilter = class BusMessageFilter {
|
|
24
|
-
constructor(logger, timestampValidator) {
|
|
24
|
+
constructor(logger, timestampValidator, config) {
|
|
25
25
|
this.logger = logger;
|
|
26
26
|
this.timestampValidator = timestampValidator;
|
|
27
|
+
this.config = config;
|
|
28
|
+
this.dppTestingBuses = this.config.getValue("module.pid.vehicle-positions.dppTestingBuses.*", []);
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
|
-
* Yield messages that are valid for processing (filter out internal bus lines)
|
|
31
|
+
* Yield messages that are valid for processing (filter out internal bus lines and testing buses)
|
|
30
32
|
* - route id is a string of length 3 or more
|
|
31
33
|
* - route id is a number in range of bus and trolleybus lines
|
|
32
34
|
* - route id >= 100 (bus) ∪ [50, 69] (trolleybus)
|
|
@@ -41,6 +43,10 @@ let BusMessageFilter = exports.BusMessageFilter = class BusMessageFilter {
|
|
|
41
43
|
continue;
|
|
42
44
|
}
|
|
43
45
|
if (run.route_id.length > 2) {
|
|
46
|
+
if (this.isTestingBus(message.run.registration_number)) {
|
|
47
|
+
this.logger.info(`Testing bus ${message.run.registration_number} was filterd out`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
44
50
|
yield message;
|
|
45
51
|
continue;
|
|
46
52
|
}
|
|
@@ -53,11 +59,15 @@ let BusMessageFilter = exports.BusMessageFilter = class BusMessageFilter {
|
|
|
53
59
|
yield message;
|
|
54
60
|
}
|
|
55
61
|
}
|
|
62
|
+
isTestingBus(reqNumber) {
|
|
63
|
+
return this.dppTestingBuses.includes(reqNumber);
|
|
64
|
+
}
|
|
56
65
|
};
|
|
57
66
|
exports.BusMessageFilter = BusMessageFilter = __decorate([
|
|
58
67
|
(0, tsyringe_1.injectable)(),
|
|
59
68
|
__param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
|
|
60
69
|
__param(1, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.TimestampValidator)),
|
|
61
|
-
|
|
70
|
+
__param(2, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
|
|
71
|
+
__metadata("design:paramtypes", [Object, TimestampValidator_1.TimestampValidator, Object])
|
|
62
72
|
], BusMessageFilter);
|
|
63
73
|
//# sourceMappingURL=BusMessageFilter.js.map
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BusMessageFilter.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,wEAAqE;AAErE,iEAAwE;AAExE,oEAA8E;AAC9E,6DAA0D;AAC1D,6EAAwE;
|
|
1
|
+
{"version":3,"file":"BusMessageFilter.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/BusMessageFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,wEAAqE;AAErE,iEAAwE;AAExE,oEAA8E;AAC9E,6DAA0D;AAC1D,6EAAwE;AAGxE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAG5B,IAAM,gBAAgB,8BAAtB,MAAM,gBAAgB;IAEzB,YACsC,MAAe,EACI,kBAAsC,EACnD,MAAqB;QAF3B,WAAM,GAAN,MAAM,CAAS;QACI,uBAAkB,GAAlB,kBAAkB,CAAoB;QACnD,WAAM,GAAN,MAAM,CAAe;QAE7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE,EAAE,CAAa,CAAC;IAClH,CAAC;IAED;;;;;OAKG;IACI,CAAC,qBAAqB,CAAC,QAAoC,EAAE,SAAiB;QACjF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACjH,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,IAAI,6BAAY,CACZ,mCAAmC;oBAC/B,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,WAAW,EAAE;oBAC5D,yBAAyB,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EACzF,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,SAAS,EACT,SAAS,EACT,KAAK,CACR,CACJ,CAAC;gBACF,SAAS;aACZ;YACD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;oBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,GAAG,CAAC,mBAAmB,kBAAkB,CAAC,CAAC;oBACnF,SAAS;iBACZ;gBACD,MAAM,OAAO,CAAC;gBACd,SAAS;aACZ;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,uBAAuB,IAAI,OAAO,GAAG,uBAAuB,EAAE;gBACjG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,cAAc,OAAO,6BAA6B,CAAC,CAAC;gBAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,SAAS;aACZ;YAED,MAAM,OAAO,CAAC;SACjB;IACL,CAAC;IAEO,YAAY,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACJ,CAAA;2BAzDY,gBAAgB;IAD5B,IAAA,qBAAU,GAAE;IAIJ,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;IACxB,WAAA,IAAA,iBAAM,EAAC,mCAAgB,CAAC,kBAAkB,CAAC,CAAA;IAC3C,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,YAAY,CAAC,CAAA;6CAD0C,uCAAkB;GAJtF,gBAAgB,CAyD5B"}
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -44,8 +44,8 @@ tags:
|
|
|
44
44
|
|
|
45
45
|
- name: 🕒 Public Departures (v2)
|
|
46
46
|
description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
|
|
47
|
-
- name:
|
|
48
|
-
description:
|
|
47
|
+
- name: ⚠ JIS (v1) - internal
|
|
48
|
+
description: Endpoints for internal use
|
|
49
49
|
|
|
50
50
|
paths:
|
|
51
51
|
/v2/gtfs/services:
|
|
@@ -1745,7 +1745,7 @@ paths:
|
|
|
1745
1745
|
/v1/jis/events/custom-format:
|
|
1746
1746
|
get:
|
|
1747
1747
|
tags:
|
|
1748
|
-
-
|
|
1748
|
+
- ⚠ JIS (v1) - internal
|
|
1749
1749
|
summary: Get all published events in custom format for external use
|
|
1750
1750
|
parameters:
|
|
1751
1751
|
- name: displayPeriodStart
|