@golemio/pid 2.13.7-dev.1315673337 → 2.13.7-dev.1317416608
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/ropid-gtfs/RopidGTFSStopsModel.d.ts +2 -0
- package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js +34 -3
- package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js +15 -7
- package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js +2 -0
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +1 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.d.ts +3 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js +13 -2
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js.map +1 -1
- package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js +2 -2
- package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js.map +1 -1
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.d.ts +1 -1
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js +21 -6
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js.map +1 -1
- package/docs/openapi-output.yaml +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IStopDto } from "../../schema-definitions/ropid-gtfs/interfaces/IStopDto";
|
|
1
2
|
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
|
|
2
3
|
import { IValidator } from "@golemio/core/dist/shared/golemio-validator";
|
|
3
4
|
import Sequelize from "@golemio/core/dist/shared/sequelize";
|
|
@@ -13,4 +14,5 @@ export declare class RopidGTFSStopsModel extends PostgresModel implements IModel
|
|
|
13
14
|
/** Type/Strategy of saving the data */
|
|
14
15
|
protected savingType: "insertOnly" | "insertOrUpdate";
|
|
15
16
|
constructor();
|
|
17
|
+
getAll: () => Promise<IStopDto[]>;
|
|
16
18
|
}
|
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
2
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
21
|
exports.RopidGTFSStopsModel = void 0;
|
|
4
22
|
const const_1 = require("../../schema-definitions/const");
|
|
5
23
|
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
|
|
6
24
|
const StopDto_1 = require("../../schema-definitions/ropid-gtfs/models/StopDto");
|
|
7
25
|
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
26
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
8
27
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
9
|
-
|
|
28
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
29
|
+
let RopidGTFSStopsModel = exports.RopidGTFSStopsModel = class RopidGTFSStopsModel extends integration_engine_1.PostgresModel {
|
|
10
30
|
constructor() {
|
|
11
31
|
super(ropid_gtfs_1.RopidGTFS.stops.name + "Model", {
|
|
12
32
|
outputSequelizeAttributes: ropid_gtfs_1.RopidGTFS.stops.outputSequelizeAttributes,
|
|
@@ -14,7 +34,18 @@ class RopidGTFSStopsModel extends integration_engine_1.PostgresModel {
|
|
|
14
34
|
pgSchema: const_1.PG_SCHEMA,
|
|
15
35
|
savingType: "insertOnly",
|
|
16
36
|
}, new golemio_validator_1.JSONSchemaValidator(ropid_gtfs_1.RopidGTFS.stops.name + "ModelValidator", StopDto_1.StopDto.jsonSchema));
|
|
37
|
+
this.getAll = () => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
try {
|
|
39
|
+
return this.sequelizeModel.findAll();
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
throw new golemio_errors_1.GeneralError("Database error", "RopidGTFSStopsModel", err, 500);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
17
45
|
}
|
|
18
|
-
}
|
|
19
|
-
exports.RopidGTFSStopsModel = RopidGTFSStopsModel
|
|
46
|
+
};
|
|
47
|
+
exports.RopidGTFSStopsModel = RopidGTFSStopsModel = __decorate([
|
|
48
|
+
(0, tsyringe_1.injectable)(),
|
|
49
|
+
__metadata("design:paramtypes", [])
|
|
50
|
+
], RopidGTFSStopsModel);
|
|
20
51
|
//# sourceMappingURL=RopidGTFSStopsModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGTFSStopsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSStopsModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RopidGTFSStopsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSStopsModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,oEAA4C;AAE5C,gFAAyD;AACzD,8EAA8E;AAC9E,6EAAwE;AACxE,mFAA8F;AAE9F,iEAAgE;AAEzD,IAAM,mBAAmB,iCAAzB,MAAM,mBAAoB,SAAQ,kCAAa;IAYlD;QACI,KAAK,CACD,sBAAS,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,EAC9B;YACI,yBAAyB,EAAE,sBAAS,CAAC,KAAK,CAAC,yBAAyB;YACpE,WAAW,EAAE,sBAAS,CAAC,KAAK,CAAC,WAAW;YACxC,QAAQ,EAAE,iBAAS;YACnB,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,sBAAS,CAAC,KAAK,CAAC,IAAI,GAAG,gBAAgB,EAAE,iBAAO,CAAC,UAAU,CAAC,CACvF,CAAC;QAGC,WAAM,GAAG,GAA8B,EAAE;YAC5C,IAAI;gBACA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;aACxC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aAC7E;QACL,CAAC,CAAA,CAAC;IARF,CAAC;CASJ,CAAA;8BAhCY,mBAAmB;IAD/B,IAAA,qBAAU,GAAE;;GACA,mBAAmB,CAgC/B"}
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js
CHANGED
|
@@ -54,13 +54,21 @@ let PublicGtfsDepartureRepository = exports.PublicGtfsDepartureRepository = Publ
|
|
|
54
54
|
const pipeline = this.connection.pipeline();
|
|
55
55
|
// Automatically remove departures that are older than 3 hours to keep the cache clean
|
|
56
56
|
pipeline.zremrangebyscore(sortedSetKey, "-inf", new Date().getTime() / 1000 - 3 * 3600);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
pipeline.
|
|
57
|
+
if (departures.length === 0) {
|
|
58
|
+
// If stop already has an empty object it will just update the empty objects score/time
|
|
59
|
+
pipeline.zadd(sortedSetKey, new Date().getTime() / 1000, "{}");
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// remove empty departures from stop
|
|
63
|
+
pipeline.zrem(sortedSetKey, "{}");
|
|
64
|
+
const firstDepartureScore = new Date(departures[0].departure_datetime).getTime() / 1000;
|
|
65
|
+
const lastDepartureScore = new Date(departures[departures.length - 1].departure_datetime).getTime() / 1000;
|
|
66
|
+
// Remove departures that are in the same time range
|
|
67
|
+
pipeline.zremrangebyscore(sortedSetKey, firstDepartureScore, lastDepartureScore);
|
|
68
|
+
for (const departure of departures) {
|
|
69
|
+
const departureScore = new Date(departure.departure_datetime).getTime() / 1000;
|
|
70
|
+
pipeline.zadd(sortedSetKey, departureScore, JSON.stringify(departure));
|
|
71
|
+
}
|
|
64
72
|
}
|
|
65
73
|
pipeline.expire(sortedSetKey, intervalParams.intervalToHours * 3600);
|
|
66
74
|
yield pipeline.exec();
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicGtfsDepartureRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,iFAAgF;AAEhF,uIAA0G;AAC1G,wFAAqF;AACrF,6EAA+G;AAC/G,mFAAkF;AAClF,iEAAgE;AAGzD,IAAM,6BAA6B,6EAAnC,MAAM,6BAA8B,SAAQ,uBAAU;IAGzD;QACI,KAAK,CACD,yBAAyB,EACzB;YACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;YAC9B,oBAAoB,EAAE,IAAI,CAAC,SAAS;YACpC,wBAAwB,EAAE,KAAK;YAC/B,MAAM,EAAE,+BAA6B,CAAC,gBAAgB;SACzD,EACD,IAAI,uCAAmB,CAAC,wCAAwC,EAAE,2DAA4B,CAAC,CAClG,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACU,wBAAwB,CACjC,UAA0C,EAC1C,MAAc,EACd,cAAuD;;YAEvD,IAAI;gBACA,MAAM,IAAI,CAAC,SAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC9C;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,gCAAe,CAAC,mCAAmC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC9F;YAED,IAAI;gBACA,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PublicGtfsDepartureRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ const RopidGtfsContainerToken_1 = require("./RopidGtfsContainerToken");
|
|
|
22
22
|
const DeparturesPresetsDatasource_1 = require("../workers/presets/data-access/DeparturesPresetsDatasource");
|
|
23
23
|
const CheckForNewDeparturesPresetsTask_1 = require("../workers/presets/tasks/CheckForNewDeparturesPresetsTask");
|
|
24
24
|
const DownloadDeparturesPresetsTask_1 = require("../workers/presets/tasks/DownloadDeparturesPresetsTask");
|
|
25
|
+
const RopidGTFSStopsModel_1 = require("../RopidGTFSStopsModel");
|
|
25
26
|
//#region Initialization
|
|
26
27
|
const RopidGtfsContainer = Di_1.PidContainer.createChildContainer();
|
|
27
28
|
exports.RopidGtfsContainer = RopidGtfsContainer;
|
|
@@ -35,6 +36,7 @@ RopidGtfsContainer.registerSingleton(RopidGtfsContainerToken_1.RopidGtfsContaine
|
|
|
35
36
|
RopidGtfsContainer.register(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsMetadataRepository, RopidGtfsMetadataRepository_1.RopidGtfsMetadataRepository);
|
|
36
37
|
RopidGtfsContainer.register(RopidGtfsContainerToken_1.RopidGtfsContainerToken.DepartureRepository, precomputed_1.DeparturesRepository);
|
|
37
38
|
RopidGtfsContainer.register(RopidGtfsContainerToken_1.RopidGtfsContainerToken.PublicGtfsDepartureRepository, PublicGtfsDepartureRepository_1.PublicGtfsDepartureRepository);
|
|
39
|
+
RopidGtfsContainer.register(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGTFSStopsModel, RopidGTFSStopsModel_1.RopidGTFSStopsModel);
|
|
38
40
|
//#endregion
|
|
39
41
|
//#region Transformations
|
|
40
42
|
RopidGtfsContainer.registerSingleton(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGTFSTransformation, RopidGTFSTransformation_1.RopidGTFSTransformation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,uEAA4C;AAC5C,qFAA8F;AAC9F,iEAAoF;AACpF,wDAAqD;AACrD,gFAA6E;AAC7E,4EAAyE;AACzE,8FAA2F;AAC3F,sGAAmG;AACnG,8FAA2F;AAC3F,4DAAkE;AAClE,6EAA0E;AAC1E,8GAA2G;AAC3G,wFAAqF;AACrF,yHAAsH;AACtH,yGAAsG;AACtG,2FAAwF;AACxF,uEAAoE;AACpE,4GAAyG;AACzG,gHAA6G;AAC7G,0GAAuG;
|
|
1
|
+
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,uEAA4C;AAC5C,qFAA8F;AAC9F,iEAAoF;AACpF,wDAAqD;AACrD,gFAA6E;AAC7E,4EAAyE;AACzE,8FAA2F;AAC3F,sGAAmG;AACnG,8FAA2F;AAC3F,4DAAkE;AAClE,6EAA0E;AAC1E,8GAA2G;AAC3G,wFAAqF;AACrF,yHAAsH;AACtH,yGAAsG;AACtG,2FAAwF;AACxF,uEAAoE;AACpE,4GAAyG;AACzG,gHAA6G;AAC7G,0GAAuG;AACvG,gEAA6D;AAE7D,wBAAwB;AACxB,MAAM,kBAAkB,GAAwB,iBAAY,CAAC,oBAAoB,EAAE,CAAC;AA8C3E,gDAAkB;AA7C3B,YAAY;AAEZ,qBAAqB;AACrB,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,yBAAyB,EAAE,qDAAyB,CAAC,CAAC;AACnH,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,2BAA2B,EAAE,yDAA2B,CAAC,CAAC;AACvH,YAAY;AAEZ,sBAAsB;AACtB,kBAAkB,CAAC,iBAAiB,CAChC,iDAAuB,CAAC,yBAAyB,EACjD,qDAAyB,CAC5B,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,mBAAmB,EAAE,yCAAmB,CAAC,CAAC;AACtF,kBAAkB,CAAC,QAAQ,CAAC,iDAAuB,CAAC,2BAA2B,EAAE,yDAA2B,CAAC,CAAC;AAC9G,kBAAkB,CAAC,QAAQ,CAAC,iDAAuB,CAAC,mBAAmB,EAAE,kCAAoB,CAAC,CAAC;AAC/F,kBAAkB,CAAC,QAAQ,CAAC,iDAAuB,CAAC,6BAA6B,EAAE,6DAA6B,CAAC,CAAC;AAClH,kBAAkB,CAAC,QAAQ,CAAC,iDAAuB,CAAC,mBAAmB,EAAE,yCAAmB,CAAC,CAAC;AAC9F,YAAY;AAEZ,yBAAyB;AACzB,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,uBAAuB,EAAE,iDAAuB,CAAC,CAAC;AAC/G,kBAAkB,CAAC,iBAAiB,CAChC,iDAAuB,CAAC,kCAAkC,EAC1D,uEAAkC,CACrC,CAAC;AACF,YAAY;AAEZ,gBAAgB;AAChB,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,eAAe,EAAE,iCAAe,CAAC,CAAC;AAC/F,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,uBAAuB,EAAE,iDAAuB,CAAC;KACzG,QAAQ,CAAC,iDAAuB,CAAC,gBAAgB,EAAE,mCAAgB,EAAE,EAAE,SAAS,EAAE,oBAAS,CAAC,SAAS,EAAE,CAAC;KACxG,gBAAgB,CAAC,iDAAuB,CAAC,kBAAkB,EAAE,IAAI,2BAAkB,CAAC,sBAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1G,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,sBAAsB,EAAE,+CAAsB,CAAC,CAAC;AAC7G,YAAY;AAEZ,eAAe;AACf,kBAAkB,CAAC,iBAAiB,CAChC,iDAAuB,CAAC,mCAAmC,EAC3D,yEAAmC,CACtC,CAAC;AACF,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,6BAA6B,EAAE,6DAA6B,CAAC,CAAC;AAC3H,kBAAkB,CAAC,iBAAiB,CAAC,iDAAuB,CAAC,gCAAgC,EAAE,mEAAgC,CAAC,CAAC"}
|
|
@@ -19,6 +19,7 @@ const RopidGtfsContainerToken = {
|
|
|
19
19
|
DeparturesPresetsDataSource: Symbol(),
|
|
20
20
|
CheckForNewDeparturesPresetsTask: Symbol(),
|
|
21
21
|
DownloadDeparturesPresetsTask: Symbol(),
|
|
22
|
+
RopidGTFSStopsModel: Symbol(),
|
|
22
23
|
};
|
|
23
24
|
exports.RopidGtfsContainerToken = RopidGtfsContainerToken;
|
|
24
25
|
//# sourceMappingURL=RopidGtfsContainerToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGtfsContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,uBAAuB,GAAG;IAC5B,yBAAyB,EAAE,MAAM,EAAE;IACnC,2BAA2B,EAAE,MAAM,EAAE;IACrC,uBAAuB,EAAE,MAAM,EAAE;IACjC,yBAAyB,EAAE,MAAM,EAAE;IACnC,uBAAuB,EAAE,MAAM,EAAE;IACjC,kCAAkC,EAAE,MAAM,EAAE;IAC5C,gBAAgB,EAAE,MAAM,EAAE;IAC1B,kBAAkB,EAAE,MAAM,EAAE;IAC5B,mBAAmB,EAAE,MAAM,EAAE;IAC7B,mBAAmB,EAAE,MAAM,EAAE;IAC7B,6BAA6B,EAAE,MAAM,EAAE;IACvC,sBAAsB,EAAE,MAAM,EAAE;IAChC,eAAe,EAAE,MAAM,EAAE;IACzB,mCAAmC,EAAE,MAAM,EAAE;IAC7C,2BAA2B,EAAE,MAAM,EAAE;IACrC,gCAAgC,EAAE,MAAM,EAAE;IAC1C,6BAA6B,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"RopidGtfsContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,uBAAuB,GAAG;IAC5B,yBAAyB,EAAE,MAAM,EAAE;IACnC,2BAA2B,EAAE,MAAM,EAAE;IACrC,uBAAuB,EAAE,MAAM,EAAE;IACjC,yBAAyB,EAAE,MAAM,EAAE;IACnC,uBAAuB,EAAE,MAAM,EAAE;IACjC,kCAAkC,EAAE,MAAM,EAAE;IAC5C,gBAAgB,EAAE,MAAM,EAAE;IAC1B,kBAAkB,EAAE,MAAM,EAAE;IAC5B,mBAAmB,EAAE,MAAM,EAAE;IAC7B,mBAAmB,EAAE,MAAM,EAAE;IAC7B,6BAA6B,EAAE,MAAM,EAAE;IACvC,sBAAsB,EAAE,MAAM,EAAE;IAChC,eAAe,EAAE,MAAM,EAAE;IACzB,mCAAmC,EAAE,MAAM,EAAE;IAC7C,2BAA2B,EAAE,MAAM,EAAE;IACrC,gCAAgC,EAAE,MAAM,EAAE;IAC1C,6BAA6B,EAAE,MAAM,EAAE;IACvC,mBAAmB,EAAE,MAAM,EAAE;CAChC,CAAC;AAEO,0DAAuB"}
|
|
@@ -5,16 +5,18 @@ import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleC
|
|
|
5
5
|
import { AbstractTask } from "@golemio/core/dist/integration-engine/workers";
|
|
6
6
|
import { IRefreshPublicDepartureParams } from "./interfaces/IRefreshPublicDepartureParams";
|
|
7
7
|
import { RefreshPublicDepartureValidationSchema } from "./schema/RefreshPublicDepartureSchema";
|
|
8
|
+
import { RopidGTFSStopsModel } from "../../../RopidGTFSStopsModel";
|
|
8
9
|
export declare class RefreshPublicGtfsDepartureCacheTask extends AbstractTask<IRefreshPublicDepartureParams> {
|
|
9
10
|
private departureTransformation;
|
|
10
11
|
private departureRepository;
|
|
11
12
|
private publicDepartureRepository;
|
|
12
13
|
private config;
|
|
14
|
+
private stopsModel;
|
|
13
15
|
readonly queueName = "refreshPublicGtfsDepartureCache";
|
|
14
16
|
readonly queueTtl: number;
|
|
15
17
|
readonly schema: typeof RefreshPublicDepartureValidationSchema;
|
|
16
18
|
private readonly departurePageSize;
|
|
17
|
-
constructor(departureTransformation: PublicDepartureCacheTransformation, departureRepository: DeparturesRepository, publicDepartureRepository: PublicGtfsDepartureRepository, config: ISimpleConfig);
|
|
19
|
+
constructor(departureTransformation: PublicDepartureCacheTransformation, departureRepository: DeparturesRepository, publicDepartureRepository: PublicGtfsDepartureRepository, config: ISimpleConfig, stopsModel: RopidGTFSStopsModel);
|
|
18
20
|
protected execute(params: IRefreshPublicDepartureParams): Promise<void>;
|
|
19
21
|
private getIntervalParamsWithDefault;
|
|
20
22
|
private getDeparturesByStopId;
|
|
@@ -32,14 +32,16 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
32
32
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
33
33
|
const constants_1 = require("../constants");
|
|
34
34
|
const RefreshPublicDepartureSchema_1 = require("./schema/RefreshPublicDepartureSchema");
|
|
35
|
+
const RopidGTFSStopsModel_1 = require("../../../RopidGTFSStopsModel");
|
|
35
36
|
const DEFAULT_PAGE_SIZE = 50000;
|
|
36
37
|
let RefreshPublicGtfsDepartureCacheTask = exports.RefreshPublicGtfsDepartureCacheTask = class RefreshPublicGtfsDepartureCacheTask extends workers_1.AbstractTask {
|
|
37
|
-
constructor(departureTransformation, departureRepository, publicDepartureRepository, config) {
|
|
38
|
+
constructor(departureTransformation, departureRepository, publicDepartureRepository, config, stopsModel) {
|
|
38
39
|
super(constants_1.TIMETABLE_WORKER_NAME);
|
|
39
40
|
this.departureTransformation = departureTransformation;
|
|
40
41
|
this.departureRepository = departureRepository;
|
|
41
42
|
this.publicDepartureRepository = publicDepartureRepository;
|
|
42
43
|
this.config = config;
|
|
44
|
+
this.stopsModel = stopsModel;
|
|
43
45
|
this.queueName = "refreshPublicGtfsDepartureCache";
|
|
44
46
|
this.queueTtl = 59 * 60 * 1000; // 59 minutes
|
|
45
47
|
this.schema = RefreshPublicDepartureSchema_1.RefreshPublicDepartureValidationSchema;
|
|
@@ -51,10 +53,12 @@ let RefreshPublicGtfsDepartureCacheTask = exports.RefreshPublicGtfsDepartureCach
|
|
|
51
53
|
const intervalParams = this.getIntervalParamsWithDefault(params);
|
|
52
54
|
const numberOfDepartures = yield this.departureRepository.countDeparturesForPublicCache(intervalParams);
|
|
53
55
|
const pages = Math.ceil(numberOfDepartures / this.departurePageSize);
|
|
56
|
+
const stopIdsInDepartures = new Set();
|
|
54
57
|
for (let page = 0; page < pages; page++) {
|
|
55
58
|
const departuresForCache = yield this.departureRepository.getDepaturesForPublicCache(page, this.departurePageSize, intervalParams);
|
|
56
59
|
const departuresByStopIdDict = this.getDeparturesByStopId(departuresForCache);
|
|
57
60
|
for (const [stopId, departures] of departuresByStopIdDict.entries()) {
|
|
61
|
+
stopIdsInDepartures.add(stopId);
|
|
58
62
|
try {
|
|
59
63
|
const departuresDto = this.departureTransformation.transformArray(departures);
|
|
60
64
|
yield this.publicDepartureRepository.replaceDeparturesForStop(departuresDto, stopId, intervalParams);
|
|
@@ -67,6 +71,12 @@ let RefreshPublicGtfsDepartureCacheTask = exports.RefreshPublicGtfsDepartureCach
|
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
}
|
|
74
|
+
const allStops = yield this.stopsModel.getAll();
|
|
75
|
+
for (const { stop_id: id } of allStops) {
|
|
76
|
+
if (!stopIdsInDepartures.has(id)) {
|
|
77
|
+
yield this.publicDepartureRepository.replaceDeparturesForStop([], id, intervalParams);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
70
80
|
});
|
|
71
81
|
}
|
|
72
82
|
getIntervalParamsWithDefault(params) {
|
|
@@ -95,8 +105,9 @@ exports.RefreshPublicGtfsDepartureCacheTask = RefreshPublicGtfsDepartureCacheTas
|
|
|
95
105
|
__param(1, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.DepartureRepository)),
|
|
96
106
|
__param(2, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.PublicGtfsDepartureRepository)),
|
|
97
107
|
__param(3, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
|
|
108
|
+
__param(4, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGTFSStopsModel)),
|
|
98
109
|
__metadata("design:paramtypes", [PublicDepartureCacheTransformation_1.PublicDepartureCacheTransformation,
|
|
99
110
|
precomputed_1.DeparturesRepository,
|
|
100
|
-
PublicGtfsDepartureRepository_1.PublicGtfsDepartureRepository, Object])
|
|
111
|
+
PublicGtfsDepartureRepository_1.PublicGtfsDepartureRepository, Object, RopidGTFSStopsModel_1.RopidGTFSStopsModel])
|
|
101
112
|
], RefreshPublicGtfsDepartureCacheTask);
|
|
102
113
|
//# sourceMappingURL=RefreshPublicGtfsDepartureCacheTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshPublicGtfsDepartureCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4GAA+G;AAC/G,kEAA8E;AAE9E,kFAAqF;AACrF,oHAAuH;AAEvH,wEAAqE;AACrE,2EAA6E;AAC7E,6EAA8F;AAC9F,iEAAwE;AACxE,4CAAqD;AAErD,wFAA+F;
|
|
1
|
+
{"version":3,"file":"RefreshPublicGtfsDepartureCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4GAA+G;AAC/G,kEAA8E;AAE9E,kFAAqF;AACrF,oHAAuH;AAEvH,wEAAqE;AACrE,2EAA6E;AAC7E,6EAA8F;AAC9F,iEAAwE;AACxE,4CAAqD;AAErD,wFAA+F;AAC/F,sEAAyE;AAEzE,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAGzB,IAAM,mCAAmC,iDAAzC,MAAM,mCAAoC,SAAQ,sBAA2C;IAMhG,YAEI,uBAAmE,EACd,mBAAiD,EAEtG,yBAAgE,EAChC,MAA6B,EACR,UAAuC;QAE5F,KAAK,CAAC,iCAAqB,CAAC,CAAC;QAPrB,4BAAuB,GAAvB,uBAAuB,CAAoC;QACN,wBAAmB,GAAnB,mBAAmB,CAAsB;QAE9F,8BAAyB,GAAzB,yBAAyB,CAA+B;QACxB,WAAM,GAAN,MAAM,CAAe;QACA,eAAU,GAAV,UAAU,CAAqB;QAZhF,cAAS,GAAG,iCAAiC,CAAC;QAC9C,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QACxC,WAAM,GAAG,qEAAsC,CAAC;QAc5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAC1C,oFAAoF,EACpF,iBAAiB,CAAC,QAAQ,EAAE,CAC/B,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;IAEe,OAAO,CAAC,MAAqC;;YACzD,MAAM,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;YACxG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAErE,MAAM,mBAAmB,GAAgB,IAAI,GAAG,EAAE,CAAC;YACnD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAChF,IAAI,EACJ,IAAI,CAAC,iBAAiB,EACtB,cAAc,CACjB,CAAC;gBACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;gBAE9E,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,sBAAsB,CAAC,OAAO,EAAE,EAAE;oBACjE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI;wBACA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;wBAC9E,MAAM,IAAI,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;qBACxG;oBAAC,OAAO,GAAG,EAAE;wBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;4BACrC,MAAM,GAAG,CAAC;yBACb;wBAED,MAAM,IAAI,6BAAY,CAAC,+CAA+C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;qBACvG;iBACJ;aACJ;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAEhD,KAAK,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE;gBACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAC9B,MAAM,IAAI,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;iBACzF;aACJ;QACL,CAAC;KAAA;IAEO,4BAA4B,CAAC,MAAqC;;QACtE,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACjD,2FAA2F,EAC3F,IAAI,CACP,CAAC;QAEF,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAC/C,yFAAyF,EACzF,GAAG,CACN,CAAC;QAEF,OAAO;YACH,iBAAiB,EAAE,MAAA,MAAM,CAAC,iBAAiB,mCAAI,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACxF,eAAe,EAAE,MAAA,MAAM,CAAC,eAAe,mCAAI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;SACrF,CAAC;IACN,CAAC;IAEO,qBAAqB,CAAC,UAAiC;QAC3D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAiC,CAAC;QACpE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAChC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC5C,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACjD;YAED,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9D;QAED,OAAO,kBAAkB,CAAC;IAC9B,CAAC;CACJ,CAAA;8CA1FY,mCAAmC;IAD/C,IAAA,qBAAU,GAAE;IAQJ,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,kCAAkC,CAAC,CAAA;IAElE,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,mBAAmB,CAAC,CAAA;IACnD,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,6BAA6B,CAAC,CAAA;IAE7D,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,YAAY,CAAC,CAAA;IAC9B,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,mBAAmB,CAAC,CAAA;qCALnB,uEAAkC;QACe,kCAAoB;QAEnE,6DAA6B,UAES,yCAAmB;GAbvF,mCAAmC,CA0F/C"}
|
|
@@ -21,8 +21,8 @@ class PublicDepartureBoardsController {
|
|
|
21
21
|
const facade = Di_1.OgPublicContainer.resolve(OgModuleToken_1.OgModuleToken.DepartureBoardFacade);
|
|
22
22
|
const params = this.parseDepartureParams(req.query);
|
|
23
23
|
const result = yield facade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter);
|
|
24
|
-
if (result
|
|
25
|
-
res.status(404).
|
|
24
|
+
if (result === null) {
|
|
25
|
+
res.status(404).send([]);
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
28
|
res.json(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v1/PublicDepartureBoardsController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAsD;AACtD,2DAA6D;AAK7D,+FAA6F;AAE7F,MAAa,+BAA+B;IACxC;QAEO,WAAM,GAAmB,CAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,IAAA,gCAAe,EAAC,wCAAwC,CAAC,CAAC;YAEvE,IAAI;gBACA,MAAM,MAAM,GAAG,sBAAiB,CAAC,OAAO,CAAuB,6BAAa,CAAC,oBAAoB,CAAC,CAAC;gBACnG,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAE9G,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v1/PublicDepartureBoardsController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAsD;AACtD,2DAA6D;AAK7D,+FAA6F;AAE7F,MAAa,+BAA+B;IACxC;QAEO,WAAM,GAAmB,CAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,IAAA,gCAAe,EAAC,wCAAwC,CAAC,CAAC;YAEvE,IAAI;gBACA,MAAM,MAAM,GAAG,sBAAiB,CAAC,OAAO,CAAuB,6BAAa,CAAC,oBAAoB,CAAC,CAAC;gBACnG,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAE9G,IAAI,MAAM,KAAK,IAAI,EAAE;oBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzB,OAAO;iBACV;gBACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpB;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;oBAAS;gBACN,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,EAAE,CAAC;aACf;QACL,CAAC,CAAA,CAAC;IApBa,CAAC;IAsBR,oBAAoB,CAAC,KAAe;QACxC,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,OAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC;YACpH,eAAe,EAAE,KAAK,CAAC,eAAe;gBAClC,CAAC,CAAC,KAAK,CAAC,eAAe,YAAY,KAAK;oBACpC,CAAC,CAAE,KAAK,CAAC,eAA4B;oBACrC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAyB,CAAC;gBACvC,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAsB,CAAC,CAAC,CAAC,CAAC,EAAE;SACjF,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,gBAA0B;QAC3C,IAAI,MAAM,GAAsC,IAAI,GAAG,EAAE,CAAC;QAE1D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,GAAa,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;aACjC,CAAC,CAAC;SACN;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AApDD,0EAoDC"}
|
|
@@ -9,7 +9,7 @@ export declare class DepartureBoardFacade {
|
|
|
9
9
|
private readonly descriptorRepository;
|
|
10
10
|
private readonly transformation;
|
|
11
11
|
constructor(departureRepository: IGtfsDepartureRepository, tripRepository: IVehiclePositionsRepository, descriptorRepository: VehicleDescriptorCachedRepository);
|
|
12
|
-
getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number): Promise<PublicApiDepartureBoardGroup[]>;
|
|
12
|
+
getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number): Promise<PublicApiDepartureBoardGroup[] | null>;
|
|
13
13
|
private handleStopGroupDepartures;
|
|
14
14
|
private duplicateDeparturesWithDifferentVehicleIds;
|
|
15
15
|
private sortStopGroupsByPriority;
|
|
@@ -23,12 +23,9 @@ class DepartureBoardFacade {
|
|
|
23
23
|
}
|
|
24
24
|
getAll(stopIds, limit, routeShortNames, minutesAfter) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
let output
|
|
26
|
+
let output;
|
|
27
27
|
const sortedStopGroups = this.sortStopGroupsByPriority(stopIds);
|
|
28
|
-
const promises = sortedStopGroups.map((stopGroup) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
const group = yield this.handleStopGroupDepartures(stopGroup, limit, routeShortNames, minutesAfter);
|
|
30
|
-
return group;
|
|
31
|
-
}));
|
|
28
|
+
const promises = sortedStopGroups.map((stopGroup) => __awaiter(this, void 0, void 0, function* () { return yield this.handleStopGroupDepartures(stopGroup, limit, routeShortNames, minutesAfter); }));
|
|
32
29
|
try {
|
|
33
30
|
output = yield Promise.all(promises);
|
|
34
31
|
}
|
|
@@ -38,7 +35,19 @@ class DepartureBoardFacade {
|
|
|
38
35
|
}
|
|
39
36
|
throw new golemio_errors_1.GeneralError("Error while retrieving cached data", this.constructor.name, err, 500);
|
|
40
37
|
}
|
|
41
|
-
|
|
38
|
+
if (output.every((value) => value === null)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return output.map((value) => {
|
|
43
|
+
if (value === null) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
42
51
|
});
|
|
43
52
|
}
|
|
44
53
|
handleStopGroupDepartures(stopGroup, limit, routeShortNames, minutesAfter) {
|
|
@@ -48,12 +57,18 @@ class DepartureBoardFacade {
|
|
|
48
57
|
const spanDepartures = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.getPublicDepartureCache`);
|
|
49
58
|
const departures = yield this.departureRepository.getPublicGtfsDepartureCache(stopGroup.stopIds, minutesAfter);
|
|
50
59
|
spanDepartures === null || spanDepartures === void 0 ? void 0 : spanDepartures.end();
|
|
60
|
+
if (departures.length === 0) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
51
63
|
const spanPositions = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.getAllVehiclePositions`);
|
|
52
64
|
const positionsByTrip = yield this.tripRepository.getAllVehiclePositionsForMultipleTrips(departures.map((departure) => departure.trip_id));
|
|
53
65
|
spanPositions === null || spanPositions === void 0 ? void 0 : spanPositions.end();
|
|
54
66
|
const spanTransform = (0, trace_provider_1.createChildSpan)(`Departures.${stopGroup.priority}.transformDepartures`);
|
|
55
67
|
try {
|
|
56
68
|
for (const departure of departures) {
|
|
69
|
+
if (Object.keys(departure).length === 0) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
57
72
|
const positions = (_a = positionsByTrip.get(departure.trip_id)) !== null && _a !== void 0 ? _a : [];
|
|
58
73
|
const duplicatedDepartures = yield this.duplicateDeparturesWithDifferentVehicleIds(departure, positions);
|
|
59
74
|
outputGroup = outputGroup.concat(duplicatedDepartures);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,6EAA8F;AAC9F,oGAAiG;AACjG,+FAA6F;AAE7F,4EAAyE;AAEzE,MAAa,oBAAoB;IAG7B,YACqB,mBAA6C,EAC7C,cAA2C,EAC3C,oBAAuD;QAFvD,wBAAmB,GAAnB,mBAAmB,CAA0B;QAC7C,mBAAc,GAAd,cAAc,CAA6B;QAC3C,yBAAoB,GAApB,oBAAoB,CAAmC;QAExE,IAAI,CAAC,cAAc,GAAG,IAAI,6DAA6B,EAAE,CAAC;IAC9D,CAAC;IAEY,MAAM,CACf,OAA0C,EAC1C,KAAa,EACb,eAAgC,EAChC,YAAoB;;YAEpB,IAAI,
|
|
1
|
+
{"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"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"}
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -1352,7 +1352,7 @@ paths:
|
|
|
1352
1352
|
401:
|
|
1353
1353
|
$ref: "#/components/responses/UnauthorizedError"
|
|
1354
1354
|
404:
|
|
1355
|
-
description: Not found - no
|
|
1355
|
+
description: Not found - no stops found for the given query parameters
|
|
1356
1356
|
content:
|
|
1357
1357
|
application/json:
|
|
1358
1358
|
schema:
|