mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-19 08:50:29 +00:00
Merge pull request #26 from brendan-ch/chore/setup-mock-data-loader
chore/setup-mock-data-loader
This commit is contained in:
18
src/index.ts
18
src/index.ts
@@ -7,6 +7,7 @@ import { UnoptimizedInMemoryRepository } from "./repositories/UnoptimizedInMemor
|
|||||||
import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepositoryLoader";
|
import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepositoryLoader";
|
||||||
import { NotificationService } from "./services/NotificationService";
|
import { NotificationService } from "./services/NotificationService";
|
||||||
import { configDotenv } from "dotenv";
|
import { configDotenv } from "dotenv";
|
||||||
|
import { loadTestData } from "./loaders/loadTestData";
|
||||||
|
|
||||||
configDotenv();
|
configDotenv();
|
||||||
|
|
||||||
@@ -20,12 +21,17 @@ async function main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const repository = new UnoptimizedInMemoryRepository();
|
const repository = new UnoptimizedInMemoryRepository();
|
||||||
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
let notificationService: NotificationService;
|
||||||
repository
|
if (process.argv.length > 2 && process.argv[2] == "integration-testing") {
|
||||||
);
|
await loadTestData(repository);
|
||||||
await repositoryDataUpdater.start();
|
notificationService = new NotificationService(repository, false);
|
||||||
|
} else {
|
||||||
const notificationService = new NotificationService(repository);
|
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
||||||
|
repository
|
||||||
|
);
|
||||||
|
await repositoryDataUpdater.start();
|
||||||
|
notificationService = new NotificationService(repository);
|
||||||
|
}
|
||||||
notificationService.reloadAPNsTokenIfTimePassed();
|
notificationService.reloadAPNsTokenIfTimePassed();
|
||||||
|
|
||||||
const { url } = await startStandaloneServer(server, {
|
const { url } = await startStandaloneServer(server, {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { GetterSetterRepository } from "../repositories/GetterSetterRepository";
|
import { GetterSetterRepository } from "../repositories/GetterSetterRepository";
|
||||||
import { IEntityWithId, IEta, IRoute, IShuttle, IStop, ISystem } from "../entities/entities";
|
import { IEntityWithId, IEta, IRoute, IShuttle, IStop, ISystem } from "../entities/entities";
|
||||||
|
import { RepositoryLoader } from "./RepositoryLoader";
|
||||||
|
|
||||||
export class ApiResponseError extends Error {
|
export class ApiResponseError extends Error {
|
||||||
constructor(message: string) {
|
constructor(message: string) {
|
||||||
@@ -13,7 +14,7 @@ export class ApiResponseError extends Error {
|
|||||||
* Passio Go API. Supports automatic pruning of all data types
|
* Passio Go API. Supports automatic pruning of all data types
|
||||||
* which inherit from `IEntityWithId`.
|
* which inherit from `IEntityWithId`.
|
||||||
*/
|
*/
|
||||||
export class ApiBasedRepositoryLoader {
|
export class ApiBasedRepositoryLoader implements RepositoryLoader {
|
||||||
supportedSystemIds = ["263"];
|
supportedSystemIds = ["263"];
|
||||||
baseUrl = "https://passiogo.com/mapGetData.php";
|
baseUrl = "https://passiogo.com/mapGetData.php";
|
||||||
|
|
||||||
@@ -382,4 +383,4 @@ export class ApiBasedRepositoryLoader {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/loaders/RepositoryLoader.ts
Normal file
12
src/loaders/RepositoryLoader.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
export interface RepositoryLoader {
|
||||||
|
fetchAndUpdateSystemData(): Promise<void>;
|
||||||
|
fetchAndUpdateRouteDataForExistingSystemsInRepository(): Promise<void>;
|
||||||
|
fetchAndUpdateRouteDataForSystemId(systemId: string): Promise<void>;
|
||||||
|
fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystemsInRepository(): Promise<void>;
|
||||||
|
fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId(systemId: string): Promise<void>;
|
||||||
|
fetchAndUpdateShuttleDataForExistingSystemsInRepository(): Promise<void>;
|
||||||
|
fetchAndUpdateShuttleDataForSystemId(systemId: string): Promise<void>;
|
||||||
|
fetchAndUpdateEtaDataForExistingStopsForSystemsInRepository(): Promise<void>;
|
||||||
|
fetchAndUpdateEtaDataForExistingStopsForSystemId(systemId: string): Promise<void>;
|
||||||
|
fetchAndUpdateEtaDataForStopId(stopId: string): Promise<void>;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@ export class NotificationService {
|
|||||||
return this._lastRefreshedTimeMs;
|
return this._lastRefreshedTimeMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(private repository: GetterRepository) {
|
constructor(private repository: GetterRepository, private shouldActuallySendNotifications = true) {
|
||||||
this.etaSubscriberCallback = this.etaSubscriberCallback.bind(this);
|
this.etaSubscriberCallback = this.etaSubscriberCallback.bind(this);
|
||||||
this.reloadAPNsTokenIfTimePassed = this.reloadAPNsTokenIfTimePassed.bind(this);
|
this.reloadAPNsTokenIfTimePassed = this.reloadAPNsTokenIfTimePassed.bind(this);
|
||||||
this.lastReloadedTimeForAPNsIsTooRecent = this.lastReloadedTimeForAPNsIsTooRecent.bind(this);
|
this.lastReloadedTimeForAPNsIsTooRecent = this.lastReloadedTimeForAPNsIsTooRecent.bind(this);
|
||||||
@@ -81,6 +81,10 @@ export class NotificationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
||||||
|
if (!this.shouldActuallySendNotifications) {
|
||||||
|
return true; // pretend that the notification sent
|
||||||
|
}
|
||||||
|
|
||||||
const { deviceId, shuttleId, stopId } = notificationData;
|
const { deviceId, shuttleId, stopId } = notificationData;
|
||||||
this.reloadAPNsTokenIfTimePassed();
|
this.reloadAPNsTokenIfTimePassed();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user