import { logError } from "@/lib/logger";
import { error } from "@/lib/response";
import { zValidator } from "@hono/zod-validator";
import type { z } from "zod";

export const sanitizePayload = (schema: z.ZodSchema) => {
  return zValidator("json", schema, (result, c) => {
    if (!result.success) {
      const errors = result.error.issues.map((issue) => issue.message);
      logError("Payload validation failed", result.error);
      return error(c, errors.join(", "), 400);
    }
  });
};

export const sanitizeFormData = (schema: z.ZodSchema) => {
  return zValidator("form", schema, (result, c) => {
    if (!result.success) {
      const errors = result.error.issues.map((issue) => issue.message);
      logError(error);
      return error(c, errors.join(", "), 400);
    }
  });
};

export const sanitizeQueryParams = (schema: z.ZodSchema) => {
  return zValidator("query", schema, (result, c) => {
    if (!result.success) {
      const errors = result.error.issues.map((issue) => issue.message);
      logError(error);
      return error(c, errors.join(", "), 400);
    }
  });
};
