import prisma from './prisma';

/**
 * Recompute WorkerProfile.totalJobs from completed board jobs + completed hire invitations.
 */
export async function syncWorkerTotalJobs(workerId: string) {
  const [completedJobs, completedHires] = await Promise.all([
    prisma.job.count({
      where: { workerId, status: 'COMPLETED', deletedAt: null },
    }),
    prisma.hireInvitation.count({
      where: { workerId, status: 'COMPLETED' },
    }),
  ]);

  const totalJobs = completedJobs + completedHires;

  await prisma.workerProfile.update({
    where: { id: workerId },
    data: { totalJobs },
  });

  return totalJobs;
}

export async function syncAllWorkerTotalJobs() {
  const workers = await prisma.workerProfile.findMany({
    where: { deletedAt: null },
    select: { id: true },
  });
  for (const { id } of workers) {
    await syncWorkerTotalJobs(id);
  }
  return workers.length;
}
