95 lines
3.6 KiB
PHP
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";
|