新增基于lxserver的音乐功能

This commit is contained in:
mtvpls
2026-04-13 23:17:57 +08:00
parent 7469cc1537
commit c82d7b3841
30 changed files with 2740 additions and 546 deletions
+58
View File
@@ -0,0 +1,58 @@
-- Music V2 schema
CREATE TABLE IF NOT EXISTS music_v2_history (
id BIGSERIAL PRIMARY KEY,
username TEXT NOT NULL,
song_id TEXT NOT NULL,
source TEXT NOT NULL,
songmid TEXT,
name TEXT NOT NULL,
artist TEXT NOT NULL,
album TEXT,
cover TEXT,
duration_text TEXT,
duration_sec DOUBLE PRECISION,
play_progress_sec DOUBLE PRECISION NOT NULL DEFAULT 0,
last_played_at BIGINT NOT NULL,
play_count INTEGER NOT NULL DEFAULT 0,
last_quality TEXT,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
UNIQUE(username, song_id),
FOREIGN KEY (username) REFERENCES users(username) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_music_v2_history_username ON music_v2_history(username, last_played_at DESC);
CREATE TABLE IF NOT EXISTS music_v2_playlists (
id TEXT PRIMARY KEY,
username TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT,
cover TEXT,
song_count INTEGER NOT NULL DEFAULT 0,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
FOREIGN KEY (username) REFERENCES users(username) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_music_v2_playlists_username ON music_v2_playlists(username, updated_at DESC);
CREATE TABLE IF NOT EXISTS music_v2_playlist_items (
id BIGSERIAL PRIMARY KEY,
playlist_id TEXT NOT NULL,
username TEXT NOT NULL,
song_id TEXT NOT NULL,
source TEXT NOT NULL,
songmid TEXT,
name TEXT NOT NULL,
artist TEXT NOT NULL,
album TEXT,
cover TEXT,
duration_text TEXT,
duration_sec DOUBLE PRECISION,
sort_order INTEGER NOT NULL DEFAULT 0,
added_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
UNIQUE(playlist_id, song_id),
FOREIGN KEY (playlist_id) REFERENCES music_v2_playlists(id) ON DELETE CASCADE,
FOREIGN KEY (username) REFERENCES users(username) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_music_v2_playlist_items_playlist ON music_v2_playlist_items(playlist_id, sort_order ASC);