From 529869671c7e3165dcc4140387d2b3f6e486e7ac Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 16 Apr 2025 15:36:12 +0800 Subject: [PATCH] feat: createContext --- server/src/index.ts | 3 ++- server/src/routers/index.ts | 4 ++-- server/src/trpc.ts | 19 ++++++++++++++----- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/server/src/index.ts b/server/src/index.ts index b0d2f01..d287884 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -19,6 +19,7 @@ import expiryRemovalScheduler from './containers/expiryChecker.js' import setupTest from './utils/setupTest.js' import logger from './utils/logger.js' import { appRouter } from './routers/index.js' +import { createContext } from './trpc.js' async function main() { if (!config.secret) { @@ -76,7 +77,7 @@ async function main() { '/trpc', trpcExpress.createExpressMiddleware({ router: appRouter, - // createContext, + createContext, }) ) app.use(errorHandler) diff --git a/server/src/routers/index.ts b/server/src/routers/index.ts index f83f4d2..1cd5c2a 100644 --- a/server/src/routers/index.ts +++ b/server/src/routers/index.ts @@ -1,9 +1,9 @@ import { router, publicProcedure } from '../trpc.js' export const appRouter = router({ - userList: publicProcedure.query(async () => { + userList: publicProcedure.query(async (opts) => { // Retrieve users from a datasource, this is an imaginary database - return 'hello' + return opts.ctx }), }) // Export type router type signature, diff --git a/server/src/trpc.ts b/server/src/trpc.ts index e946384..f2d2ecd 100644 --- a/server/src/trpc.ts +++ b/server/src/trpc.ts @@ -1,9 +1,18 @@ import { initTRPC } from '@trpc/server' -/** - * Initialization of tRPC backend - * Should be done only once per backend! - */ -const t = initTRPC.create() +import { CreateNextContextOptions } from '@trpc/server/adapters/next' + +export const createContext = async (opts: CreateNextContextOptions) => { + const { session, user, ip } = opts.req + return { + session, + user, + ip, + } +} + +export type AppContext = Awaited> + +const t = initTRPC.context().create() /** * Export reusable router and procedure helpers * that can be used throughout the router