rename class to InterchangeSystem.ts and add builder arguments

This commit is contained in:
2025-04-06 10:43:34 -07:00
parent 2bc12aa794
commit db097b00dc
2 changed files with 13 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
import { System } from "./entities/System";
import { InterchangeSystem } from "./entities/InterchangeSystem";
export interface ServerContext {
systems: System[];
systems: InterchangeSystem[];
}

View File

@@ -6,7 +6,12 @@ import { RedisNotificationRepository } from "../repositories/RedisNotificationRe
import { NotificationRepository } from "../repositories/NotificationRepository";
import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository";
export class System {
export interface InterchangeSystemBuilderArguments {
name: string;
passioSystemId: string;
}
export class InterchangeSystem {
constructor(
public systemId: string,
public shuttleDataLoader: ShuttleRepositoryLoader,
@@ -19,25 +24,24 @@ export class System {
/**
* Construct an instance of the class where all composited
* classes are correctly linked.
* @param systemId
* @param args
* @param notificationRepository
*/
static build(
systemId: string,
args: InterchangeSystemBuilderArguments,
notificationRepository: NotificationRepository = new RedisNotificationRepository()
) {
const shuttleRepository = new UnoptimizedInMemoryShuttleRepository();
const shuttleDataLoader = new TimedApiBasedShuttleRepositoryLoader(systemId, shuttleRepository);
const shuttleDataLoader = new TimedApiBasedShuttleRepositoryLoader(args.passioSystemId, shuttleRepository);
const notificationScheduler = new ETANotificationScheduler(shuttleRepository, notificationRepository);
const system = new System(
systemId,
return new InterchangeSystem(
args.name,
shuttleDataLoader,
shuttleRepository,
notificationScheduler,
notificationRepository,
);
return system;
}
}