48 lines
2.2 KiB
TypeScript
48 lines
2.2 KiB
TypeScript
/**
|
||
* 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 };
|