getConnection(); // Tabla principal: solicitudes de carga de archivos $pdo->exec(" CREATE TABLE IF NOT EXISTS file_requests ( id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR(64) NOT NULL UNIQUE COMMENT 'Token único para el enlace público', user_id INT NOT NULL COMMENT 'FK a users.id (contacto de WhatsApp)', phone_number VARCHAR(20) NOT NULL COMMENT 'Teléfono del cliente', requested_by INT DEFAULT NULL COMMENT 'FK a admin_users.id (operador que solicitó)', status ENUM('pending','uploaded','expired','cancelled') DEFAULT 'pending', max_file_size BIGINT DEFAULT 52428800 COMMENT 'Tamaño máximo en bytes (default 50MB)', allowed_types VARCHAR(255) DEFAULT 'image,document' COMMENT 'Tipos permitidos separados por coma', message_sent_id VARCHAR(255) DEFAULT NULL COMMENT 'ID del mensaje de WhatsApp enviado', expires_at DATETIME NOT NULL COMMENT 'Fecha de expiración del enlace', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_token (token), INDEX idx_user_id (user_id), INDEX idx_phone (phone_number), INDEX idx_status (status), INDEX idx_expires (expires_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci "); echo "✅ Tabla file_requests creada correctamente\n"; // Tabla de archivos subidos por los clientes $pdo->exec(" CREATE TABLE IF NOT EXISTS file_request_uploads ( id INT AUTO_INCREMENT PRIMARY KEY, request_id INT NOT NULL COMMENT 'FK a file_requests.id', original_filename VARCHAR(255) NOT NULL, stored_filename VARCHAR(255) NOT NULL COMMENT 'Nombre único en disco', file_path TEXT NOT NULL COMMENT 'Ruta relativa al directorio uploads', file_size BIGINT NOT NULL, mime_type VARCHAR(100) NOT NULL, media_type ENUM('image','document','video','audio','other') DEFAULT 'document', thumbnail_path VARCHAR(255) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_request (request_id), FOREIGN KEY (request_id) REFERENCES file_requests(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci "); echo "✅ Tabla file_request_uploads creada correctamente\n"; echo "\n🎉 Migración completada exitosamente\n"; } catch (Exception $e) { echo "❌ Error en migración: " . $e->getMessage() . "\n"; exit(1); }