extract notification repository to interface

This commit is contained in:
2025-03-27 10:06:42 -07:00
parent c517d93e3a
commit 7379840070
5 changed files with 28 additions and 23 deletions

View File

@@ -2,10 +2,7 @@ import { ShuttleGetterRepository } from "../../repositories/ShuttleGetterReposit
import { TupleKey } from "../../types/TupleKey";
import { IEta } from "../../entities/entities";
import { AppleNotificationSender, NotificationAlertArguments } from "../senders/AppleNotificationSender";
import {
NotificationLookupArguments,
ScheduledNotification
} from "../../repositories/NotificationRepository";
import { NotificationLookupArguments, ScheduledNotification } from "../../repositories/NotificationRepository";
type DeviceIdSecondsThresholdAssociation = { [key: string]: number };

View File

@@ -0,0 +1,19 @@
import { NotificationLookupArguments, NotificationRepository, ScheduledNotification } from "./NotificationRepository";
export class InMemoryNotificationRepository implements NotificationRepository {
async getAllNotificationsForShuttleAndStopId(shuttleId: string, stopId: string) {
return [];
}
async getSecondsThresholdForNotificationIfExists(lookupArguments: NotificationLookupArguments) {
return 0;
}
async addOrUpdateNotification(notification: ScheduledNotification) {
}
async deleteNotificationIfExists(lookupArguments: NotificationLookupArguments) {
}
}

View File

@@ -14,20 +14,9 @@ export interface ScheduledNotification extends NotificationLookupArguments {
secondsThreshold: number;
}
export class NotificationRepository {
public async getAllNotificationsForShuttleAndStopId(shuttleId: string, stopId: string) {
}
public async getSecondsThresholdForNotificationIfExists(lookupArguments: NotificationLookupArguments) {
}
public async addOrUpdateNotification(notification: ScheduledNotification) {
}
public async deleteNotificationIfExists(lookupArguments: NotificationLookupArguments) {
}
export interface NotificationRepository {
getAllNotificationsForShuttleAndStopId(shuttleId: string, stopId: string): Promise<ScheduledNotification[]>;
getSecondsThresholdForNotificationIfExists(lookupArguments: NotificationLookupArguments): Promise<number>;
addOrUpdateNotification(notification: ScheduledNotification): Promise<void>;
deleteNotificationIfExists(lookupArguments: NotificationLookupArguments): Promise<void>;
}

View File

@@ -2,8 +2,8 @@ import { NotificationResponse, Resolvers } from "../generated/graphql";
import { ServerContext } from "../ServerContext";
import {
ETANotificationScheduler,
ScheduledNotification
} from "../notifications/schedulers/ETANotificationScheduler";
import { ScheduledNotification } from "../repositories/NotificationRepository";
export const MutationResolvers: Resolvers<ServerContext> = {
Mutation: {
@@ -23,7 +23,7 @@ export const MutationResolvers: Resolvers<ServerContext> = {
}
}
const notificationData: NotificationSchedulingArguments = {
const notificationData: ScheduledNotification = {
...args.input,
secondsThreshold: typeof args.input.secondsThreshold === 'number'
? args.input.secondsThreshold

View File

@@ -1,6 +1,6 @@
import { describe, it } from "@jest/globals";
describe("NotificationRepository", () => {
describe("InMemoryNotificationRepository", () => {
describe("getAllNotificationsForShuttleAndStopId", () => {
it("gets notifications correctly", async () => {