From f334054b5e83a0bd84d2aabec6ceb40509350b79 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Tue, 18 Nov 2025 19:17:04 -0800 Subject: [PATCH] Add SHUTTLE_WILL_LEAVE_STOP event and upload payload names --- src/repositories/shuttle/ShuttleGetterRepository.ts | 10 ++++++++-- .../shuttle/eta/InMemorySelfUpdatingETARepository.ts | 4 ++-- .../shuttle/eta/RedisSelfUpdatingETARepository.ts | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/repositories/shuttle/ShuttleGetterRepository.ts b/src/repositories/shuttle/ShuttleGetterRepository.ts index f4e223f..e281ddc 100644 --- a/src/repositories/shuttle/ShuttleGetterRepository.ts +++ b/src/repositories/shuttle/ShuttleGetterRepository.ts @@ -5,6 +5,7 @@ export const ShuttleRepositoryEvent = { SHUTTLE_UPDATED: "shuttleUpdated", SHUTTLE_REMOVED: "shuttleRemoved", SHUTTLE_WILL_ARRIVE_AT_STOP: "shuttleArrivedAtStop", + SHUTTLE_WILL_LEAVE_STOP: "shuttleWillLeaveStop", } as const; export type ShuttleRepositoryEventName = typeof ShuttleRepositoryEvent[keyof typeof ShuttleRepositoryEvent]; @@ -12,15 +13,20 @@ export type ShuttleRepositoryEventName = typeof ShuttleRepositoryEvent[keyof typ export type EtaRemovedEventPayload = IEta; export type EtaDataClearedEventPayload = IEta[]; -export interface WillArriveAtStopPayload { +export interface ShuttleWillArriveAtStopPayload { lastStopArrival?: ShuttleStopArrival; willArriveAt: ShuttleStopArrival; }; +export interface ShuttleWillLeaveStopPayload { + stopArrivalThatShuttleIsLeaving: ShuttleStopArrival; +} + export interface ShuttleRepositoryEventPayloads { [ShuttleRepositoryEvent.SHUTTLE_UPDATED]: IShuttle, [ShuttleRepositoryEvent.SHUTTLE_REMOVED]: IShuttle, - [ShuttleRepositoryEvent.SHUTTLE_WILL_ARRIVE_AT_STOP]: WillArriveAtStopPayload, + [ShuttleRepositoryEvent.SHUTTLE_WILL_ARRIVE_AT_STOP]: ShuttleWillArriveAtStopPayload, + [ShuttleRepositoryEvent.SHUTTLE_WILL_LEAVE_STOP]: ShuttleWillLeaveStopPayload, } export type ShuttleRepositoryEventListener = ( diff --git a/src/repositories/shuttle/eta/InMemorySelfUpdatingETARepository.ts b/src/repositories/shuttle/eta/InMemorySelfUpdatingETARepository.ts index 073547f..87945a4 100644 --- a/src/repositories/shuttle/eta/InMemorySelfUpdatingETARepository.ts +++ b/src/repositories/shuttle/eta/InMemorySelfUpdatingETARepository.ts @@ -1,5 +1,5 @@ import { SelfUpdatingETARepository } from "./SelfUpdatingETARepository"; -import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, WillArriveAtStopPayload } from "../ShuttleGetterRepository"; +import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, ShuttleWillArriveAtStopPayload } from "../ShuttleGetterRepository"; import { BaseInMemoryETARepository } from "./BaseInMemoryETARepository"; import { IOrderedStop, IShuttle } from "../../../entities/ShuttleRepositoryEntities"; import { ETARepositoryEvent } from "./ETAGetterRepository"; @@ -159,7 +159,7 @@ export class InMemorySelfUpdatingETARepository extends BaseInMemoryETARepository private async handleShuttleWillArriveAtStop({ lastStopArrival: lastArrival, willArriveAt: currentArrival, - }: WillArriveAtStopPayload): Promise { + }: ShuttleWillArriveAtStopPayload): Promise { if (lastArrival) { // disallow cases where this gets triggered multiple times if (lastArrival.stopId === currentArrival.stopId) return; diff --git a/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts b/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts index e9658b7..b9f292c 100644 --- a/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts +++ b/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts @@ -1,7 +1,7 @@ import { SelfUpdatingETARepository } from "./SelfUpdatingETARepository"; import { BaseRedisETARepository } from "./BaseRedisETARepository"; import { createClient, RedisClientType } from "redis"; -import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, WillArriveAtStopPayload } from "../ShuttleGetterRepository"; +import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, ShuttleWillArriveAtStopPayload } from "../ShuttleGetterRepository"; import { REDIS_RECONNECT_INTERVAL } from "../../../environment"; import { IEta, IOrderedStop, IShuttle } from "../../../entities/ShuttleRepositoryEntities"; import { ETARepositoryEvent } from "./ETAGetterRepository"; @@ -181,7 +181,7 @@ export class RedisSelfUpdatingETARepository extends BaseRedisETARepository imple private async handleShuttleWillArriveAtStop({ lastStopArrival: lastArrival, willArriveAt: currentArrival, - }: WillArriveAtStopPayload) { + }: ShuttleWillArriveAtStopPayload) { // only update time traveled if last arrival exists if (lastArrival) { // disallow cases where this gets triggered multiple times