-- ============================================
-- 视频模块扩展：热门地点、标签、videos.location_id
-- 前提：库中已有 InnoDB 表 videos
-- 执行顺序勿改；报错「已存在」类可跳过该语句
-- ============================================

SET NAMES utf8mb4;

-- 1. 热门地点
CREATE TABLE IF NOT EXISTS video_hot_locations (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(120) NOT NULL COMMENT '地点名称',
    latitude DECIMAL(10,7) NULL COMMENT '纬度（地图选点）',
    longitude DECIMAL(11,8) NULL COMMENT '经度（地图选点）',
    sort_order INT NOT NULL DEFAULT 0 COMMENT '越小越靠前',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '1=上架 0=下架',
    created_at INT NOT NULL,
    updated_at INT NOT NULL,
    INDEX idx_sort_status (status, sort_order, id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 若表已由旧版脚本创建且无 latitude/longitude，请运行 PHP/setup_videos.php，或手动执行文末「附录」中的 ALTER。

-- 2. 标签字典
CREATE TABLE IF NOT EXISTS video_tags_dict (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    slug VARCHAR(64) NOT NULL COMMENT '规范化唯一键',
    name VARCHAR(64) NOT NULL COMMENT '展示名',
    use_count INT UNSIGNED NOT NULL DEFAULT 0,
    is_hot TINYINT NOT NULL DEFAULT 0 COMMENT '后台热门推荐',
    hot_sort INT NOT NULL DEFAULT 0 COMMENT '热门排序越小越靠前',
    created_at INT NOT NULL,
    UNIQUE KEY uk_slug (slug),
    INDEX idx_use_count (use_count),
    INDEX idx_hot_sort (is_hot, hot_sort)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 若 video_tags_dict 缺 is_hot/hot_sort，请运行 PHP/setup_videos.php，或见文末附录。

-- 3. 视频播放量（话题热度用；列已存在则跳过）
ALTER TABLE videos ADD COLUMN play_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '播放累计' AFTER status;

-- 4. 视频表增加地点（若已有 location_id 列则不要执行本句）
ALTER TABLE videos ADD COLUMN location_id BIGINT UNSIGNED NULL COMMENT '热门地点' AFTER cover_file_id;

-- 5. 视频与标签关联
CREATE TABLE IF NOT EXISTS video_tags (
    video_id BIGINT UNSIGNED NOT NULL,
    tag_id BIGINT UNSIGNED NOT NULL,
    created_at INT NOT NULL,
    PRIMARY KEY (video_id, tag_id),
    INDEX idx_tag (tag_id),
    CONSTRAINT fk_video_tags_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
    CONSTRAINT fk_video_tags_dict FOREIGN KEY (tag_id) REFERENCES video_tags_dict(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 6. 视频关联热门地点（若云端禁止外键或约束已存在，可跳过）
ALTER TABLE videos ADD CONSTRAINT fk_videos_hot_location FOREIGN KEY (location_id) REFERENCES video_hot_locations(id) ON DELETE SET NULL;

-- 7. 小程序地图选点（若已有 map_latitude 等列则跳过本段）
ALTER TABLE videos
    ADD COLUMN map_latitude DECIMAL(10,7) NULL COMMENT '地图纬度' AFTER location_id,
    ADD COLUMN map_longitude DECIMAL(11,8) NULL COMMENT '地图经度' AFTER map_latitude,
    ADD COLUMN map_poi_name VARCHAR(200) NULL COMMENT '地图POI名称' AFTER map_longitude,
    ADD COLUMN map_address VARCHAR(500) NULL COMMENT '地图详细地址' AFTER map_poi_name;

-- ========== 附录：仅旧库补列时按需执行（列已存在则报错可忽略）==========
-- ALTER TABLE video_hot_locations
--     ADD COLUMN latitude DECIMAL(10,7) NULL COMMENT '纬度（地图选点）' AFTER name,
--     ADD COLUMN longitude DECIMAL(11,8) NULL COMMENT '经度（地图选点）' AFTER latitude;
-- ALTER TABLE video_tags_dict
--     ADD COLUMN is_hot TINYINT NOT NULL DEFAULT 0 COMMENT '后台热门推荐' AFTER use_count,
--     ADD COLUMN hot_sort INT NOT NULL DEFAULT 0 COMMENT '热门排序越小越靠前' AFTER is_hot;
