import { query } from "./lib/clickhouse"; import { publicProcedure, RpcType, router } from "./trpc"; import { Object as ObjectT, String as StringT } from "@sinclair/typebox"; export const getChartData = publicProcedure .input( RpcType( ObjectT({ underlying: StringT({ maxLength: 5 }), lookbackPeriodStart: StringT(), lookbackPeriodEnd: StringT(), }) ) ) .query(async (opts) => { const { underlying, lookbackPeriodStart, lookbackPeriodEnd } = opts.input; return await query<[number, number]>( ` SELECT toUnixTimestamp(tsStart) as x, open as y FROM stock_aggregates WHERE symbol = '${underlying}' AND tsStart >= '${lookbackPeriodStart} 00:00:00' AND tsStart <= '${lookbackPeriodEnd} 00:00:00' ORDER BY x ASC `, "JSONEachRow" ); }); export default router({ getChartData, });