From 19f81e2f011bfdc4d4da7da6cefb16becb7eb340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Mon, 12 Jan 2026 13:12:42 +0100 Subject: [PATCH 1/2] Add ?user parameter to `/api/booth/history` Obsoletes `/api/users/:id/history`. --- src/controllers/booth.js | 15 +++++++++------ src/validations.js | 12 +++++++----- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/controllers/booth.js b/src/controllers/booth.js index 11958bff..1da17a95 100644 --- a/src/controllers/booth.js +++ b/src/controllers/booth.js @@ -356,8 +356,8 @@ async function favorite(req) { } /** - * @typedef {object} GetRoomHistoryQuery - * @prop {import('../types.js').PaginationQuery & { media?: MediaID }} [filter] + * @typedef {import('../types.js').PaginationQuery & { media?: MediaID, user?: UserID }} + * GetRoomHistoryQuery */ /** * @type {import('../types.js').Controller} @@ -370,13 +370,16 @@ async function getHistory(req) { }); const { history } = req.uwave; - if (req.query.filter && req.query.filter.media) { - filter['media.media'] = req.query.filter.media; + // XXX: This is not actually supported by `history.getHistory()` yet + if (req.query.media) { + filter.media = req.query.media; } - // TODO: Support filter? + if (req.query.user) { + filter.user = req.query.user; + } - const roomHistory = await history.getRoomHistory(pagination); + const roomHistory = await history.getHistory(pagination, filter); return toPaginatedResponse(roomHistory, { baseUrl: req.fullUrl, diff --git a/src/validations.js b/src/validations.js index b34a0dd5..e7a27dfb 100644 --- a/src/validations.js +++ b/src/validations.js @@ -198,11 +198,13 @@ export const getRoomHistory = /** @type {const} */ ({ { type: 'object', properties: { - filter: { - type: 'object', - properties: { - media: { $ref: 'https://ns.u-wave.net/schemas/definitions.json#/definitions/UUID' }, - }, + media: { + description: 'Only return plays of the given media ID.', + $ref: 'https://ns.u-wave.net/schemas/definitions.json#/definitions/UUID', + }, + user: { + description: 'Only return history entries played by the given user.', + $ref: 'https://ns.u-wave.net/schemas/definitions.json#/definitions/UUID', }, }, }, From 9a5cfd2ad0569645c0d5dfabc9887ff362994925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Mon, 12 Jan 2026 13:14:22 +0100 Subject: [PATCH 2/2] Fix `sourceData` property in history results --- src/plugins/history.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/history.js b/src/plugins/history.js index 5da72d3a..7259a66c 100644 --- a/src/plugins/history.js +++ b/src/plugins/history.js @@ -100,7 +100,7 @@ function historyEntryFromRow(row) { _id: row['media.id'], sourceType: row['media.sourceType'], sourceID: row['media.sourceID'], - sourceData: row['media.sourceData'], + sourceData: fromJson(row['media.sourceData']), artist: row['media.artist'], title: row['media.title'], thumbnail: row['media.thumbnail'],