From 16dce328875c5437b92dc8f01f725df9f504286c Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Fri, 11 Apr 2025 16:43:46 -0700 Subject: [PATCH] add a RepositoryLoader interface defining a fetchAndUpdateAll method --- src/loaders/ApiBasedShuttleRepositoryLoader.ts | 11 +++++++++++ src/loaders/RepositoryLoader.ts | 3 +++ src/loaders/ShuttleRepositoryLoader.ts | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/loaders/RepositoryLoader.ts diff --git a/src/loaders/ApiBasedShuttleRepositoryLoader.ts b/src/loaders/ApiBasedShuttleRepositoryLoader.ts index 45d510f..e02bed4 100644 --- a/src/loaders/ApiBasedShuttleRepositoryLoader.ts +++ b/src/loaders/ApiBasedShuttleRepositoryLoader.ts @@ -28,6 +28,17 @@ export class ApiBasedShuttleRepositoryLoader implements ShuttleRepositoryLoader return ids; } + public async fetchAndUpdateAll() { + await this.fetchAndUpdateRouteDataForSystem(); + await this.fetchAndUpdateStopAndPolylineDataForRoutesInSystem(); + await this.fetchAndUpdateShuttleDataForSystem(); + + // Because ETA method doesn't support pruning yet, + // add a call to the clear method here + await this.repository.clearEtaData(); + await this.fetchAndUpdateEtaDataForExistingStopsForSystem(); + } + public async fetchAndUpdateRouteDataForSystem() { const systemId = this.passioSystemId; const routeIdsToPrune = await this.constructExistingEntityIdSet(async () => { diff --git a/src/loaders/RepositoryLoader.ts b/src/loaders/RepositoryLoader.ts new file mode 100644 index 0000000..668aa26 --- /dev/null +++ b/src/loaders/RepositoryLoader.ts @@ -0,0 +1,3 @@ +export interface RepositoryLoader { + fetchAndUpdateAll(): Promise; +} diff --git a/src/loaders/ShuttleRepositoryLoader.ts b/src/loaders/ShuttleRepositoryLoader.ts index 588d06f..100cecc 100644 --- a/src/loaders/ShuttleRepositoryLoader.ts +++ b/src/loaders/ShuttleRepositoryLoader.ts @@ -1,4 +1,6 @@ -export interface ShuttleRepositoryLoader { +import { RepositoryLoader } from "./RepositoryLoader"; + +export interface ShuttleRepositoryLoader extends RepositoryLoader { fetchAndUpdateRouteDataForSystem(): Promise; fetchAndUpdateStopAndPolylineDataForRoutesInSystem(): Promise; fetchAndUpdateShuttleDataForSystem(): Promise;