-- Oppgave 15.3: Jobbkø-tabell -- -- Denne tabellen har vært referert fra jobs.rs og maintenance.rs -- men manglet som formell migrasjon. Oppretter den nå med enum, -- indekser og kolonner som matcher eksisterende Rust-kode. CREATE TYPE job_status AS ENUM ('pending', 'running', 'completed', 'error', 'retry'); CREATE TABLE job_queue ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), collection_node_id UUID REFERENCES nodes(id) ON DELETE CASCADE, job_type TEXT NOT NULL, payload JSONB NOT NULL DEFAULT '{}', status job_status NOT NULL DEFAULT 'pending', priority SMALLINT NOT NULL DEFAULT 0, result JSONB, error_msg TEXT, attempts SMALLINT NOT NULL DEFAULT 0, max_attempts SMALLINT NOT NULL DEFAULT 3, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), started_at TIMESTAMPTZ, completed_at TIMESTAMPTZ, scheduled_for TIMESTAMPTZ NOT NULL DEFAULT now() ); -- Indeks for effektiv dequeue: henter ventende/retry-jobber sortert etter prioritet CREATE INDEX idx_job_queue_pending ON job_queue (priority DESC, scheduled_for ASC) WHERE status IN ('pending', 'retry'); -- Indeks for admin-oversikt: filtrer på status CREATE INDEX idx_job_queue_status ON job_queue (status, created_at DESC); -- Indeks for filtrering på jobbtype CREATE INDEX idx_job_queue_type ON job_queue (job_type, created_at DESC);