@golemio/pid
Version:
Golemio PID Module
28 lines • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AlertsGenerator = void 0;
const ovapi_gtfs_realtime_bindings_1 = require("@golemio/ovapi-gtfs-realtime-bindings");
const AlertsTransformation_1 = require("../transformations/AlertsTransformation");
class AlertsGenerator {
constructor(gtfsRtRedisRepository, vymiEventsRepository, vymiRoutesRepository) {
this.gtfsRtRedisRepository = gtfsRtRedisRepository;
this.vymiEventsRepository = vymiEventsRepository;
this.alertsTransformation = new AlertsTransformation_1.AlertsTransformation(vymiRoutesRepository);
}
async generateAlerts(feedHeader) {
const alertsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
const alertEntities = await this.vymiEventsRepository.getCurrentAlerts(feedHeader.timestamp ? new Date(feedHeader.timestamp * 1000) : new Date());
const transformedAlerts = await this.alertsTransformation.transform(alertEntities);
for (const transformedEntity of transformedAlerts) {
const feedEntity = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedEntity.fromObject(transformedEntity);
alertsMessage.entity.push(feedEntity);
}
if (ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.verify(alertsMessage) === null) {
const buffer = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.encode(alertsMessage).finish();
await this.gtfsRtRedisRepository.set("alerts" + "_timestamp", alertsMessage.header.timestamp);
await this.gtfsRtRedisRepository.hset("alerts.pb", buffer.toString("binary"));
}
}
}
exports.AlertsGenerator = AlertsGenerator;
//# sourceMappingURL=AlertsGenerator.js.map