mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 16:00:32 +00:00
Update InMemoryParkingRepository.ts and tests to use the circular queue
This commit is contained in:
@@ -4,8 +4,9 @@ import {
|
||||
IParkingStructureTimestampRecord
|
||||
} from "../entities/ParkingRepositoryEntities";
|
||||
import { HistoricalParkingAverageQueryResult } from "./ParkingGetterRepository";
|
||||
import { CircularQueue } from "../types/CircularQueue";
|
||||
|
||||
type ParkingStructureID = string;
|
||||
export type ParkingStructureID = string;
|
||||
|
||||
// Every 10 minutes
|
||||
// 6x per hour * 24x per day * 7x per week = 1008 entries for one week
|
||||
@@ -19,7 +20,7 @@ export class InMemoryParkingRepository implements ParkingGetterSetterRepository
|
||||
|
||||
constructor(
|
||||
private structures: Map<ParkingStructureID, IParkingStructure> = new Map(),
|
||||
private historicalData: Map<ParkingStructureID, IParkingStructureTimestampRecord[]> = new Map(),
|
||||
private historicalData: Map<ParkingStructureID, CircularQueue<IParkingStructureTimestampRecord>> = new Map(),
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -44,10 +45,11 @@ export class InMemoryParkingRepository implements ParkingGetterSetterRepository
|
||||
};
|
||||
|
||||
if (!this.historicalData.has(structure.id)) {
|
||||
this.historicalData.set(structure.id, []);
|
||||
this.historicalData.set(structure.id, new CircularQueue<IParkingStructureTimestampRecord>(MAX_NUM_ENTRIES));
|
||||
}
|
||||
|
||||
this.historicalData.get(structure.id)?.push(timestampRecord);
|
||||
const sortingCallback = (a: IParkingStructureTimestampRecord, b: IParkingStructureTimestampRecord) => a.timestampMs - b.timestampMs;
|
||||
this.historicalData.get(structure.id)?.appendWithSorting(timestampRecord, sortingCallback);
|
||||
this.dataLastAdded.set(structure.id, new Date(now));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user