import { Contact } from "@prisma/client";
import { updateContactSchema } from "../dtos/update-contact-schema";
import { ContactsRepository } from "../repositories/contacts-repository";

interface UpdateContactUseCaseRequest {
  id: string;
  body: unknown;
}

interface UpdateContactUseCaseResponse {
  contact: Contact;
}

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

  async execute({ id, body }: UpdateContactUseCaseRequest): Promise<UpdateContactUseCaseResponse> {
    const data = updateContactSchema.parse(body);
    const contact = await this.contactsRepository.update(id, data);
    return { contact };
  }
}
