-- Миграция для добавления таблицы отслеживания полученных монет за дни марафона
-- Запустить: mysql -u root -p avatar_bot < sql/add_marathon_coins_table.sql

-- Таблица для отслеживания полученных монет за дни марафона
CREATE TABLE IF NOT EXISTS user_marathon_coins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    day_number INT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_user_day (user_id, day_number),
    INDEX idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Таблица для отслеживания отправленных постов марафона (если ещё не существует)
CREATE TABLE IF NOT EXISTS user_marathon_posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    day_number INT NOT NULL,
    sent_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_user_day_post (user_id, day_number),
    INDEX idx_user_id_post (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Добавляем поля для марафона в таблицу users (если ещё не существуют)
-- marathon_start_date - дата начала марафона
-- marathon_start_time - время начала марафона (для отправки постов в то же время)
-- marathon_day - текущий день марафона (1-7)

-- Проверяем и добавляем поле marathon_start_date
SET @column_exists = (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'users' 
    AND COLUMN_NAME = 'marathon_start_date'
);
SET @sql = IF(@column_exists = 0, 
    'ALTER TABLE users ADD COLUMN marathon_start_date DATE NULL DEFAULT NULL',
    'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- Проверяем и добавляем поле marathon_start_time
SET @column_exists = (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'users' 
    AND COLUMN_NAME = 'marathon_start_time'
);
SET @sql = IF(@column_exists = 0, 
    'ALTER TABLE users ADD COLUMN marathon_start_time TIME NULL DEFAULT NULL',
    'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- Проверяем и добавляем поле marathon_day
SET @column_exists = (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'users' 
    AND COLUMN_NAME = 'marathon_day'
);
SET @sql = IF(@column_exists = 0, 
    'ALTER TABLE users ADD COLUMN marathon_day INT NULL DEFAULT 0',
    'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SELECT 'Миграция выполнена успешно!' AS status;
