migrations/0010_job_service_evidence.sql
Rama main · réplica de lectura del repositorio original.
-- Owns: durable recurring-job mutation/run evidence and idempotency indexes.
-- Called by: src/job-service.ts only.
-- Does not own: schedules, session state, or authentication.
ALTER TABLE jobs ADD COLUMN idempotency_key TEXT;
CREATE UNIQUE INDEX IF NOT EXISTS idx_jobs_owner_idempotency ON jobs(owner_email, idempotency_key) WHERE idempotency_key IS NOT NULL;
CREATE TABLE IF NOT EXISTS job_events (
id TEXT PRIMARY KEY,
job_id TEXT NOT NULL,
owner_email TEXT NOT NULL,
action TEXT NOT NULL,
ok INTEGER NOT NULL,
detail_json TEXT NOT NULL,
idempotency_key TEXT,
created_at TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_job_events_owner_job ON job_events(owner_email, job_id, created_at DESC);
CREATE UNIQUE INDEX IF NOT EXISTS idx_job_run_idempotency ON job_events(owner_email, job_id, action, idempotency_key) WHERE idempotency_key IS NOT NULL;