add a build method and export statement

This commit is contained in:
2025-04-06 10:28:19 -07:00
parent d607a3742c
commit 187800cf40

View File

@@ -1,11 +1,34 @@
import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository";
import { ShuttleRepositoryLoader } from "../loaders/ShuttleRepositoryLoader";
import { ETANotificationScheduler } from "../notifications/schedulers/ETANotificationScheduler";
import { TimedApiBasedShuttleRepositoryLoader } from "../loaders/TimedApiBasedShuttleRepositoryLoader";
import { UnoptimizedInMemoryShuttleRepository } from "../repositories/UnoptimizedInMemoryShuttleRepository";
import { RedisNotificationRepository } from "../repositories/RedisNotificationRepository";
class System {
export class System {
constructor(
public systemId: string,
public shuttleRepository: ShuttleGetterSetterRepository,
public shuttleDataLoader: ShuttleRepositoryLoader,
public notificationScheduler: ETANotificationScheduler,
) {
}
/**
* Construct an instance of the class where all composited
* classes are correctly linked.
* @param systemId
*/
static build(systemId: string) {
const shuttleRepository = new UnoptimizedInMemoryShuttleRepository();
const shuttleDataLoader = new TimedApiBasedShuttleRepositoryLoader(systemId, shuttleRepository);
const notificationRepository = new RedisNotificationRepository();
const notificationScheduler = new ETANotificationScheduler(shuttleRepository, notificationRepository);
const system = new System(
systemId,
shuttleDataLoader,
notificationScheduler,
);
return system;
}
}