import { ContactStatus } from "@prisma/client";
import { ContactsRepository } from "../repositories/contacts-repository";

interface UnsubscribeContactUseCaseRequest {
  contactId: string;
}

export class UnsubscribeContactUseCase {
  constructor(private contactsRepository: ContactsRepository) {}

  async execute({ contactId }: UnsubscribeContactUseCaseRequest): Promise<{ success: boolean }> {
    try {
      await this.contactsRepository.updateStatus(contactId, ContactStatus.UNSUBSCRIBED);
    } catch {
      // Idempotente: um link já usado ou um contactId inexistente não deve gerar erro
      // para quem clicou no link de descadastro.
    }

    return { success: true };
  }
}
