import { AppError } from "@/core/errors/app-error";
import { ContactsRepository, ContactWithLists } from "../repositories/contacts-repository";

interface GetContactByIdUseCaseRequest {
  id: string;
}

interface GetContactByIdUseCaseResponse {
  contact: ContactWithLists;
}

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

  async execute({ id }: GetContactByIdUseCaseRequest): Promise<GetContactByIdUseCaseResponse> {
    const contact = await this.contactsRepository.findByIdWithLists(id);
    if (!contact) {
      throw AppError.notFound("Contato não encontrado");
    }
    return { contact };
  }
}
