mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-19 08:50:29 +00:00
Pass down the new arguments into the shuttle repositories
This commit is contained in:
@@ -23,6 +23,7 @@ import { RedisExternalSourceETARepository } from "../repositories/shuttle/eta/Re
|
|||||||
import { InMemorySelfUpdatingETARepository } from "../repositories/shuttle/eta/InMemorySelfUpdatingETARepository";
|
import { InMemorySelfUpdatingETARepository } from "../repositories/shuttle/eta/InMemorySelfUpdatingETARepository";
|
||||||
import { BaseRedisETARepository } from "../repositories/shuttle/eta/BaseRedisETARepository";
|
import { BaseRedisETARepository } from "../repositories/shuttle/eta/BaseRedisETARepository";
|
||||||
import { BaseInMemoryETARepository } from "../repositories/shuttle/eta/BaseInMemoryETARepository";
|
import { BaseInMemoryETARepository } from "../repositories/shuttle/eta/BaseInMemoryETARepository";
|
||||||
|
import createRedisClientForRepository from "../helpers/createRedisClientForRepository";
|
||||||
|
|
||||||
export interface InterchangeSystemBuilderArguments {
|
export interface InterchangeSystemBuilderArguments {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -112,7 +113,11 @@ export class InterchangeSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static async buildRedisShuttleLoaderAndRepositories(args: InterchangeSystemBuilderArguments) {
|
private static async buildRedisShuttleLoaderAndRepositories(args: InterchangeSystemBuilderArguments) {
|
||||||
const shuttleRepository = new RedisShuttleRepository();
|
const shuttleRepository = new RedisShuttleRepository(
|
||||||
|
createRedisClientForRepository(),
|
||||||
|
args.shuttleStopArrivalDegreeDelta,
|
||||||
|
args.shuttleStopNearbyDegreeDelta,
|
||||||
|
);
|
||||||
await shuttleRepository.connect();
|
await shuttleRepository.connect();
|
||||||
|
|
||||||
let etaRepository: BaseRedisETARepository;
|
let etaRepository: BaseRedisETARepository;
|
||||||
@@ -261,7 +266,10 @@ export class InterchangeSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static buildInMemoryShuttleLoaderAndRepositories(args: InterchangeSystemBuilderArguments) {
|
private static buildInMemoryShuttleLoaderAndRepositories(args: InterchangeSystemBuilderArguments) {
|
||||||
const shuttleRepository = new UnoptimizedInMemoryShuttleRepository();
|
const shuttleRepository = new UnoptimizedInMemoryShuttleRepository(
|
||||||
|
args.shuttleStopArrivalDegreeDelta,
|
||||||
|
args.shuttleStopNearbyDegreeDelta,
|
||||||
|
);
|
||||||
|
|
||||||
let etaRepository: BaseInMemoryETARepository;
|
let etaRepository: BaseInMemoryETARepository;
|
||||||
let shuttleDataLoader: ApiBasedShuttleRepositoryLoader;
|
let shuttleDataLoader: ApiBasedShuttleRepositoryLoader;
|
||||||
|
|||||||
@@ -10,8 +10,18 @@ import {
|
|||||||
ShuttleTravelTimeDateFilterArguments
|
ShuttleTravelTimeDateFilterArguments
|
||||||
} from "./ShuttleGetterRepository";
|
} from "./ShuttleGetterRepository";
|
||||||
import { BaseRedisRepository } from "../BaseRedisRepository";
|
import { BaseRedisRepository } from "../BaseRedisRepository";
|
||||||
|
import { RedisClientType } from "redis";
|
||||||
|
import createRedisClientForRepository from "../../helpers/createRedisClientForRepository";
|
||||||
|
|
||||||
export class RedisShuttleRepository extends BaseRedisRepository implements ShuttleGetterSetterRepository {
|
export class RedisShuttleRepository extends BaseRedisRepository implements ShuttleGetterSetterRepository {
|
||||||
|
constructor(
|
||||||
|
redisClient: RedisClientType = createRedisClientForRepository(),
|
||||||
|
readonly shuttleStopArrivalDegreeDelta: number = 0.001,
|
||||||
|
readonly shuttleStopNearbyDegreeDelta: number = 0.003,
|
||||||
|
) {
|
||||||
|
super(redisClient);
|
||||||
|
}
|
||||||
|
|
||||||
get isReady() {
|
get isReady() {
|
||||||
return this.redisClient.isReady;
|
return this.redisClient.isReady;
|
||||||
}
|
}
|
||||||
@@ -481,20 +491,21 @@ export class RedisShuttleRepository extends BaseRedisRepository implements Shutt
|
|||||||
* is on the shuttle's route.
|
* is on the shuttle's route.
|
||||||
*
|
*
|
||||||
* @param shuttle
|
* @param shuttle
|
||||||
* @param delta
|
* @param degreeDelta
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
public async getArrivedStopIfExists(
|
public async getArrivedStopIfExists(
|
||||||
shuttle: IShuttle,
|
shuttle: IShuttle,
|
||||||
delta = 0.001,
|
|
||||||
): Promise<IStop | undefined> {
|
): Promise<IStop | undefined> {
|
||||||
|
const degreeDelta = this.shuttleStopArrivalDegreeDelta;
|
||||||
|
|
||||||
const lastStop = await this.getShuttleLastStopArrival(shuttle.id);
|
const lastStop = await this.getShuttleLastStopArrival(shuttle.id);
|
||||||
if (lastStop) {
|
if (lastStop) {
|
||||||
const lastOrderedStop = await this.getOrderedStopByRouteAndStopId(shuttle.routeId, lastStop.stopId);
|
const lastOrderedStop = await this.getOrderedStopByRouteAndStopId(shuttle.routeId, lastStop.stopId);
|
||||||
const orderedStopAfter = lastOrderedStop?.nextStop;
|
const orderedStopAfter = lastOrderedStop?.nextStop;
|
||||||
if (orderedStopAfter) {
|
if (orderedStopAfter) {
|
||||||
const stopAfter = await this.getStopById(orderedStopAfter.stopId);
|
const stopAfter = await this.getStopById(orderedStopAfter.stopId);
|
||||||
if (stopAfter && shuttleHasArrivedAtStop(shuttle, stopAfter, delta)) {
|
if (stopAfter && shuttleHasArrivedAtStop(shuttle, stopAfter, degreeDelta)) {
|
||||||
return stopAfter;
|
return stopAfter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -503,7 +514,7 @@ export class RedisShuttleRepository extends BaseRedisRepository implements Shutt
|
|||||||
|
|
||||||
for (const orderedStop of orderedStops) {
|
for (const orderedStop of orderedStops) {
|
||||||
const stop = await this.getStopById(orderedStop.stopId);
|
const stop = await this.getStopById(orderedStop.stopId);
|
||||||
if (stop != null && shuttleHasArrivedAtStop(shuttle, stop, delta)) {
|
if (stop != null && shuttleHasArrivedAtStop(shuttle, stop, degreeDelta)) {
|
||||||
return stop;
|
return stop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,14 @@ import {
|
|||||||
export class UnoptimizedInMemoryShuttleRepository
|
export class UnoptimizedInMemoryShuttleRepository
|
||||||
extends EventEmitter
|
extends EventEmitter
|
||||||
implements ShuttleGetterSetterRepository {
|
implements ShuttleGetterSetterRepository {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
readonly shuttleStopArrivalDegreeDelta: number = 0.001,
|
||||||
|
readonly shuttleStopNearbyDegreeDelta: number = 0.003,
|
||||||
|
) {
|
||||||
|
super()
|
||||||
|
}
|
||||||
|
|
||||||
public override on<T extends ShuttleRepositoryEventName>(
|
public override on<T extends ShuttleRepositoryEventName>(
|
||||||
event: T,
|
event: T,
|
||||||
listener: ShuttleRepositoryEventListener<T>,
|
listener: ShuttleRepositoryEventListener<T>,
|
||||||
@@ -252,8 +260,8 @@ export class UnoptimizedInMemoryShuttleRepository
|
|||||||
|
|
||||||
public async getArrivedStopIfExists(
|
public async getArrivedStopIfExists(
|
||||||
shuttle: IShuttle,
|
shuttle: IShuttle,
|
||||||
delta = 0.001,
|
|
||||||
): Promise<IStop | undefined> {
|
): Promise<IStop | undefined> {
|
||||||
|
const delta = this.shuttleStopArrivalDegreeDelta;
|
||||||
const orderedStops = await this.getOrderedStopsByRouteId(shuttle.routeId);
|
const orderedStops = await this.getOrderedStopsByRouteId(shuttle.routeId);
|
||||||
|
|
||||||
for (const orderedStop of orderedStops) {
|
for (const orderedStop of orderedStops) {
|
||||||
|
|||||||
Reference in New Issue
Block a user