* feat: added stock price widget * fix: formatting * fix: broken lock file * fix: requested changes * fix: added parsing schema * fix: improve time range and interval inputs * fix: only return required data * fix: formatting * fix: deepsource tests * fix: moved all time frames into one location * fix: formatting * fix: requested changes * fix: formatting * fix: parse response data * fix: update packages * fix: typescript issues * fix: formatting * fix: broken lockfile --------- Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
24 lines
826 B
TypeScript
24 lines
826 B
TypeScript
import { z } from "zod";
|
|
|
|
import { fetchStockPriceHandler } from "@homarr/request-handler/stock-price";
|
|
|
|
import { stockPriceTimeFrames } from "../../../../widgets/src/stocks";
|
|
import { createTRPCRouter, publicProcedure } from "../../trpc";
|
|
|
|
const stockPriceInputSchema = z.object({
|
|
stock: z.string().nonempty(),
|
|
timeRange: z.enum(stockPriceTimeFrames.range),
|
|
timeInterval: z.enum(stockPriceTimeFrames.interval),
|
|
});
|
|
|
|
export const stockPriceRouter = createTRPCRouter({
|
|
getPriceHistory: publicProcedure.input(stockPriceInputSchema).query(async ({ input }) => {
|
|
const innerHandler = fetchStockPriceHandler.handler({
|
|
stock: input.stock,
|
|
timeRange: input.timeRange,
|
|
timeInterval: input.timeInterval,
|
|
});
|
|
return await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
|
}),
|
|
});
|