From f1fd7748213f17603fed0984355507eb759d4c99 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Wed, 22 Jan 2025 14:27:12 -0800 Subject: [PATCH] refactor route fetching logic for single system ID to external function --- src/loaders/ApiBasedRepositoryLoader.ts | 72 +++++++++++--------- src/loaders/TimedApiBasedRepositoryLoader.ts | 2 +- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/loaders/ApiBasedRepositoryLoader.ts b/src/loaders/ApiBasedRepositoryLoader.ts index c5b252d..66ea4b7 100644 --- a/src/loaders/ApiBasedRepositoryLoader.ts +++ b/src/loaders/ApiBasedRepositoryLoader.ts @@ -9,8 +9,8 @@ export class ApiResponseError extends Error { } export class ApiBasedRepositoryLoader { - readonly supportedSystemIds = ["263"]; - readonly baseUrl = "https://passiogo.com/mapGetData.php"; + supportedSystemIds = ["263"]; + baseUrl = "https://passiogo.com/mapGetData.php"; constructor( public repository: GetterSetterRepository, @@ -51,43 +51,47 @@ export class ApiBasedRepositoryLoader { } } - public async fetchAndUpdateRouteDataForExistingSystems() { + public async fetchAndUpdateRouteDataForExistingSystemsInRepository() { const systems = await this.repository.getSystems(); await Promise.all(systems.map(async (system) => { - const params = { - getRoutes: "2", - }; - - const formDataJsonObject = { - "systemSelected0": system.id, - "amount": "1", - } - const formData = new FormData(); - formData.set("json", JSON.stringify(formDataJsonObject)); - - const query = new URLSearchParams(params).toString(); - const response = await fetch(`${this.baseUrl}?${query}`, { - method: "POST", - body: formData, - }); - const json = await response.json(); - - if (typeof json.all === "object") { - await Promise.all(json.all.map(async (jsonRoute: any) => { - const constructedRoute: IRoute = { - name: jsonRoute.name, - color: jsonRoute.color, - id: jsonRoute.myid, - polylineCoordinates: [], - systemId: system.id, - }; - - await this.repository.addOrUpdateRoute(constructedRoute); - })) - } + await this.fetchAndUpdateRouteDataForSystemId(system.id); })); } + public async fetchAndUpdateRouteDataForSystemId(systemId: string) { + const params = { + getRoutes: "2", + }; + + const formDataJsonObject = { + "systemSelected0": systemId, + "amount": "1", + } + const formData = new FormData(); + formData.set("json", JSON.stringify(formDataJsonObject)); + + const query = new URLSearchParams(params).toString(); + const response = await fetch(`${this.baseUrl}?${query}`, { + method: "POST", + body: formData, + }); + const json = await response.json(); + + if (typeof json.all === "object") { + await Promise.all(json.all.map(async (jsonRoute: any) => { + const constructedRoute: IRoute = { + name: jsonRoute.name, + color: jsonRoute.color, + id: jsonRoute.myid, + polylineCoordinates: [], + systemId: systemId, + }; + + await this.repository.addOrUpdateRoute(constructedRoute); + })) + } + } + public async fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystems() { // Fetch from the API // Pass JSON output into two different methods to update repository diff --git a/src/loaders/TimedApiBasedRepositoryLoader.ts b/src/loaders/TimedApiBasedRepositoryLoader.ts index 6fd40f4..be806d7 100644 --- a/src/loaders/TimedApiBasedRepositoryLoader.ts +++ b/src/loaders/TimedApiBasedRepositoryLoader.ts @@ -50,7 +50,7 @@ export class TimedApiBasedRepositoryLoader extends ApiBasedRepositoryLoader { await this.repository.clearSystemData(); await this.fetchAndUpdateSystemData(); await this.repository.clearRouteData(); - await this.fetchAndUpdateRouteDataForExistingSystems(); + await this.fetchAndUpdateRouteDataForExistingSystemsInRepository(); await this.repository.clearStopData(); await this.fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystems(); await this.repository.clearShuttleData();