"use server";

import { revalidatePath } from "next/cache";

import { auth } from "@/config/auth";
import { SesSuppressionProviderImpl } from "@/modules/ses-webhooks/providers/ses-suppression-provider-impl";
import { PrismaSuppressedEmailsRepository } from "../repositories/prisma-suppressed-emails-repository";
import { RemoveSuppressedEmailUseCase } from "../use-cases/remove-suppressed-email-use-case";

export async function removeSuppressedEmailAction(email: string) {
  const session = await auth();
  if (!session?.user?.id) throw new Error("Unauthorized");

  const useCase = new RemoveSuppressedEmailUseCase(
    new PrismaSuppressedEmailsRepository(),
    new SesSuppressionProviderImpl()
  );
  const result = await useCase.execute({ email });

  revalidatePath("/contacts/suppression");

  return result;
}
