import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { radarrReleaseTypes } from "@homarr/integrations/types"; import { calendarMonthRequestHandler } from "@homarr/request-handler/calendar"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; export const calendarRouter = createTRPCRouter({ findAllEvents: publicProcedure .input( z.object({ year: z.number(), month: z.number(), releaseType: z.array(z.enum(radarrReleaseTypes)), showUnmonitored: z.boolean(), }), ) .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar"))) .query(async ({ ctx, input }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { const innerHandler = calendarMonthRequestHandler.handler(integration, input); const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return data; }), ); return results.flat(); }), });