"""add_osint_items

Revision ID: b022osintitems
Revises: b021phasetiming
Create Date: 2026-02-17 22:00:00.000000

Add osint_items table for OSINT enrichment data linked to techniques.
"""

from alembic import op

revision = "b022osintitems"
down_revision = "b021phasetiming"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute("""
        CREATE TABLE IF NOT EXISTS osint_items (
            id           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
            technique_id UUID NOT NULL REFERENCES techniques(id),
            source_type  VARCHAR(50)  NOT NULL,
            source_url   TEXT         NOT NULL,
            title        VARCHAR(500) NOT NULL,
            description  TEXT,
            severity     VARCHAR(20),
            discovered_at TIMESTAMP   NOT NULL DEFAULT now(),
            reviewed     BOOLEAN      NOT NULL DEFAULT false,
            metadata     JSONB        DEFAULT '{}'::jsonb
        );

        CREATE INDEX IF NOT EXISTS ix_osint_items_technique_id
            ON osint_items (technique_id);

        CREATE INDEX IF NOT EXISTS ix_osint_items_source_type
            ON osint_items (source_type);

        CREATE INDEX IF NOT EXISTS ix_osint_items_reviewed
            ON osint_items (reviewed) WHERE NOT reviewed;
    """)


def downgrade() -> None:
    op.execute("""
        DROP TABLE IF EXISTS osint_items CASCADE;
    """)
