import { ContactImportRow } from "@prisma/client";
import { AppError } from "@/core/errors/app-error";
import { ContactImportJobsRepository } from "../repositories/contact-import-jobs-repository";
import { ContactImportRowsRepository } from "../repositories/contact-import-rows-repository";

interface ExportImportErrorsUseCaseResponse {
  rows: ContactImportRow[];
}

export class ExportImportErrorsUseCase {
  constructor(
    private contactImportJobsRepository: ContactImportJobsRepository,
    private contactImportRowsRepository: ContactImportRowsRepository
  ) {}

  async execute({ jobId }: { jobId: string }): Promise<ExportImportErrorsUseCaseResponse> {
    const job = await this.contactImportJobsRepository.findById(jobId);
    if (!job) {
      throw AppError.notFound("Job de importação não encontrado");
    }

    const rows = await this.contactImportRowsRepository.findErrorsByJobId(jobId);
    return { rows };
  }
}
