<?php
/**
 * 婚礼环节视频关联数据迁移
 * 功能：创建环节视频关联表，管理主持视频片段与婚礼环节的对应关系
 */

require_once __DIR__ . '/config.php';
global $pdo;

echo "=== 开始婚礼环节视频关联数据迁移 ===\n\n";

try {
    // 检查表是否存在
    $stmt = $pdo->query("SHOW TABLES LIKE 'wedding_phase_videos'");
    $tableExists = $stmt->rowCount() > 0;
    
    if ($tableExists) {
        echo "表 wedding_phase_videos 已存在，跳过创建。\n";
    } else {
        // 创建环节视频关联表
        $sql = "
        CREATE TABLE `wedding_phase_videos` (
            `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
            `phase_code` VARCHAR(50) NOT NULL COMMENT '环节代码',
            `phase_name` VARCHAR(100) NOT NULL COMMENT '环节名称',
            `phase_order` INT NOT NULL DEFAULT 0 COMMENT '环节顺序',
            `video_asset_id` VARCHAR(50) DEFAULT NULL COMMENT '关联的视频资产ID',
            `video_url` VARCHAR(500) DEFAULT NULL COMMENT '视频URL（备用）',
            `start_time` INT NOT NULL DEFAULT 0 COMMENT '开始时间（秒）',
            `end_time` INT DEFAULT NULL COMMENT '结束时间（秒）',
            `duration` INT DEFAULT NULL COMMENT '片段时长（秒）',
            `description` TEXT DEFAULT NULL COMMENT '环节描述',
            `is_active` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
            `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_phase_code` (`phase_code`),
            KEY `idx_phase_order` (`phase_order`),
            KEY `idx_video_asset_id` (`video_asset_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='婚礼环节视频关联表';
        ";
        
        $pdo->exec($sql);
        echo "✓ 表 wedding_phase_videos 创建成功\n\n";
    }
    
    // 检查是否已有默认数据
    $stmt = $pdo->query("SELECT COUNT(*) FROM wedding_phase_videos");
    $count = $stmt->fetchColumn();
    
    if ($count == 0) {
        // 插入默认的婚礼环节数据
        $defaultPhases = [
            ['opening', '开场白', 1, 0, 30, '婚礼开场，欢迎来宾，营造温馨氛围'],
            ['bride_entrance', '新娘入场', 2, 30, 90, '新娘入场仪式，浪漫而庄重'],
            ['vow', '誓言环节', 3, 90, 150, '新人互相表达爱意与承诺'],
            ['ring', '交换戒指', 4, 150, 200, '交换戒指仪式，象征永恒爱情'],
            ['parent_tea', '敬茶改口', 5, 200, 260, '感恩父母，敬茶改口仪式'],
            ['toast', '祝酒环节', 6, 260, 320, '新人祝酒，感谢来宾祝福'],
            ['game', '互动游戏', 7, 320, 400, '与来宾互动，增加婚礼欢乐氛围'],
            ['closing', '圆满礼成', 8, 400, NULL, '婚礼圆满结束，合影留念']
        ];
        
        $stmt = $pdo->prepare("
            INSERT INTO wedding_phase_videos 
            (phase_code, phase_name, phase_order, start_time, end_time, duration, description)
            VALUES (?, ?, ?, ?, ?, ?, ?)
        ");
        
        foreach ($defaultPhases as $phase) {
            $duration = $phase[4] !== null ? ($phase[4] - $phase[3]) : null;
            $stmt->execute([
                $phase[0], $phase[1], $phase[2], 
                $phase[3], $phase[4], $duration, $phase[5]
            ]);
            echo "✓ 插入环节: {$phase[1]}\n";
        }
        echo "\n✓ 默认环节数据插入完成\n";
    } else {
        echo "环节数据已存在，共 {$count} 条记录\n";
    }
    
    // 创建视频播放进度记录表
    $stmt = $pdo->query("SHOW TABLES LIKE 'video_play_progress'");
    $progressTableExists = $stmt->rowCount() > 0;
    
    if (!$progressTableExists) {
        $sql = "
        CREATE TABLE `video_play_progress` (
            `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
            `user_id` VARCHAR(50) DEFAULT NULL COMMENT '用户ID（支持匿名）',
            `phase_code` VARCHAR(50) NOT NULL COMMENT '环节代码',
            `video_asset_id` VARCHAR(50) DEFAULT NULL COMMENT '视频资产ID',
            `current_time` INT NOT NULL DEFAULT 0 COMMENT '当前播放位置（秒）',
            `duration` INT DEFAULT NULL COMMENT '视频总时长',
            `is_completed` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已看完',
            `last_played_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后播放时间',
            `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_user_phase` (`user_id`, `phase_code`),
            KEY `idx_phase_code` (`phase_code`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频播放进度记录表';
        ";
        
        $pdo->exec($sql);
        echo "✓ 表 video_play_progress 创建成功\n";
    } else {
        echo "表 video_play_progress 已存在\n";
    }
    
    echo "\n=== 迁移完成 ===\n";
    
} catch (Exception $e) {
    echo "迁移失败: " . $e->getMessage() . "\n";
    exit(1);
}
