-- ============================================================================
-- MIGRATION: Rimozione Foreign Key da LogAggiornamenti
-- Data: 2025-10-31
-- Descrizione: Rimuove il vincolo FK verso AnagraficaMedia per permettere
--              eventi sia su prodotti MediaTrack che Gemma
-- ============================================================================

-- SQLite non supporta ALTER TABLE DROP CONSTRAINT
-- Quindi dobbiamo ricreare la tabella

BEGIN TRANSACTION;

-- 1. Backup dati esistenti
CREATE TABLE LogAggiornamenti_backup AS
SELECT * FROM LogAggiornamenti;

-- 2. Drop tabella originale
DROP TABLE LogAggiornamenti;

-- 3. Ricrea tabella SENZA FK verso AnagraficaMedia
CREATE TABLE LogAggiornamenti (
    id_aggiornamento INTEGER PRIMARY KEY AUTOINCREMENT,
    id_media_fk TEXT,                             -- Riferimento a prodotto (MediaTrack o Gemma)
    id_distributore_fk INTEGER,                   -- Legacy field (deprecato)
    id_tipo_evento_fk INTEGER NOT NULL,           -- FK verso TipiEvento (manteniamo questo)
    data_evento TEXT,
    dettaglio_contesto TEXT,
    costo_richiesto_ita REAL,
    costo_richiesto_spa REAL,
    note TEXT,
    percorso_file TEXT,
    buyer_contatto TEXT,
    budget_produzione REAL,
    data_reminder TEXT,
    preferito INTEGER DEFAULT 0,
    venduto_a TEXT,
    privato INTEGER DEFAULT 0,
    created_by INTEGER DEFAULT 1,

    -- Manteniamo solo FK verso TipiEvento
    FOREIGN KEY (id_tipo_evento_fk) REFERENCES TipiEvento(id_tipo_evento)
    -- RIMOSSO: FOREIGN KEY (id_media_fk) REFERENCES AnagraficaMedia(id_media)
);

-- 4. Ripristina dati dal backup
INSERT INTO LogAggiornamenti
SELECT * FROM LogAggiornamenti_backup;

-- 5. Verifica conteggio
SELECT
    (SELECT COUNT(*) FROM LogAggiornamenti) as nuova_tabella,
    (SELECT COUNT(*) FROM LogAggiornamenti_backup) as backup;

-- 6. Drop backup (solo se tutto OK)
DROP TABLE LogAggiornamenti_backup;

-- 7. Crea indici per performance
CREATE INDEX IF NOT EXISTS idx_eventi_media
ON LogAggiornamenti(id_media_fk, data_evento DESC);

CREATE INDEX IF NOT EXISTS idx_eventi_tipo
ON LogAggiornamenti(id_tipo_evento_fk, data_evento DESC);

CREATE INDEX IF NOT EXISTS idx_eventi_preferiti
ON LogAggiornamenti(preferito, created_by)
WHERE preferito = 1;

CREATE INDEX IF NOT EXISTS idx_eventi_reminder
ON LogAggiornamenti(data_reminder, created_by)
WHERE data_reminder IS NOT NULL;

COMMIT;

-- ============================================================================
-- RISULTATO: LogAggiornamenti ora può contenere eventi per:
--   - Prodotti MediaTrack (es: FILM-123, SERIES-456)
--   - Prodotti Gemma (es: G_60558, G_ABC123)
--   - Qualsiasi altro tipo futuro
--
-- La validazione che il prodotto esista viene fatta in Python, non in SQL
-- ============================================================================
