export type ScrapeRunMode = "manual" | "scheduled";

let activeMode: ScrapeRunMode | null = null;
let startedAt: Date | null = null;

/** Exclusión mutua en proceso para scrapes manuales y programados. */
export const scrapeRunCoordinator = {
  tryStart(mode: ScrapeRunMode): boolean {
    if (activeMode !== null) return false;
    activeMode = mode;
    startedAt = new Date();
    return true;
  },

  finish(mode: ScrapeRunMode): void {
    if (activeMode !== mode) return;
    activeMode = null;
    startedAt = null;
  },

  status(): { running: boolean; mode: ScrapeRunMode | "idle"; startedAt: string | null } {
    return {
      running: activeMode !== null,
      mode: activeMode || "idle",
      startedAt: startedAt?.toISOString() || null,
    };
  },
};
