import { z } from "zod"; import { mediaSchema } from "../../entities/models/media"; import type { IMediaRepository } from "../repositories/media.repository.interface"; // ── Input ──────────────────────────────────────────────────────────────── export const listMediaInputSchema = z .object({ limit: z.number().int().positive().optional(), offset: z.number().int().nonnegative().optional(), }) .strict(); export type ListMediaInput = z.infer; // ── Output ─────────────────────────────────────────────────────────────── export const listMediaOutputSchema = z.array(mediaSchema); export type ListMediaOutput = z.infer; // ── Use case ───────────────────────────────────────────────────────────── export type IListMediaUseCase = ReturnType; export const listMediaUseCase = (mediaRepository: IMediaRepository) => async (input: ListMediaInput): Promise => { const result = await mediaRepository.listMedia(input); return listMediaOutputSchema.parse(result); };