diff --git a/packages/server/services/music/routes/music/recently/get.js b/packages/server/services/music/routes/music/recently/get.js new file mode 100644 index 00000000..e95a0d1b --- /dev/null +++ b/packages/server/services/music/routes/music/recently/get.js @@ -0,0 +1,36 @@ +import { RecentActivity } from "@db_models" + +import TrackClass from "@classes/track" + +export default { + middlewares: [ + "withAuthentication", + ], + fn: async (req, res) => { + const user_id = req.auth.session.user_id + + let activities = await RecentActivity.find({ + user_id: user_id, + type: "track_played" + }) + .limit(req.query.limit ?? 20) + .sort({ created_at: -1 }) + + // filter undefined tracks_ids + activities = activities.filter((activity) => { + return activity.payload && activity.payload.track_id + }) + + // map track objects to track ids + let tracks_ids = activities.map((activity) => { + return activity.payload.track_id + }) + + const tracks = await TrackClass.get(tracks_ids, { + user_id, + onlyList: true + }) + + return tracks + } +} \ No newline at end of file