-- 创建图生视频任务表
CREATE TABLE IF NOT EXISTS image_to_video_tasks (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    task_id VARCHAR(50) NOT NULL UNIQUE,
    username VARCHAR(100) NOT NULL,
    first_frame_url VARCHAR(500) NOT NULL,
    last_frame_url VARCHAR(500),
    prompt TEXT,
    aspect_ratio VARCHAR(10) NOT NULL DEFAULT '16:9',
    duration INT NOT NULL DEFAULT 5,
    hd_mode BOOLEAN NOT NULL DEFAULT FALSE,
    status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
    progress INT DEFAULT 0,
    result_url VARCHAR(500),
    real_task_id VARCHAR(100),
    error_message TEXT,
    cost_points INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    completed_at TIMESTAMP NULL,
    
    INDEX idx_username (username),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at),
    INDEX idx_task_id (task_id)
);

-- 注意：MySQL的CHECK约束支持有限，以下约束在应用层进行验证
-- 任务状态应该在应用层验证：PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED
-- 时长应该在应用层验证：1-60秒
-- 进度应该在应用层验证：0-100

-- 如果需要数据库层约束，可以使用触发器或存储过程
-- 这里我们依赖应用层的验证逻辑
