44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import z from "zod";
|
|
|
|
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
|
import { timetableOptionsSchema } from "@homarr/integrations/types";
|
|
import {
|
|
timetableGetTimetableRequestHandler,
|
|
timetableSearchStationsRequestHandler,
|
|
} from "@homarr/request-handler/timetable";
|
|
|
|
import { createOneIntegrationMiddleware } from "../../middlewares/integration";
|
|
import { createTRPCRouter, publicProcedure } from "../../trpc";
|
|
|
|
export const timetableRouter = createTRPCRouter({
|
|
getTimetable: publicProcedure
|
|
.concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("timetable")))
|
|
.input(timetableOptionsSchema)
|
|
.query(async ({ input, ctx }) => {
|
|
const innerHandler = timetableGetTimetableRequestHandler.handler(ctx.integration, {
|
|
stationId: input.stationId,
|
|
limit: input.limit,
|
|
});
|
|
|
|
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
|
|
|
return data;
|
|
}),
|
|
searchStations: publicProcedure
|
|
.concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("timetable")))
|
|
.input(
|
|
z.object({
|
|
query: z.string(),
|
|
}),
|
|
)
|
|
.query(async ({ input, ctx }) => {
|
|
const innerHandler = timetableSearchStationsRequestHandler.handler(ctx.integration, {
|
|
query: input.query,
|
|
});
|
|
|
|
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
|
|
|
return data;
|
|
}),
|
|
});
|