import { NextRequest } from "next/server";

import { env } from "@/config/env";
import { ResponseHelper } from "@/shared/infra/http/response-helper";
import { PrismaDomainsRepository } from "@/modules/domains/repositories/prisma-domains-repository";
import { SesIdentityProviderImpl } from "@/modules/domains/providers/ses-identity-provider-impl";
import { PollPendingDomainsUseCase } from "@/modules/domains/use-cases/poll-pending-domains-use-case";

/** Disparado por um cron externo (ex.: Vercel Cron) a cada poucos minutos para
 * reconsultar no SES os domínios ainda "Pendente" — não há scheduler embutido na app. */
export async function POST(request: NextRequest) {
  const secret = request.headers.get("x-cron-secret");

  if (!env.adminBootstrapSecret || secret !== env.adminBootstrapSecret) {
    return ResponseHelper.error("Não autorizado", 401);
  }

  const useCase = new PollPendingDomainsUseCase(new PrismaDomainsRepository(), new SesIdentityProviderImpl());
  const result = await useCase.execute();

  return ResponseHelper.success(result);
}
