app-template/packages/trpc/src/router/index.ts

48 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* appRouter 权威定义(对外从 `../index.js` / 本文件引入)。
* 注意:`user.router.ts` 与这里的 userRouter 内容重复,改路由时两边同步或收敛到一处。
*/
import { t } from "../context.js";
import type { inferRouterInputs, inferRouterOutputs } from "@trpc/server";
import { userSchemas } from "@app/types";
import { userService } from "../services/user.service.js";
import type { TrpcContext } from "../context.js";
import { authRouter } from "./auth.router.js";
import { mediaRouter } from "./media.router.js";
import { settingsRouter } from "./settings.router.js";
// ─── User router ────────────────────────────────────────────────────────
export const userRouter = t.router({
list: t.procedure.input(userSchemas.list).query(({ input }) => userService.list(input)),
get: t.procedure.input(userSchemas.get).query(({ input }) => userService.get(input)),
create: t.procedure
.input(userSchemas.create)
.mutation(({ input }) => userService.create(input)),
update: t.procedure
.input(userSchemas.update)
.mutation(({ input }) => userService.update(input)),
delete: t.procedure
.input(userSchemas.delete)
.mutation(({ input }) => userService.delete(input)),
});
// ─── Root app router ────────────────────────────────────────────────────
// 按域嵌套:user.list / auth.login……与前端 trpc.user.* 一致;
// 不可 mergeRouters 平铺(list/get 等同名会 Duplicate key)
export const appRouter = t.router({
user: userRouter,
auth: authRouter,
media: mediaRouter,
settings: settingsRouter,
});
// ─── Type re-exports ────────────────────────────────────────────────────
export type AppRouter = typeof appRouter;
export type RouterInputs = inferRouterInputs<AppRouter>;
export type RouterOutputs = inferRouterOutputs<AppRouter>;
export type { TrpcContext };