up
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
-- ============================================
|
||||
-- MIGRACIÓN: 02_add_template_components
|
||||
-- Fecha: 2026-02-03
|
||||
-- Descripción: Agregar columnas para almacenar componentes de plantillas de WhatsApp
|
||||
-- Esto permite capturar variables/placeholders y generar vistas previas
|
||||
-- Nota: Usa IF NOT EXISTS - Es seguro ejecutar múltiples veces
|
||||
-- ============================================
|
||||
|
||||
-- Agregar columna para el texto del body de la plantilla
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS body_text TEXT DEFAULT NULL
|
||||
COMMENT 'Texto del cuerpo de la plantilla con variables {{1}}, {{2}}, etc.';
|
||||
|
||||
-- Agregar columna para almacenar componentes completos en formato JSON
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS components JSON DEFAULT NULL
|
||||
COMMENT 'Componentes completos de la plantilla desde WhatsApp API (header, body, footer, buttons)';
|
||||
|
||||
-- Agregar columna para almacenar ejemplo de parámetros
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS example_parameters JSON DEFAULT NULL
|
||||
COMMENT 'Ejemplos de valores para los parámetros de la plantilla';
|
||||
|
||||
-- Agregar columna para el texto del header si existe
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS header_text VARCHAR(255) DEFAULT NULL
|
||||
COMMENT 'Texto del header de la plantilla';
|
||||
|
||||
-- Agregar columna para el tipo de header
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS header_type ENUM('text', 'image', 'video', 'document') DEFAULT NULL
|
||||
COMMENT 'Tipo de header de la plantilla';
|
||||
|
||||
-- Agregar columna para el texto del footer
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS footer_text VARCHAR(255) DEFAULT NULL
|
||||
COMMENT 'Texto del footer de la plantilla';
|
||||
|
||||
-- Agregar índice para búsquedas por plantilla y lenguaje
|
||||
ALTER TABLE message_templates
|
||||
ADD INDEX IF NOT EXISTS idx_template_language (template_name, language_code);
|
||||
|
||||
-- Actualizar timestamp
|
||||
ALTER TABLE message_templates
|
||||
ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
|
||||
@@ -0,0 +1,48 @@
|
||||
-- ============================================
|
||||
-- MIGRACIÓN: 03_create_scheduled_messages
|
||||
-- Fecha: 2026-02-03
|
||||
-- Descripción: Crear tabla y vista para sistema de mensajes programados/recordatorios
|
||||
-- Permite programar envío de plantillas WhatsApp en fechas/horas específicas
|
||||
-- Nota: Usa IF NOT EXISTS / OR REPLACE - Es seguro ejecutar múltiples veces
|
||||
-- ============================================
|
||||
|
||||
-- Tabla para mensajes programados y recordatorios
|
||||
CREATE TABLE IF NOT EXISTS scheduled_messages (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
template_id INT NULL,
|
||||
template_name VARCHAR(100) NULL,
|
||||
template_language VARCHAR(10) DEFAULT 'es',
|
||||
template_parameters JSON NULL COMMENT 'Parámetros para las variables de la plantilla',
|
||||
message_type ENUM('text', 'template') DEFAULT 'template',
|
||||
message_content TEXT NULL COMMENT 'Contenido del mensaje si es tipo text',
|
||||
scheduled_date DATE NOT NULL,
|
||||
scheduled_time TIME NOT NULL,
|
||||
status ENUM('pending', 'sent', 'failed', 'cancelled') DEFAULT 'pending',
|
||||
sent_at DATETIME NULL,
|
||||
error_message TEXT NULL,
|
||||
created_by INT NULL COMMENT 'ID del admin que creó el recordatorio',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_scheduled_date (scheduled_date),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_scheduled_datetime (scheduled_date, scheduled_time, status),
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Vista para facilitar consultas con información del usuario
|
||||
CREATE OR REPLACE VIEW scheduled_messages_view AS
|
||||
SELECT
|
||||
sm.*,
|
||||
u.name as user_name,
|
||||
u.phone_number,
|
||||
mt.name as template_display_name,
|
||||
mt.body_text as template_body,
|
||||
mt.status as template_status
|
||||
FROM scheduled_messages sm
|
||||
LEFT JOIN users u ON sm.user_id = u.id
|
||||
LEFT JOIN message_templates mt ON sm.template_id = mt.id
|
||||
ORDER BY sm.scheduled_date DESC, sm.scheduled_time DESC;
|
||||
Reference in New Issue
Block a user