import { ContactExportJob } from "@prisma/client";
import { prisma } from "@/shared/infra/prisma/prisma-client";
import {
  ContactExportJobSummary,
  ContactExportJobsRepository,
  CreateExportJobData,
} from "./contact-export-jobs-repository";

export class PrismaContactExportJobsRepository implements ContactExportJobsRepository {
  async create(data: CreateExportJobData): Promise<ContactExportJob> {
    return prisma.contactExportJob.create({
      data: {
        filters: data.filters as never,
        columns: data.columns,
        totalRows: data.totalRows,
        csvContent: data.csvContent,
        createdById: data.createdById,
      },
    });
  }

  async findById(id: string): Promise<ContactExportJob | null> {
    return prisma.contactExportJob.findUnique({ where: { id } });
  }

  async findByCreatedById(createdById: string): Promise<ContactExportJobSummary[]> {
    return prisma.contactExportJob.findMany({
      where: { createdById },
      orderBy: { createdAt: "desc" },
      select: {
        id: true,
        filters: true,
        columns: true,
        totalRows: true,
        createdById: true,
        createdAt: true,
      },
    });
  }
}
