up
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Migración: Crear tabla file_requests para solicitudes de archivos grandes
|
||||
*
|
||||
* Esta tabla almacena las solicitudes de carga de archivos grandes que se
|
||||
* envían a los clientes por WhatsApp. Cada solicitud genera un token único
|
||||
* que se usa como enlace público de carga.
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/../config/config.php';
|
||||
|
||||
try {
|
||||
$db = Database::getInstance();
|
||||
$pdo = $db->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);
|
||||
}
|
||||
Reference in New Issue
Block a user