-- ============================================================================
-- V4: Correction de la table system_logs
-- ============================================================================
-- Auteur: Lions Dev
-- Date: 2026-03-16
-- Description: Corrige les noms de colonnes et ajoute les colonnes manquantes
--              dans system_logs pour correspondre à l'entité JPA SystemLog
-- ============================================================================

-- 1. Renommer les colonnes avec des noms incorrects (si elles existent encore)
DO $$ BEGIN
    IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_logs' AND column_name='niveau') THEN
        ALTER TABLE system_logs RENAME COLUMN niveau TO level;
    END IF;
    IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='system_logs' AND column_name='stacktrace') THEN
        ALTER TABLE system_logs RENAME COLUMN stacktrace TO details;
    END IF;
END $$;

-- 2. Modifier utilisateur_id: UUID → VARCHAR(255) et renommer user_id
-- D'abord supprimer la colonne UUID, puis ajouter VARCHAR
ALTER TABLE system_logs DROP COLUMN IF EXISTS utilisateur_id;
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS user_id VARCHAR(255);

-- 3. Ajouter les colonnes manquantes
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS timestamp TIMESTAMP;
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS session_id VARCHAR(255);
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS endpoint VARCHAR(500);
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS http_status_code INTEGER;
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS date_modification TIMESTAMP;
ALTER TABLE system_logs ADD COLUMN IF NOT EXISTS modifie_par VARCHAR(255);

-- 4. Ajuster les types de colonnes existantes
ALTER TABLE system_logs ALTER COLUMN message TYPE VARCHAR(1000);
ALTER TABLE system_logs ALTER COLUMN ip_address TYPE VARCHAR(45);

-- 5. Définir timestamp NOT NULL après coup (si données existantes, timestamp = date_creation)
UPDATE system_logs SET timestamp = date_creation WHERE timestamp IS NULL;

DO $$
BEGIN
    BEGIN
        ALTER TABLE system_logs ALTER COLUMN timestamp SET NOT NULL;
    EXCEPTION WHEN OTHERS THEN
        NULL;
    END;
END $$;

-- 6. Recréer les index avec les bons noms de colonnes
DROP INDEX IF EXISTS idx_system_logs_niveau;
CREATE INDEX IF NOT EXISTS idx_system_log_level ON system_logs(level);
CREATE INDEX IF NOT EXISTS idx_system_log_timestamp ON system_logs(timestamp);
CREATE INDEX IF NOT EXISTS idx_system_log_source ON system_logs(source);
CREATE INDEX IF NOT EXISTS idx_system_log_user_id ON system_logs(user_id);

-- Message de confirmation
DO $$
BEGIN
    RAISE NOTICE '✅ Table system_logs corrigée (colonnes renommées et ajoutées)';
END $$;
