import { ApiError } from "@/lib/api";

export function validateUsername(raw: string): string {
  const trimmed = raw.trim();
  if (trimmed.length < 2 || trimmed.length > 16) {
    throw new ApiError("用户名需要 2-16 个字符");
  }
  return trimmed;
}

export function validatePassword(password: string, label = "密码"): void {
  if (password.length < 6) {
    throw new ApiError(`${label}至少 6 个字符`);
  }
  if (password.length > 128) {
    throw new ApiError(`${label}不能超过 128 个字符`);
  }
}

export function validateEmail(email: string): void {
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
    throw new ApiError("邮箱格式不正确");
  }
}

export function validateIdeaContent(raw: unknown): string {
  if (!raw || typeof raw !== "string" || raw.trim().length === 0) {
    throw new ApiError("内容不能为空");
  }
  const trimmed = raw.trim();
  if (trimmed.length > 200) {
    throw new ApiError("内容不能超过 200 字");
  }
  return trimmed;
}

export function validateRoomName(raw: unknown, fallback = "我们的周末"): string {
  const trimmed = ((raw as string) || "").trim() || fallback;
  if (trimmed.length > 30) {
    throw new ApiError("房间名不能超过 30 个字");
  }
  return trimmed;
}

export function requireString(value: unknown, fieldName: string): string {
  if (!value || typeof value !== "string" || !value.trim()) {
    throw new ApiError(`${fieldName}不能为空`);
  }
  return value;
}
