import { z } from "zod"; import { router, publicProcedure } from "@repo/core-shared/trpc/init"; import { createArticleController, getArticlesController, getArticleBySlugController, } from "@/interface-adapters/controllers/articles.controller"; export const blogRouter = router({ articleBySlug: publicProcedure .input(z.object({ slug: z.string().min(1) })) .query(({ input }) => getArticleBySlugController(input)), listArticles: publicProcedure .input( z .object({ status: z.string().optional(), authorId: z.string().optional(), limit: z.number().optional(), offset: z.number().optional(), }) .optional(), ) .query(({ input }) => getArticlesController(input ?? {})), createArticle: publicProcedure .input( z.object({ title: z.string().min(1).max(255), content: z.unknown().optional(), authorId: z.string(), slug: z.string().optional(), }), ) .mutation(({ input }) => createArticleController(input)), }); export type BlogRouter = typeof blogRouter;