"""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; """)