import { NextResponse } from "next/server";
import { createClient } from "@/lib/supabase-server";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

/**
 * Os avisos do sino da comunidade de modelos: os modelos aprovados nos
 * últimos 30 dias de quem a pessoa segue (só os que saíram depois que ela
 * começou a seguir). Pelo cliente da pessoa: o RLS deixa ler só quem ela segue
 * e os modelos aprovados. Sem a migration 228, volta vazio.
 */
export async function GET() {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();
  if (!user) return NextResponse.json({ avisos: [] }, { status: 401 });
  const { data: sigo, error } = await supabase.from("comunidade_seguidores").select("autor,created_at").eq("usuario", user.id).limit(500);
  if (error || !sigo?.length) return NextResponse.json({ avisos: [] }, { headers: { "Cache-Control": "no-store" } });
  const desde = new Map((sigo as Array<{ autor: string; created_at: string }>).map((s) => [s.autor, s.created_at]));
  const limite = new Date(Date.now() - 30 * 86400000).toISOString();
  const { data: modelos } = await supabase
    .from("modelos_da_comunidade")
    .select("id,user_id,nome,tipo,miniatura,autor_nome,autor_avatar,avaliado_em")
    .eq("status", "aprovado")
    .in("user_id", [...desde.keys()])
    .gte("avaliado_em", limite)
    .order("avaliado_em", { ascending: false })
    .limit(30);
  const avisos = ((modelos || []) as Array<{ id: string; user_id: string; nome: string; tipo: string; miniatura: string | null; autor_nome: string; autor_avatar: string | null; avaliado_em: string }>)
    .filter((m) => m.avaliado_em >= (desde.get(m.user_id) || ""))
    .map((m) => ({ id: m.id, nome: m.nome, tipo: m.tipo, autor: m.autor_nome, avatar: m.autor_avatar, miniatura: m.miniatura, em: m.avaliado_em }));
  return NextResponse.json({ avisos }, { headers: { "Cache-Control": "no-store" } });
}
