/**
 * Admin LLM-job state transitions (pure DB layer).
 * Functions ONLY mutate rows. Enqueue (sendLlmJobToQueue) is owned by the HTTP routes,
 * keeping this module free of CF bindings and unit-testable.
 * Transition guards make every action idempotent: wrong source state updates 0 rows, returns false.
 */
import type { DrizzleClient } from '@/server/db/client.js';
import {
  cancelLlmJobWrite,
  retryFailedLlmJobsWrite,
  retryLlmJobWrite,
} from '@/server/db/queries/admin-resources/llm-jobs.js';

export async function retryLlmJob(db: DrizzleClient, id: string): Promise<boolean> {
  return retryLlmJobWrite(db, id);
}

export async function cancelLlmJob(db: DrizzleClient, id: string): Promise<boolean> {
  return cancelLlmJobWrite(db, id);
}

export async function retryFailedLlmJobs(db: DrizzleClient, limit?: number): Promise<string[]> {
  return retryFailedLlmJobsWrite(db, limit);
}
