CREATE TABLE IF NOT EXISTS mail_index_jobs ( id BIGSERIAL PRIMARY KEY, job_type TEXT NOT NULL CHECK (job_type IN ('index', 'delete')), tenant_slug TEXT NOT NULL, message_id TEXT NOT NULL, payload JSONB NOT NULL DEFAULT '{}'::jsonb, status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'succeeded', 'failed')), attempts INT NOT NULL DEFAULT 0, max_attempts INT NOT NULL DEFAULT 5, available_at TIMESTAMPTZ NOT NULL DEFAULT now(), locked_at TIMESTAMPTZ, locked_by TEXT, last_error TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() )