import { TRPCError } from "@trpc/server"; import { ChatLog } from "indite-js/schemas"; import { formatLogDetails } from "../logs/helpers/formatLogDetails"; import { getSession } from "../queries/getSession"; import { saveLogs } from "../queries/saveLogs"; type Props = { sessionId: string; clientLogs: ChatLog[]; }; export const saveClientLogs = async ({ sessionId, clientLogs }: Props) => { const session = await getSession(sessionId); if (!session) { throw new TRPCError({ code: "NOT_FOUND", message: "Session not found.", }); } const resultId = session.state.botsQueue[0].resultId; if (!resultId) { throw new TRPCError({ code: "NOT_FOUND", message: "Result not found.", }); } try { await saveLogs( clientLogs.map((log) => ({ ...log, resultId, details: formatLogDetails(log.details), })) ); return { message: "Logs successfully saved.", }; } catch (e) { console.error("Failed to save logs", e); throw new TRPCError({ code: "INTERNAL_SERVER_ERROR", message: "Failed to save logs.", }); } };