CREATE DATABASE IF NOT EXISTS ghamnddd_bot CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE ghamnddd_bot;

CREATE TABLE IF NOT EXISTS settings (
  `key` VARCHAR(100) PRIMARY KEY,
  `value` TEXT NULL
);

INSERT IGNORE INTO settings (`key`,`value`) VALUES
('bot_name','Premium Emoji Bot'),
('welcome_text','Welcome! Choose an option below.'),
('default_content_id','0');

CREATE TABLE IF NOT EXISTS content (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(150) NOT NULL,
  kind ENUM('sticker','custom_emoji','message') NOT NULL,
  telegram_id VARCHAR(255) NULL,
  text TEXT NULL,
  entities_json LONGTEXT NULL,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS channels (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(150) NOT NULL,
  chat_id VARCHAR(255) NOT NULL UNIQUE,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS send_logs (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  content_id INT UNSIGNED NULL,
  channel_id INT UNSIGNED NULL,
  recipient_chat_id VARCHAR(255) NULL,
  telegram_message_id BIGINT NULL,
  action VARCHAR(50) NOT NULL,
  status ENUM('success','error') NOT NULL,
  response_json LONGTEXT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX(content_id), INDEX(channel_id), INDEX(created_at)
);

CREATE TABLE IF NOT EXISTS users (
  chat_id VARCHAR(255) PRIMARY KEY,
  username VARCHAR(255) NULL,
  first_name VARCHAR(255) NULL,
  started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS templates (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(150) NOT NULL,
  text TEXT NOT NULL,
  entities_json LONGTEXT NULL,
  sequence_json LONGTEXT NULL,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
