diff --git a/src/repositories/shuttle/eta/BaseRedisETARepository.ts b/src/repositories/shuttle/eta/BaseRedisETARepository.ts index 872af13..7fef6ee 100644 --- a/src/repositories/shuttle/eta/BaseRedisETARepository.ts +++ b/src/repositories/shuttle/eta/BaseRedisETARepository.ts @@ -6,7 +6,7 @@ export abstract class BaseRedisETARepository extends BaseRedisRepository impleme private static readonly ETA_KEY_PREFIX = 'shuttle:eta:'; // Helper methods - private createEtaKey = (shuttleId: string, stopId: string) => + protected createEtaKey = (shuttleId: string, stopId: string) => `${BaseRedisETARepository.ETA_KEY_PREFIX}${shuttleId}:${stopId}`; createRedisHashFromEta = (eta: IEta): Record => ({ diff --git a/src/repositories/shuttle/eta/RedisExternalSourceETARepository.ts b/src/repositories/shuttle/eta/RedisExternalSourceETARepository.ts index 3dac564..298709b 100644 --- a/src/repositories/shuttle/eta/RedisExternalSourceETARepository.ts +++ b/src/repositories/shuttle/eta/RedisExternalSourceETARepository.ts @@ -1,13 +1,22 @@ import { IEta } from "../../../entities/ShuttleRepositoryEntities"; import { BaseRedisETARepository } from "./BaseRedisETARepository"; import { ExternalSourceETARepository } from "./ExternalSourceETARepository"; +import { ETARepositoryEvent } from "./ETAGetterRepository"; export class RedisExternalSourceETARepository extends BaseRedisETARepository implements ExternalSourceETARepository { - addOrUpdateEtaFromExternalSource(eta: IEta): Promise { - throw new Error("Method not implemented."); + async addOrUpdateEtaFromExternalSource(eta: IEta): Promise { + await this.addOrUpdateEta(eta); } - removeEtaIfExists(shuttleId: string, stopId: string): Promise { - throw new Error("Method not implemented."); + async removeEtaIfExists(shuttleId: string, stopId: string): Promise { + const existingEta = await this.getEtaForShuttleAndStopId(shuttleId, stopId); + if (existingEta === null) { + return null; + } + + const key = this.createEtaKey(shuttleId, stopId); + await this.redisClient.del(key); + this.emit(ETARepositoryEvent.ETA_REMOVED, existingEta); + return existingEta; } }