"""EVART-02: additive ledger migration; only the parent initializes/reconciles."""


def initialize(cur):
    cur.execute('''CREATE TABLE IF NOT EXISTS contextra_event_artifacts (
        event_id TEXT PRIMARY KEY, payload JSONB NOT NULL, relative_path TEXT NOT NULL,
        artifact_state TEXT NOT NULL, delivery_state TEXT NOT NULL DEFAULT 'PENDING',
        attempts INTEGER NOT NULL DEFAULT 0 CHECK (attempts BETWEEN 0 AND 2),
        reservation BIGINT NOT NULL DEFAULT 0, stored_bytes BIGINT NOT NULL DEFAULT 0,
        media JSONB NOT NULL DEFAULT '{}', body JSONB, error TEXT, delivery_error TEXT,
        http_status INTEGER, response JSONB, created_at DOUBLE PRECISION NOT NULL,
        updated_at DOUBLE PRECISION NOT NULL)''')
    cur.execute('''CREATE TABLE IF NOT EXISTS contextra_artifact_storage (
        id INTEGER PRIMARY KEY CHECK (id=1), paused BOOLEAN NOT NULL,
        observed_bytes BIGINT NOT NULL, observed_at DOUBLE PRECISION NOT NULL)''')
    cur.execute('''ALTER TABLE contextra_artifact_storage
        ADD COLUMN IF NOT EXISTS reserved_jobs INTEGER NOT NULL DEFAULT 0,
        ADD COLUMN IF NOT EXISTS reserved_bytes BIGINT NOT NULL DEFAULT 0,
        ADD COLUMN IF NOT EXISTS accounting_revision BIGINT NOT NULL DEFAULT 0''')
    cur.execute('''INSERT INTO contextra_artifact_storage
        (id,paused,observed_bytes,observed_at) VALUES (1,false,0,0) ON CONFLICT DO NOTHING''')
    cur.execute('''ALTER TABLE contextra_event_artifacts
        ADD COLUMN IF NOT EXISTS channel_key TEXT,
        ADD COLUMN IF NOT EXISTS confirmed_at DOUBLE PRECISION,
        ADD COLUMN IF NOT EXISTS claim_token TEXT,
        ADD COLUMN IF NOT EXISTS next_attempt_at DOUBLE PRECISION NOT NULL DEFAULT 0''')
    cur.execute('''UPDATE contextra_event_artifacts SET
        channel_key=COALESCE(channel_key,payload->>'streamId',payload->>'cameraId'),
        confirmed_at=COALESCE(confirmed_at,(payload->>'aiRecordedAtWallMs')::double precision/1000)
        WHERE channel_key IS NULL OR confirmed_at IS NULL''')
    cur.execute('''CREATE TABLE IF NOT EXISTS contextra_artifact_channels (
        channel_key TEXT PRIMARY KEY, reserved_jobs INTEGER NOT NULL DEFAULT 0,
        render_token TEXT, send_token TEXT,
        last_render_at DOUBLE PRECISION NOT NULL DEFAULT 0,
        last_send_at DOUBLE PRECISION NOT NULL DEFAULT 0)''')
    cur.execute('''CREATE INDEX IF NOT EXISTS contextra_artifact_reserved_idx
        ON contextra_event_artifacts(channel_key,confirmed_at) WHERE reservation>0''')
    cur.execute('''CREATE INDEX IF NOT EXISTS contextra_artifact_delivery_idx
        ON contextra_event_artifacts(confirmed_at,next_attempt_at)
        WHERE delivery_state IN ('PENDING','RETRY','CLAIMED','SENDING')''')
