import { z } from "zod"; import { InputParseError } from "../../entities/errors/common"; import type { Cookie } from "../../entities/models/cookie"; import type { ISignInUseCase } from "../../application/use-cases/sign-in.use-case"; const inputSchema = z.object({ username: z.string().min(3).max(31), password: z.string().min(6).max(255), }); export type ISignInController = ReturnType; export const signInController = (signInUseCase: ISignInUseCase) => async (input: Partial>): Promise => { const parsed = inputSchema.safeParse(input); if (!parsed.success) { throw new InputParseError("Invalid sign-in input", { cause: parsed.error }); } const { cookie } = await signInUseCase(parsed.data); return cookie; };