/**
 * URL para <img src>. Uploads são servidos por /api/uploads/... para evitar 404
 * de ficheiros em public/uploads em produção.
 */
export function resolveMediaUrl(url: string | null | undefined): string | null {
  if (!url?.trim()) return null;
  const u = url.trim();
  if (u.startsWith("/api/uploads/")) return u;
  if (u.startsWith("/uploads/")) return `/api${u}`;
  if (u.startsWith("/") && !u.startsWith("//")) return u;
  if (!u.startsWith("http://") && !u.startsWith("https://")) return null;
  try {
    const parsed = new URL(u);
    const p = parsed.pathname;
    if (p.startsWith("/uploads/")) return `/api${p}`;
    if (p.startsWith("/api/uploads/")) return p;
    return u;
  } catch {
    return null;
  }
}

/** Gravar no banco o caminho retornado pelo upload (ex.: /api/uploads/uuid.png) */
export function uploadPathForDb(path: string): string {
  if (path.startsWith("http")) {
    try {
      const p = new URL(path).pathname || path;
      return p.startsWith("/uploads/") ? `/api${p}` : p;
    } catch {
      return path;
    }
  }
  const normalized = path.startsWith("/") ? path : `/${path}`;
  return normalized.startsWith("/uploads/") ? `/api${normalized}` : normalized;
}
