-- 为 works 表添加 yesterday_* 字段（昨日数据快照）
-- 执行前请先备份数据库
-- MySQL 不支持 IF NOT EXISTS，这里提供两种方式：
-- 方式1：直接执行（如果列已存在会报错，可忽略或手动删除已存在的列）
-- 方式2：使用存储过程检查后添加（见下方）

USE media_manager;

-- ========== 方式1：直接添加（推荐，如果列已存在会报错，可忽略报错继续执行） ==========

-- 1. 播放数
ALTER TABLE works 
ADD COLUMN yesterday_play_count INT DEFAULT 0 COMMENT '昨日播放数';

-- 2. 点赞数
ALTER TABLE works 
ADD COLUMN yesterday_like_count INT DEFAULT 0 COMMENT '昨日点赞数';

-- 3. 评论数
ALTER TABLE works 
ADD COLUMN yesterday_comment_count INT DEFAULT 0 COMMENT '昨日评论数';

-- 4. 分享数
ALTER TABLE works 
ADD COLUMN yesterday_share_count INT DEFAULT 0 COMMENT '昨日分享数';

-- 5. 收藏数
ALTER TABLE works 
ADD COLUMN yesterday_collect_count INT DEFAULT 0 COMMENT '昨日收藏数';

-- 6. 推荐数（视频号）
ALTER TABLE works 
ADD COLUMN yesterday_recommend_count INT DEFAULT 0 COMMENT '昨日推荐数';

-- 7. 涨粉数
ALTER TABLE works 
ADD COLUMN yesterday_fans_increase INT DEFAULT 0 COMMENT '昨日涨粉数';

-- 8. 关注数（视频号）
ALTER TABLE works 
ADD COLUMN yesterday_follow_count INT DEFAULT 0 COMMENT '昨日关注数';

-- 9. 封面点击率
ALTER TABLE works 
ADD COLUMN yesterday_cover_click_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日封面点击率';

-- 10. 平均观看时长
ALTER TABLE works 
ADD COLUMN yesterday_avg_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日平均观看时长';

-- 11. 总观看时长
ALTER TABLE works 
ADD COLUMN yesterday_total_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日总观看时长';

-- 12. 完播率
ALTER TABLE works 
ADD COLUMN yesterday_completion_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日完播率';

-- 13. 2秒退出率
ALTER TABLE works 
ADD COLUMN yesterday_two_second_exit_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日2秒退出率';

-- 14. 5秒完播率
ALTER TABLE works 
ADD COLUMN yesterday_completion_rate_5s VARCHAR(50) DEFAULT '0' COMMENT '昨日5秒完播率';

-- 15. 曝光数
ALTER TABLE works 
ADD COLUMN yesterday_exposure_count INT DEFAULT 0 COMMENT '昨日曝光数';

-- ========== 方式2：使用存储过程安全添加（如果列已存在则跳过） ==========
/*
DELIMITER $$

DROP PROCEDURE IF EXISTS add_column_if_not_exists$$

CREATE PROCEDURE add_column_if_not_exists(
    IN table_name VARCHAR(255),
    IN column_name VARCHAR(255),
    IN column_definition TEXT
)
BEGIN
    DECLARE column_exists INT DEFAULT 0;
    
    SELECT COUNT(*) INTO column_exists
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = DATABASE()
      AND TABLE_NAME = table_name
      AND COLUMN_NAME = column_name;
    
    IF column_exists = 0 THEN
        SET @sql = CONCAT('ALTER TABLE ', table_name, ' ADD COLUMN ', column_name, ' ', column_definition);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END IF;
END$$

DELIMITER ;

CALL add_column_if_not_exists('works', 'yesterday_play_count', 'INT DEFAULT 0 COMMENT ''昨日播放数''');
CALL add_column_if_not_exists('works', 'yesterday_like_count', 'INT DEFAULT 0 COMMENT ''昨日点赞数''');
CALL add_column_if_not_exists('works', 'yesterday_comment_count', 'INT DEFAULT 0 COMMENT ''昨日评论数''');
CALL add_column_if_not_exists('works', 'yesterday_share_count', 'INT DEFAULT 0 COMMENT ''昨日分享数''');
CALL add_column_if_not_exists('works', 'yesterday_collect_count', 'INT DEFAULT 0 COMMENT ''昨日收藏数''');
CALL add_column_if_not_exists('works', 'yesterday_recommend_count', 'INT DEFAULT 0 COMMENT ''昨日推荐数''');
CALL add_column_if_not_exists('works', 'yesterday_fans_increase', 'INT DEFAULT 0 COMMENT ''昨日涨粉数''');
CALL add_column_if_not_exists('works', 'yesterday_follow_count', 'INT DEFAULT 0 COMMENT ''昨日关注数''');
CALL add_column_if_not_exists('works', 'yesterday_cover_click_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日封面点击率''');
CALL add_column_if_not_exists('works', 'yesterday_avg_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日平均观看时长''');
CALL add_column_if_not_exists('works', 'yesterday_total_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日总观看时长''');
CALL add_column_if_not_exists('works', 'yesterday_completion_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日完播率''');
CALL add_column_if_not_exists('works', 'yesterday_two_second_exit_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日2秒退出率''');
CALL add_column_if_not_exists('works', 'yesterday_completion_rate_5s', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日5秒完播率''');
CALL add_column_if_not_exists('works', 'yesterday_exposure_count', 'INT DEFAULT 0 COMMENT ''昨日曝光数''');

DROP PROCEDURE IF EXISTS add_column_if_not_exists;
*/
