@ragrabbit/mcp

by madarco
Verified
import { UserError } from "@repo/core"; import db from "@repo/db"; import { eq } from "@repo/db/drizzle"; import { Indexed, indexedTable } from "@repo/db/schema"; import { logger } from "@repo/logger"; import { generateEmbeddings } from "./llamaindex"; export async function generateEmbeddingsDb(indexedId: number) { logger.info("Embedding content from db", { indexedId }); const indexed = await db.query.indexedTable.findFirst({ where: eq(indexedTable.id, indexedId), with: { indexedContent: true, }, }); if (!indexed) { throw new UserError("Index page not found"); } if (!["SCRAPED", "DONE"].includes(indexed.status)) { throw new UserError("Index page not scraped yet"); } logger.debug("Generating embeddings", { indexedId: indexed.id, url: indexed.url, title: indexed.title?.substring(0, 20), }); const nodeIds = await generateEmbeddings(indexed.indexedContent.content, { id: "" + indexed.id, url: indexed.url, title: indexed.title, description: indexed.description, organizationId: indexed.organizationId, }); logger.info("Generated embeddings", { nodeIds }); await db .update(indexedTable) .set({ status: "DONE", indexedAt: new Date(), } as Indexed) .where(eq(indexedTable.id, indexed.id)); return { success: true, }; }