Files
bot_palmas/setup/migrate.php
T

95 lines
3.6 KiB
PHP

<?php
declare(strict_types=1);
require_once dirname(__DIR__) . '/config/env.php';
require_once dirname(__DIR__) . '/config/db.php';
$db = db();
// ─── Tablas ───────────────────────────────────────────────────────────────────
$db->exec("
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
$db->exec("
CREATE TABLE IF NOT EXISTS webhook_logs (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
event_field VARCHAR(50) NOT NULL DEFAULT 'messages',
from_number VARCHAR(30),
contact_name VARCHAR(150),
message_type VARCHAR(30),
message_preview TEXT,
raw_payload LONGTEXT,
received_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_received_at (received_at),
INDEX idx_from_number (from_number),
INDEX idx_event_field (event_field)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
$db->exec("
CREATE TABLE IF NOT EXISTS conversations (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
message_id VARCHAR(100) NOT NULL UNIQUE,
phone_number VARCHAR(30) NOT NULL,
contact_name VARCHAR(150),
direction ENUM('inbound','outbound') DEFAULT 'inbound',
message_type VARCHAR(30),
content TEXT,
media_id VARCHAR(150),
timestamp INT UNSIGNED,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_conv_phone (phone_number),
INDEX idx_conv_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
$db->exec("
CREATE TABLE IF NOT EXISTS notifications (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
type VARCHAR(50) NOT NULL DEFAULT 'new_message',
reference_id BIGINT,
phone_number VARCHAR(30),
message TEXT,
is_read TINYINT(1) DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_notif_read (is_read),
INDEX idx_notif_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
$db->exec("
CREATE TABLE IF NOT EXISTS media_queue (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
message_id VARCHAR(100) NOT NULL,
media_id VARCHAR(150) NOT NULL,
media_type VARCHAR(30),
attempts TINYINT DEFAULT 0,
processed TINYINT(1) DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_mq_processed (processed),
INDEX idx_mq_message_id (message_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
");
// ─── Usuario admin por defecto ────────────────────────────────────────────────
$email = 'admin@palmas360.com';
$password = 'Palmas360@Admin26';
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
$stmt = $db->prepare("INSERT IGNORE INTO users (name, email, password) VALUES (?, ?, ?)");
$stmt->execute(['Lizandro', $email, $hash]);
echo "\n✅ Tablas creadas correctamente.\n";
echo "👤 Usuario: {$email}\n";
echo "🔑 Contraseña: {$password}\n";
echo "⚠️ Cambia la contraseña después del primer login.\n\n";