"use server";

import { auth } from "@/config/auth";
import { AppError } from "@/core/errors/app-error";
import { PrismaContactExportJobsRepository } from "../repositories/prisma-contact-export-jobs-repository";
import { GetExportHistoryUseCase } from "../use-cases/get-export-history-use-case";

export async function getExportHistoryAction() {
  const session = await auth();
  if (!session?.user?.id) throw new Error("Unauthorized");

  try {
    const useCase = new GetExportHistoryUseCase(new PrismaContactExportJobsRepository());
    const { exports } = await useCase.execute({ createdById: session.user.id });

    return {
      exports: exports.map((item) => ({
        ...item,
        filters: (item.filters ?? {}) as Record<string, unknown>,
        createdAt: item.createdAt.toISOString(),
      })),
    };
  } catch (error) {
    if (error instanceof AppError) {
      throw new Error(error.message);
    }
    throw error;
  }
}
