"use server";

import * as z from "zod";
import { relay, type ActionFailure } from "@/lib/actions";
import { apiFetch } from "@/lib/api";
import { jobSchema, type Job } from "@/lib/jobs";
import { requireOrg } from "@/lib/org";

// Server Action du **socle** : elle ne connaît aucun module métier, seulement `GET /jobs/{id}`.
// C'est elle que `JobWatcher` interroge toutes les ~2 s, pour l'import CSV aujourd'hui et
// pour le crawl ou GSC demain, sans une ligne de plus.

export async function jobStatusAction(jobId: unknown): Promise<{ job: Job } | ActionFailure> {
  await requireOrg();
  const parsed = z.uuid().safeParse(jobId);
  if (!parsed.success) return { error: "Identifiant de job invalide", status: 422 };
  try {
    return { job: jobSchema.parse(await apiFetch<unknown>(`/jobs/${parsed.data}`)) };
  } catch (error) {
    return relay(error);
  }
}
