Beta
Search
CTRLK

tRPC Adapter

Use Filenest with tRPC

Add Filenest to your tRPC router

This guide assumes you have already instantiated a provider. If not, check out this section.

Install dependencies

If you have already installed @filenest/adapter-trpc, you can skip this step.

npm i @filenest/adapter-trpc

Initialize the adapter

This example is using the uploadthing provider as the data source.

/path/to/your/trpc/router.ts
import { initTRPC } from "@trpc/server"
import { initTRPCAdapter } from "@filenest/adapter-trpc"
import { UploadThing } from "@filenest/provider-uploadthing"
 
const provider = new UploadThing({
  UPLOADTHING_TOKEN: process.env.UPLOADTHING_TOKEN!,
})
 
// Your usual tRPC initialization
export const t = initTRPC.create()
 
const filenestRouter = initTRPCAdapter(provider).create()
 
// Add Filenest router to your existing appRouter
export const appRouter = t.router({
  filenest: filenestRouter,
})

Middleware

The use of middleware is strongly recommended to prevent unauthorized access to your provider.

const authMiddleware = t.middleware(({ ctx, next }) => {
  if (!ctx.isAuthed) {
    throw new TRPCError({
      code: "UNAUTHORIZED",
      message: "Not authenticated"
    })
  }
 
  next()
})
 
const filenestRouter = initTRPCAdapter(provider)
  .use(authMiddleware)
  .create()

Custom Procedure

By default, the adapter uses a t.procedure as the procedure for all routes. You can pass the adapter a different procedure. This may be a more elegant solution for adding a bunch of middleware.

const adminProcedure = t.procedure.use(authMiddleware).use(anotherMiddleware)
 
const filenestRouter = initTRPCAdapter(provider)
  .procedure(adminProcedure)
  .create()

You can use middleware and a custom procedure at the same time.

const filenestRouter = initTRPCAdapter(provider)
  .procedure(adminProcedure)
  .use(loggerMiddleware)
  .create()

On this page