-- =====================================
-- SCHEMA DE ACTUALIZACIONES DE FIRMWARE
-- =====================================

-- Agregar columnas de firmware a la tabla devices
ALTER TABLE devices 
ADD COLUMN IF NOT EXISTS firmware_version VARCHAR(20) NULL COMMENT 'Versión actual del firmware (formato semver X.Y.Z)',
ADD COLUMN IF NOT EXISTS last_version_update TIMESTAMP NULL COMMENT 'Última vez que se actualizó la versión del firmware';

-- Tabla para registrar historial de actualizaciones de firmware
CREATE TABLE IF NOT EXISTS firmware_updates (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    device_id BIGINT UNSIGNED NOT NULL COMMENT 'ID del dispositivo que se actualizó',
    from_version VARCHAR(20) NULL COMMENT 'Versión anterior del firmware',
    to_version VARCHAR(20) NOT NULL COMMENT 'Versión objetivo del firmware',
    status ENUM('pending', 'in_progress', 'completed', 'failed') NOT NULL DEFAULT 'pending' COMMENT 'Estado de la actualización',
    progress INT DEFAULT 0 COMMENT 'Progreso de descarga (0-100)',
    firmware_url TEXT NULL COMMENT 'URL del archivo .bin',
    forced BOOLEAN DEFAULT FALSE COMMENT 'Si la actualización fue forzada',
    error_message TEXT NULL COMMENT 'Mensaje de error si la actualización falló',
    started_at TIMESTAMP NULL COMMENT 'Cuándo inició la actualización',
    completed_at TIMESTAMP NULL COMMENT 'Cuándo terminó la actualización',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_device_status (device_id, status),
    INDEX idx_created_at (created_at),
    FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
