import { z } from "zod"; import { InputParseError } from "../../entities/errors/common"; import type { Media } from "../../entities/models/media"; import type { IListMediaUseCase } from "../../application/use-cases/list-media.use-case"; const inputSchema = z.object({ limit: z.number().optional(), offset: z.number().optional(), }); export type IListMediaController = ReturnType; export const listMediaController = (listMediaUseCase: IListMediaUseCase) => async (input: Partial>): Promise => { const parsed = inputSchema.safeParse(input); if (!parsed.success) { throw new InputParseError("Invalid list-media input", { cause: parsed.error }); } return listMediaUseCase(parsed.data); };