Organize seus routers tRPC de forma escalável. Aprenda aninhamento, separação de responsabilidades e melhores práticas para projetos grandes.
Escalabilidade: Routers bem organizados facilitam manutenção e evolução do projeto.
Colaboração: Estrutura clara permite que equipes trabalhem em paralelo sem conflitos.
// 📁 server/trpc/routers/_app.ts
import { router } from '../trpc';
import { userRouter } from './user';
import { postRouter } from './post';
import { commentRouter } from './comment';
// 🎯 Router principal com sub-routers
export const appRouter = router({
user: userRouter,
post: postRouter,
comment: commentRouter,
});
export type AppRouter = typeof appRouter;
// 📁 server/trpc/routers/user.ts
export const userRouter = router({
// 🔍 Queries
getProfile: protectedProcedure
.input(z.string())
.query(({ input, ctx }) => {
return ctx.db.user.findUnique({
where: { id: input }
});
}),
// 📝 Mutations
updateProfile: protectedProcedure
.input(updateUserSchema)
.mutation(({ input, ctx }) => {
return ctx.db.user.update({
where: { id: ctx.user.id },
data: input
});
}),
});
Confira o exemplo interativo desta aula rodando em tempo real:
Acesse: /curso-trpc/modulo-1/aula-3/live-mode