-- Promoot task naar IN_PROGRESS zodra een ClaudeJob CLAIMED of RUNNING wordt.
--
-- Aanvulling op de DONE-trigger uit
-- 20260501110000_sync_task_status_from_claude_job. Daar handelen we de
-- afronding af; hier handelen we de aanvang. Zonder deze trigger blijft
-- een task in de "Te doen"-kolom staan terwijl de agent er al mee bezig
-- is — verwarrend voor de gebruiker.
--
-- Voorwaarde: task moet nog op TO_DO staan. We forceren niet vanuit
-- IN_PROGRESS/REVIEW/DONE terug — die zijn handmatig gezet door de
-- gebruiker en hebben prioriteit.
--
-- De bestaande notify_task_change-trigger op tasks vuurt automatisch de
-- pg_notify naar /api/realtime/solo zodat de UI synct.

CREATE OR REPLACE FUNCTION promote_task_on_claude_job_claim() RETURNS trigger AS $$
BEGIN
  IF NEW.status IN ('CLAIMED', 'RUNNING') THEN
    IF (TG_OP = 'INSERT')
       OR (TG_OP = 'UPDATE' AND OLD.status IS DISTINCT FROM NEW.status)
    THEN
      UPDATE tasks
        SET status = 'IN_PROGRESS', updated_at = now()
        WHERE id = NEW.task_id AND status = 'TO_DO';
    END IF;
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

DROP TRIGGER IF EXISTS claude_job_claim_to_task ON claude_jobs;
CREATE TRIGGER claude_job_claim_to_task
AFTER INSERT OR UPDATE OF status ON claude_jobs
FOR EACH ROW
EXECUTE FUNCTION promote_task_on_claude_job_claim();
