Files
Nexus/apps/web/src/server/trpc.ts
T

25 lines
802 B
TypeScript

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);
}