import { router, publicProcedure, createCallerFactory, } from "../../trpc/server.js"; import { db, type Fact } from "../../database/lowdb.js"; export const facts = router({ fetchByConversationId: publicProcedure .input((x) => x as { conversationId: string }) .query(async ({ input: { conversationId } }) => { const conversationMessageIds = db.data.messages .filter((m) => m.conversationId === conversationId) .map((m) => m.id); const rows = await db.data.facts.filter((f) => conversationMessageIds.includes(f.sourceMessageId), ); return rows as Array; }), deleteOne: publicProcedure .input( (x) => x as { factId: string; }, ) .mutation(async ({ input: { factId } }) => { const deletedFactId = db.data.facts.findIndex( (fact) => fact.id === factId, ); if (deletedFactId === -1) throw new Error("Fact not found"); db.data.facts.splice(deletedFactId, 1); db.write(); return { ok: true }; }), }); export const createCaller = createCallerFactory(facts);