-- Migración 005: tabla de escaneos de red (network_scans).
--
-- Persistencia de escaneos de reconocimiento de red (whois, rdap, dns, nmap,
-- traceroute, ping) que otras herramientas del ecosistema OSINT registran vía
-- HTTP en POST /api/scan. Vive en el schema main (no en derived) porque lleva
-- note_path: cada escaneo referencia la nota .md del vault donde se documenta su
-- salida (dominios/<slug>/recon/<...>.md). La regla dura "derived sin note_path"
-- no aplica aquí — esta es una maestra con referencia a notas, igual que persons
-- o contacts.
--
-- A diferencia de las maestras de espejo puro (notes, organizations, ...) y de
-- las DAV (contacts, events), network_scans NO se reconstruye en ningún ingest:
-- la pueblan los escaneos vía /api/scan y nunca se trunca. Por eso ni
-- ingest_vault ni ingest_dav la tocan.
--
-- Aditiva e idempotente: CREATE TABLE IF NOT EXISTS + CREATE INDEX IF NOT EXISTS.

CREATE TABLE IF NOT EXISTS network_scans (
    id          VARCHAR PRIMARY KEY,        -- "<target_slug>:<scan_type>:<ts_compact>"
    target      VARCHAR NOT NULL,
    target_slug VARCHAR NOT NULL,
    scan_type   VARCHAR NOT NULL,           -- whois|rdap|dns|nmap|traceroute|ping
    tool        VARCHAR,
    scan_ts     TIMESTAMP NOT NULL,
    note_path   VARCHAR NOT NULL,           -- dominios/<slug>/recon/<...>.md
    summary     JSON,
    created_at  TIMESTAMP DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_network_scans_slug ON network_scans(target_slug);
CREATE INDEX IF NOT EXISTS idx_network_scans_type ON network_scans(scan_type);
