Move repositories into folders.

This commit is contained in:
2025-07-19 11:58:45 -04:00
parent 3302822bf8
commit ed037cf2d2
28 changed files with 47 additions and 47 deletions

View File

@@ -1,19 +1,19 @@
import { ETANotificationScheduler } from "../notifications/schedulers/ETANotificationScheduler"; import { ETANotificationScheduler } from "../notifications/schedulers/ETANotificationScheduler";
import { TimedApiBasedRepositoryLoader } from "../loaders/TimedApiBasedRepositoryLoader"; import { TimedApiBasedRepositoryLoader } from "../loaders/TimedApiBasedRepositoryLoader";
import { UnoptimizedInMemoryShuttleRepository } from "../repositories/UnoptimizedInMemoryShuttleRepository"; import { UnoptimizedInMemoryShuttleRepository } from "../repositories/shuttle/UnoptimizedInMemoryShuttleRepository";
import { RedisNotificationRepository } from "../repositories/RedisNotificationRepository"; import { RedisNotificationRepository } from "../repositories/notifications/RedisNotificationRepository";
import { NotificationRepository } from "../repositories/NotificationRepository"; import { NotificationRepository } from "../repositories/notifications/NotificationRepository";
import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../repositories/shuttle/ShuttleGetterSetterRepository";
import { InMemoryNotificationRepository } from "../repositories/InMemoryNotificationRepository"; import { InMemoryNotificationRepository } from "../repositories/notifications/InMemoryNotificationRepository";
import { AppleNotificationSender } from "../notifications/senders/AppleNotificationSender"; import { AppleNotificationSender } from "../notifications/senders/AppleNotificationSender";
import { ApiBasedShuttleRepositoryLoader } from "../loaders/shuttle/ApiBasedShuttleRepositoryLoader"; import { ApiBasedShuttleRepositoryLoader } from "../loaders/shuttle/ApiBasedShuttleRepositoryLoader";
import { ParkingGetterSetterRepository } from "../repositories/ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "../repositories/parking/ParkingGetterSetterRepository";
import { InMemoryParkingRepository } from "../repositories/InMemoryParkingRepository"; import { InMemoryParkingRepository } from "../repositories/parking/InMemoryParkingRepository";
import { import {
buildParkingRepositoryLoaderIfExists, buildParkingRepositoryLoaderIfExists,
ParkingRepositoryLoaderBuilderArguments ParkingRepositoryLoaderBuilderArguments
} from "../loaders/parking/buildParkingRepositoryLoaderIfExists"; } from "../loaders/parking/buildParkingRepositoryLoaderIfExists";
import { RedisParkingRepository } from "../repositories/RedisParkingRepository"; import { RedisParkingRepository } from "../repositories/parking/RedisParkingRepository";
export interface InterchangeSystemBuilderArguments { export interface InterchangeSystemBuilderArguments {
name: string; name: string;

View File

@@ -1,5 +1,5 @@
import { ParkingRepositoryLoader } from "./ParkingRepositoryLoader"; import { ParkingRepositoryLoader } from "./ParkingRepositoryLoader";
import { ParkingGetterSetterRepository } from "../../repositories/ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "../../repositories/parking/ParkingGetterSetterRepository";
import { createHash } from "node:crypto"; import { createHash } from "node:crypto";
import { ApiResponseError } from "../ApiResponseError"; import { ApiResponseError } from "../ApiResponseError";
import { IParkingStructure } from "../../entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";

View File

@@ -1,4 +1,4 @@
import { ParkingGetterSetterRepository } from "../../repositories/ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "../../repositories/parking/ParkingGetterSetterRepository";
import { ChapmanApiBasedParkingRepositoryLoader } from "./ChapmanApiBasedParkingRepositoryLoader"; import { ChapmanApiBasedParkingRepositoryLoader } from "./ChapmanApiBasedParkingRepositoryLoader";
export interface ParkingRepositoryLoaderBuilderArguments { export interface ParkingRepositoryLoaderBuilderArguments {

View File

@@ -1,4 +1,4 @@
import { ParkingGetterSetterRepository } from "../../repositories/ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "../../repositories/parking/ParkingGetterSetterRepository";
import { IParkingStructure } from "../../entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";
const parkingStructures: IParkingStructure[] = [ const parkingStructures: IParkingStructure[] = [

View File

@@ -1,4 +1,4 @@
import { ShuttleGetterSetterRepository } from "../../repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../../repositories/shuttle/ShuttleGetterSetterRepository";
import { IEta, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities"; import { IEta, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities";
import { ShuttleRepositoryLoader } from "./ShuttleRepositoryLoader"; import { ShuttleRepositoryLoader } from "./ShuttleRepositoryLoader";
import { IEntityWithId } from "../../entities/SharedEntities"; import { IEntityWithId } from "../../entities/SharedEntities";

View File

@@ -1,6 +1,6 @@
// Mock data // Mock data
import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities";
import { ShuttleGetterSetterRepository } from "../../repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../../repositories/shuttle/ShuttleGetterSetterRepository";
import { supportedIntegrationTestSystems } from "../supportedIntegrationTestSystems"; import { supportedIntegrationTestSystems } from "../supportedIntegrationTestSystems";
const redRoutePolylineCoordinates = [ const redRoutePolylineCoordinates = [

View File

@@ -1,11 +1,11 @@
import { ShuttleGetterRepository } from "../../repositories/ShuttleGetterRepository"; import { ShuttleGetterRepository } from "../../repositories/shuttle/ShuttleGetterRepository";
import { IEta } from "../../entities/ShuttleRepositoryEntities"; import { IEta } from "../../entities/ShuttleRepositoryEntities";
import { AppleNotificationSender, NotificationAlertArguments } from "../senders/AppleNotificationSender"; import { AppleNotificationSender, NotificationAlertArguments } from "../senders/AppleNotificationSender";
import { import {
NotificationRepository, NotificationRepository,
ScheduledNotification ScheduledNotification
} from "../../repositories/NotificationRepository"; } from "../../repositories/notifications/NotificationRepository";
import { InMemoryNotificationRepository } from "../../repositories/InMemoryNotificationRepository"; import { InMemoryNotificationRepository } from "../../repositories/notifications/InMemoryNotificationRepository";
export class ETANotificationScheduler { export class ETANotificationScheduler {
public static readonly defaultSecondsThresholdForNotificationToFire = 180; public static readonly defaultSecondsThresholdForNotificationToFire = 180;

View File

@@ -5,7 +5,7 @@ import {
NotificationRepository, NotificationRepository,
ScheduledNotification ScheduledNotification
} from "./NotificationRepository"; } from "./NotificationRepository";
import { TupleKey } from "../types/TupleKey"; import { TupleKey } from "../../types/TupleKey";
type DeviceIdSecondsThresholdAssociation = { [key: string]: number }; type DeviceIdSecondsThresholdAssociation = { [key: string]: number };

View File

@@ -1,4 +1,4 @@
import { TupleKey } from '../types/TupleKey'; import { TupleKey } from '../../types/TupleKey';
import { import {
Listener, Listener,
NotificationEvent, NotificationEvent,
@@ -6,7 +6,7 @@ import {
NotificationRepository, NotificationRepository,
ScheduledNotification ScheduledNotification
} from "./NotificationRepository"; } from "./NotificationRepository";
import { BaseRedisRepository } from "./BaseRedisRepository"; import { BaseRedisRepository } from "../BaseRedisRepository";
export class RedisNotificationRepository extends BaseRedisRepository implements NotificationRepository { export class RedisNotificationRepository extends BaseRedisRepository implements NotificationRepository {
private listeners: Listener[] = []; private listeners: Listener[] = [];

View File

@@ -2,9 +2,9 @@ import { ParkingGetterSetterRepository } from "./ParkingGetterSetterRepository";
import { import {
IParkingStructure, IParkingStructure,
IParkingStructureTimestampRecord IParkingStructureTimestampRecord
} from "../entities/ParkingRepositoryEntities"; } from "../../entities/ParkingRepositoryEntities";
import { HistoricalParkingAverageQueryResult, ParkingStructureCountOptions } from "./ParkingGetterRepository"; import { HistoricalParkingAverageQueryResult, ParkingStructureCountOptions } from "./ParkingGetterRepository";
import { CircularQueue } from "../types/CircularQueue"; import { CircularQueue } from "../../types/CircularQueue";
import { PARKING_LOGGING_INTERVAL_MS } from "./ParkingRepositoryConstants"; import { PARKING_LOGGING_INTERVAL_MS } from "./ParkingRepositoryConstants";
// If every 10 minutes, two weeks of data (6x per hour * 24x per day * 7x per week * 2) // If every 10 minutes, two weeks of data (6x per hour * 24x per day * 7x per week * 2)

View File

@@ -1,4 +1,4 @@
import { IParkingStructure } from "../entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";
export interface ParkingStructureCountOptions { export interface ParkingStructureCountOptions {
startUnixEpochMs: number; startUnixEpochMs: number;

View File

@@ -1,4 +1,4 @@
import { IParkingStructure } from "../entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";
import { ParkingGetterRepository } from "./ParkingGetterRepository"; import { ParkingGetterRepository } from "./ParkingGetterRepository";
export interface ParkingGetterSetterRepository extends ParkingGetterRepository { export interface ParkingGetterSetterRepository extends ParkingGetterRepository {

View File

@@ -1,7 +1,7 @@
import { ParkingGetterSetterRepository } from "./ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "./ParkingGetterSetterRepository";
import { IParkingStructure } from "../entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";
import { HistoricalParkingAverageQueryResult, ParkingStructureCountOptions } from "./ParkingGetterRepository"; import { HistoricalParkingAverageQueryResult, ParkingStructureCountOptions } from "./ParkingGetterRepository";
import { BaseRedisRepository } from "./BaseRedisRepository"; import { BaseRedisRepository } from "../BaseRedisRepository";
import { PARKING_LOGGING_INTERVAL_MS } from "./ParkingRepositoryConstants"; import { PARKING_LOGGING_INTERVAL_MS } from "./ParkingRepositoryConstants";
export type ParkingStructureID = string; export type ParkingStructureID = string;
@@ -167,7 +167,7 @@ export class RedisParkingRepository extends BaseRedisRepository implements Parki
while (currentIntervalStart < endUnixEpochMs) { while (currentIntervalStart < endUnixEpochMs) {
const currentIntervalEnd = Math.min(currentIntervalStart + intervalMs, endUnixEpochMs); const currentIntervalEnd = Math.min(currentIntervalStart + intervalMs, endUnixEpochMs);
try { try {
const aggregationResult = await this.redisClient.sendCommand([ const aggregationResult = await this.redisClient.sendCommand([
'TS.RANGE', 'TS.RANGE',

View File

@@ -1,4 +1,4 @@
import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../entities/ShuttleRepositoryEntities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities";
/** /**
* Shuttle getter repository to be linked to a system. * Shuttle getter repository to be linked to a system.

View File

@@ -2,7 +2,7 @@
// to convert from data repo to GraphQL schema // to convert from data repo to GraphQL schema
import { ShuttleGetterRepository } from "./ShuttleGetterRepository"; import { ShuttleGetterRepository } from "./ShuttleGetterRepository";
import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../entities/ShuttleRepositoryEntities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities";
/** /**
* ShuttleGetterRepository interface for data derived from Passio API. * ShuttleGetterRepository interface for data derived from Passio API.

View File

@@ -1,6 +1,6 @@
import { ShuttleGetterSetterRepository } from "./ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "./ShuttleGetterSetterRepository";
import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../entities/ShuttleRepositoryEntities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities";
import { IEntityWithId } from "../entities/SharedEntities"; import { IEntityWithId } from "../../entities/SharedEntities";
/** /**
* An unoptimized in memory repository. * An unoptimized in memory repository.

View File

@@ -3,7 +3,7 @@ import { ServerContext } from "../ServerContext";
import { import {
ETANotificationScheduler, ETANotificationScheduler,
} from "../notifications/schedulers/ETANotificationScheduler"; } from "../notifications/schedulers/ETANotificationScheduler";
import { ScheduledNotification } from "../repositories/NotificationRepository"; import { ScheduledNotification } from "../repositories/notifications/NotificationRepository";
import { InterchangeSystem } from "../entities/InterchangeSystem"; import { InterchangeSystem } from "../entities/InterchangeSystem";
async function temp_findMatchingSystemBasedOnShuttleId(context: ServerContext, args: Omit<MutationScheduleNotificationArgs, "input"> & { async function temp_findMatchingSystemBasedOnShuttleId(context: ServerContext, args: Omit<MutationScheduleNotificationArgs, "input"> & {

View File

@@ -1,7 +1,7 @@
import { afterEach, beforeAll, beforeEach, describe, expect, it, jest } from "@jest/globals"; import { afterEach, beforeAll, beforeEach, describe, expect, it, jest } from "@jest/globals";
import { TimedApiBasedRepositoryLoader } from "../../src/loaders/TimedApiBasedRepositoryLoader"; import { TimedApiBasedRepositoryLoader } from "../../src/loaders/TimedApiBasedRepositoryLoader";
import { resetGlobalFetchMockJson } from "../testHelpers/fetchMockHelpers"; import { resetGlobalFetchMockJson } from "../testHelpers/fetchMockHelpers";
import { UnoptimizedInMemoryShuttleRepository } from "../../src/repositories/UnoptimizedInMemoryShuttleRepository"; import { UnoptimizedInMemoryShuttleRepository } from "../../src/repositories/shuttle/UnoptimizedInMemoryShuttleRepository";
import { ApiBasedShuttleRepositoryLoader } from "../../src/loaders/shuttle/ApiBasedShuttleRepositoryLoader"; import { ApiBasedShuttleRepositoryLoader } from "../../src/loaders/shuttle/ApiBasedShuttleRepositoryLoader";
describe("TimedApiBasedRepositoryLoader", () => { describe("TimedApiBasedRepositoryLoader", () => {

View File

@@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it, jest } from "@jest/globals";
import { import {
ChapmanApiBasedParkingRepositoryLoader ChapmanApiBasedParkingRepositoryLoader
} from "../../../src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader"; } from "../../../src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader";
import { InMemoryParkingRepository } from "../../../src/repositories/InMemoryParkingRepository"; import { InMemoryParkingRepository } from "../../../src/repositories/parking/InMemoryParkingRepository";
import { import {
resetGlobalFetchMockJson, resetGlobalFetchMockJson,
updateGlobalFetchMockJson, updateGlobalFetchMockJson,

View File

@@ -1,6 +1,6 @@
import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals"; import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals";
import { ApiBasedShuttleRepositoryLoader } from "../../../src/loaders/shuttle/ApiBasedShuttleRepositoryLoader"; import { ApiBasedShuttleRepositoryLoader } from "../../../src/loaders/shuttle/ApiBasedShuttleRepositoryLoader";
import { UnoptimizedInMemoryShuttleRepository } from "../../../src/repositories/UnoptimizedInMemoryShuttleRepository"; import { UnoptimizedInMemoryShuttleRepository } from "../../../src/repositories/shuttle/UnoptimizedInMemoryShuttleRepository";
import { fetchRouteDataSuccessfulResponse } from "../../jsonSnapshots/fetchRouteData/fetchRouteDataSuccessfulResponse"; import { fetchRouteDataSuccessfulResponse } from "../../jsonSnapshots/fetchRouteData/fetchRouteDataSuccessfulResponse";
import { import {
fetchStopAndPolylineDataSuccessfulResponse fetchStopAndPolylineDataSuccessfulResponse

View File

@@ -1,11 +1,11 @@
import { beforeEach, describe, expect, it, jest } from "@jest/globals"; import { beforeEach, describe, expect, it, jest } from "@jest/globals";
import { ETANotificationScheduler } from "../../../src/notifications/schedulers/ETANotificationScheduler"; import { ETANotificationScheduler } from "../../../src/notifications/schedulers/ETANotificationScheduler";
import { UnoptimizedInMemoryShuttleRepository } from "../../../src/repositories/UnoptimizedInMemoryShuttleRepository"; import { UnoptimizedInMemoryShuttleRepository } from "../../../src/repositories/shuttle/UnoptimizedInMemoryShuttleRepository";
import { IEta, IShuttle, IStop } from "../../../src/entities/ShuttleRepositoryEntities"; import { IEta, IShuttle, IStop } from "../../../src/entities/ShuttleRepositoryEntities";
import { addMockShuttleToRepository, addMockStopToRepository } from "../../testHelpers/repositorySetupHelpers"; import { addMockShuttleToRepository, addMockStopToRepository } from "../../testHelpers/repositorySetupHelpers";
import { AppleNotificationSender } from "../../../src/notifications/senders/AppleNotificationSender"; import { AppleNotificationSender } from "../../../src/notifications/senders/AppleNotificationSender";
import { InMemoryNotificationRepository } from "../../../src/repositories/InMemoryNotificationRepository"; import { InMemoryNotificationRepository } from "../../../src/repositories/notifications/InMemoryNotificationRepository";
import { NotificationRepository } from "../../../src/repositories/NotificationRepository"; import { NotificationRepository } from "../../../src/repositories/notifications/NotificationRepository";
jest.mock("http2"); jest.mock("http2");
jest.mock("../../../src/notifications/senders/AppleNotificationSender"); jest.mock("../../../src/notifications/senders/AppleNotificationSender");

View File

@@ -1,7 +1,7 @@
import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals"; import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals";
import { InMemoryNotificationRepository } from "../../src/repositories/InMemoryNotificationRepository"; import { InMemoryNotificationRepository } from "../../src/repositories/notifications/InMemoryNotificationRepository";
import { NotificationEvent, NotificationRepository } from "../../src/repositories/NotificationRepository"; import { NotificationEvent, NotificationRepository } from "../../src/repositories/notifications/NotificationRepository";
import { RedisNotificationRepository } from "../../src/repositories/RedisNotificationRepository"; import { RedisNotificationRepository } from "../../src/repositories/notifications/RedisNotificationRepository";
interface RepositoryHolder { interface RepositoryHolder {
name: string; name: string;

View File

@@ -1,9 +1,9 @@
import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals"; import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals";
import { InMemoryParkingRepository, } from "../../src/repositories/InMemoryParkingRepository"; import { InMemoryParkingRepository, } from "../../src/repositories/parking/InMemoryParkingRepository";
import { IParkingStructure } from "../../src/entities/ParkingRepositoryEntities"; import { IParkingStructure } from "../../src/entities/ParkingRepositoryEntities";
import { ParkingStructureCountOptions } from "../../src/repositories/ParkingGetterRepository"; import { ParkingStructureCountOptions } from "../../src/repositories/parking/ParkingGetterRepository";
import { ParkingGetterSetterRepository } from "../../src/repositories/ParkingGetterSetterRepository"; import { ParkingGetterSetterRepository } from "../../src/repositories/parking/ParkingGetterSetterRepository";
import { RedisParkingRepository } from "../../src/repositories/RedisParkingRepository"; import { RedisParkingRepository } from "../../src/repositories/parking/RedisParkingRepository";
interface RepositoryHolder { interface RepositoryHolder {
name: string; name: string;

View File

@@ -1,5 +1,5 @@
import { beforeEach, describe, expect, jest, test } from "@jest/globals"; import { beforeEach, describe, expect, jest, test } from "@jest/globals";
import { UnoptimizedInMemoryShuttleRepository } from "../../src/repositories/UnoptimizedInMemoryShuttleRepository"; import { UnoptimizedInMemoryShuttleRepository } from "../../src/repositories/shuttle/UnoptimizedInMemoryShuttleRepository";
import { import {
generateMockEtas, generateMockEtas,
generateMockOrderedStops, generateMockOrderedStops,

View File

@@ -6,7 +6,7 @@ import {
} from "../testHelpers/apolloTestServerHelpers"; } from "../testHelpers/apolloTestServerHelpers";
import assert = require("node:assert"); import assert = require("node:assert");
import { addMockShuttleToRepository, addMockStopToRepository } from "../testHelpers/repositorySetupHelpers"; import { addMockShuttleToRepository, addMockStopToRepository } from "../testHelpers/repositorySetupHelpers";
import { ScheduledNotification } from "../../src/repositories/NotificationRepository"; import { ScheduledNotification } from "../../src/repositories/notifications/NotificationRepository";
// See Apollo documentation for integration test guide // See Apollo documentation for integration test guide
// https://www.apollographql.com/docs/apollo-server/testing/testing // https://www.apollographql.com/docs/apollo-server/testing/testing

View File

@@ -4,7 +4,7 @@ import {
generateMockShuttles, generateMockShuttles,
generateMockStops, generateMockStops,
} from "./mockDataGenerators"; } from "./mockDataGenerators";
import { ShuttleGetterSetterRepository } from "../../src/repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../../src/repositories/shuttle/ShuttleGetterSetterRepository";
export async function addMockRouteToRepository(repository: ShuttleGetterSetterRepository, systemId: string) { export async function addMockRouteToRepository(repository: ShuttleGetterSetterRepository, systemId: string) {
const mockRoutes = generateMockRoutes(); const mockRoutes = generateMockRoutes();