mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +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 { NotificationService } from "./services/NotificationService";
|
||||
import { configDotenv } from "dotenv";
|
||||
import { loadTestData } from "./loaders/loadTestData";
|
||||
|
||||
configDotenv();
|
||||
|
||||
@@ -20,12 +21,17 @@ async function main() {
|
||||
});
|
||||
|
||||
const repository = new UnoptimizedInMemoryRepository();
|
||||
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
||||
repository
|
||||
);
|
||||
await repositoryDataUpdater.start();
|
||||
|
||||
const notificationService = new NotificationService(repository);
|
||||
let notificationService: NotificationService;
|
||||
if (process.argv.length > 2 && process.argv[2] == "integration-testing") {
|
||||
await loadTestData(repository);
|
||||
notificationService = new NotificationService(repository, false);
|
||||
} else {
|
||||
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
||||
repository
|
||||
);
|
||||
await repositoryDataUpdater.start();
|
||||
notificationService = new NotificationService(repository);
|
||||
}
|
||||
notificationService.reloadAPNsTokenIfTimePassed();
|
||||
|
||||
const { url } = await startStandaloneServer(server, {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { GetterSetterRepository } from "../repositories/GetterSetterRepository";
|
||||
import { IEntityWithId, IEta, IRoute, IShuttle, IStop, ISystem } from "../entities/entities";
|
||||
import { RepositoryLoader } from "./RepositoryLoader";
|
||||
|
||||
export class ApiResponseError extends Error {
|
||||
constructor(message: string) {
|
||||
@@ -13,7 +14,7 @@ export class ApiResponseError extends Error {
|
||||
* Passio Go API. Supports automatic pruning of all data types
|
||||
* which inherit from `IEntityWithId`.
|
||||
*/
|
||||
export class ApiBasedRepositoryLoader {
|
||||
export class ApiBasedRepositoryLoader implements RepositoryLoader {
|
||||
supportedSystemIds = ["263"];
|
||||
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;
|
||||
}
|
||||
|
||||
constructor(private repository: GetterRepository) {
|
||||
constructor(private repository: GetterRepository, private shouldActuallySendNotifications = true) {
|
||||
this.etaSubscriberCallback = this.etaSubscriberCallback.bind(this);
|
||||
this.reloadAPNsTokenIfTimePassed = this.reloadAPNsTokenIfTimePassed.bind(this);
|
||||
this.lastReloadedTimeForAPNsIsTooRecent = this.lastReloadedTimeForAPNsIsTooRecent.bind(this);
|
||||
@@ -81,6 +81,10 @@ export class NotificationService {
|
||||
}
|
||||
|
||||
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
||||
if (!this.shouldActuallySendNotifications) {
|
||||
return true; // pretend that the notification sent
|
||||
}
|
||||
|
||||
const { deviceId, shuttleId, stopId } = notificationData;
|
||||
this.reloadAPNsTokenIfTimePassed();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user