refactor route fetching logic for single system ID to external function

This commit is contained in:
2025-01-22 14:27:12 -08:00
parent 5e5f76afcc
commit f1fd774821
2 changed files with 39 additions and 35 deletions

View File

@@ -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

View File

@@ -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();