import { createTRPCContext } from "@planarchy/api"; import { appRouter } from "@planarchy/api/router"; import { createCallerFactory } from "@planarchy/api/trpc"; import { prisma } from "@planarchy/db"; import { auth } from "./auth.js"; /** * Server-side tRPC caller for RSC. * Usage: const trpc = await createCaller(); const result = await trpc.resource.list({}); */ export async function createCaller() { const session = await auth(); const dbUser = session?.user?.email ? await prisma.user.findUnique({ where: { email: session.user.email }, select: { id: true, systemRole: true, permissionOverrides: true }, }) : null; const ctx = createTRPCContext({ session, dbUser }); const callerFactory = createCallerFactory(appRouter); return callerFactory(ctx); }