diff --git a/src/web/api/player.ts b/src/web/api/player.ts index 003aa33..c24ad4b 100644 --- a/src/web/api/player.ts +++ b/src/web/api/player.ts @@ -1,11 +1,13 @@ import { Router } from "express"; import type { BotManager } from "../../bot/manager.js"; +import type { BotDatabase } from "../../data/database.js"; import type { Logger } from "../../logger.js"; import { parseCommand } from "../../bot/commands.js"; export function createPlayerRouter( botManager: BotManager, - logger: Logger + logger: Logger, + database?: BotDatabase ): Router { const router = Router(); @@ -132,8 +134,23 @@ export function createPlayerRouter( }); router.get("/:botId/history", (req, res) => { - // Will be wired when database access is available through bot - res.json({ history: [] }); + if (!database) { + res.json({ history: [] }); + return; + } + const limit = parseInt(req.query.limit as string) || 50; + const records = database.getPlayHistory(req.params.botId, limit); + const history = records.map((r) => ({ + id: r.songId, + name: r.songName, + artist: r.artist, + album: r.album, + duration: 0, + coverUrl: r.coverUrl, + platform: r.platform, + playedAt: r.playedAt, + })); + res.json({ history }); }); return router; diff --git a/src/web/server.ts b/src/web/server.ts index 7e0bd65..20386c4 100644 --- a/src/web/server.ts +++ b/src/web/server.ts @@ -46,7 +46,7 @@ export function createWebServer(options: WebServerOptions): WebServer { "/api/music", createMusicRouter(options.neteaseProvider, options.qqProvider, logger) ); - app.use("/api/player", createPlayerRouter(options.botManager, logger)); + app.use("/api/player", createPlayerRouter(options.botManager, logger, options.database)); app.use( "/api/auth", createAuthRouter(options.neteaseProvider, options.qqProvider, logger, options.cookieStore) diff --git a/web/src/components/Player.vue b/web/src/components/Player.vue index 9c84118..2c02c38 100644 --- a/web/src/components/Player.vue +++ b/web/src/components/Player.vue @@ -18,6 +18,10 @@ +