/** * 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; export type RouterOutputs = inferRouterOutputs; export type { TrpcContext };