-- Create the mapping table
CREATE TABLE IF NOT EXISTS telegram_subscriber_broker_mapping (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_subscriber_id INT NOT NULL,
    broker_account_id INT NOT NULL,
    is_active TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_subscription (telegram_subscriber_id, broker_account_id),
    FOREIGN KEY (telegram_subscriber_id) REFERENCES telegram_subscribers(id) ON DELETE CASCADE,
    FOREIGN KEY (broker_account_id) REFERENCES broker_accounts(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Add is_admin column to telegram_subscribers if it doesn't exist
SET @dbname = DATABASE();
SET @tablename = "telegram_subscribers";
SET @columnname = "is_admin";
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (table_name = @tablename)
      AND (table_schema = @dbname)
      AND (column_name = @columnname)
  ) > 0,
  "SELECT 1",
  "ALTER TABLE telegram_subscribers ADD COLUMN is_admin TINYINT(1) DEFAULT 0 AFTER username"
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;
