-- ============================================
-- MoonTV Plus - 音乐模块数据表
-- 版本: 1.2.0
-- 创建时间: 2026-02-01
-- 更新时间: 2026-02-02
-- ============================================

-- 音乐播放记录表
CREATE TABLE IF NOT EXISTS music_play_records (
  username TEXT NOT NULL,
  key TEXT NOT NULL, -- format: "platform+id" (e.g., "netease+12345")
  platform TEXT NOT NULL CHECK(platform IN ('netease', 'qq', 'kuwo')), -- 音乐平台
  song_id TEXT NOT NULL, -- 歌曲ID
  name TEXT NOT NULL, -- 歌曲名
  artist TEXT NOT NULL, -- 艺术家
  album TEXT, -- 专辑（可选）
  pic TEXT, -- 封面图URL（可选）
  play_time REAL NOT NULL DEFAULT 0, -- 播放进度（秒）
  duration REAL NOT NULL DEFAULT 0, -- 总时长（秒）
  save_time INTEGER NOT NULL, -- 保存时间戳
  PRIMARY KEY (username, key),
  FOREIGN KEY (username) REFERENCES users(username) ON DELETE CASCADE
);

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_music_play_records_username ON music_play_records(username);
CREATE INDEX IF NOT EXISTS idx_music_play_records_save_time ON music_play_records(username, save_time DESC);
CREATE INDEX IF NOT EXISTS idx_music_play_records_platform ON music_play_records(username, platform);

-- ============================================
-- 音乐歌单表
-- ============================================

-- 音乐歌单表
CREATE TABLE IF NOT EXISTS music_playlists (
  id TEXT NOT NULL, -- 歌单ID (UUID)
  username TEXT NOT NULL, -- 用户名
  name TEXT NOT NULL, -- 歌单名称
  description TEXT, -- 歌单描述（可选）
  cover TEXT, -- 歌单封面（可选，使用第一首歌的封面）
  created_at INTEGER NOT NULL, -- 创建时间戳
  updated_at INTEGER NOT NULL, -- 更新时间戳
  PRIMARY KEY (id),
  FOREIGN KEY (username) REFERENCES users(username) ON DELETE CASCADE
);

-- 音乐歌单歌曲关联表
CREATE TABLE IF NOT EXISTS music_playlist_songs (
  playlist_id TEXT NOT NULL, -- 歌单ID
  platform TEXT NOT NULL CHECK(platform IN ('netease', 'qq', 'kuwo')), -- 音乐平台
  song_id TEXT NOT NULL, -- 歌曲ID
  name TEXT NOT NULL, -- 歌曲名
  artist TEXT NOT NULL, -- 艺术家
  album TEXT, -- 专辑（可选）
  pic TEXT, -- 封面图URL（可选）
  duration REAL NOT NULL DEFAULT 0, -- 总时长（秒）
  added_at INTEGER NOT NULL, -- 添加时间戳
  sort_order INTEGER NOT NULL DEFAULT 0, -- 排序顺序
  PRIMARY KEY (playlist_id, platform, song_id),
  FOREIGN KEY (playlist_id) REFERENCES music_playlists(id) ON DELETE CASCADE
);

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_music_playlists_username ON music_playlists(username, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_music_playlist_songs_playlist ON music_playlist_songs(playlist_id, sort_order ASC);
CREATE INDEX IF NOT EXISTS idx_music_playlist_songs_added_at ON music_playlist_songs(playlist_id, added_at DESC);
