import { getQuery, setResponseStatus } from "h3" import mongoose, { type ObjectId } from "mongoose" import { User } from "#server/models/user" import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "#server/utils/auth" import { parseMongoId, validationResponse } from "#server/utils/api-validation" export default defineAuthenticatedEventHandler(async (event) => { const authenticatedUser = await requireAuthenticatedUser(event) const parsedId = parseMongoId(getQuery(event).id) if ("error" in parsedId) return validationResponse(event, parsedId.error) const user = await User.findById(authenticatedUser._id) if (!user) { setResponseStatus(event, 404) return { message: "User not found" } } // Preserve the legacy comparison behavior and empty-object response. if ((user.savedTracks as ObjectId[]).some((savedTrack) => savedTrack.toString() === parsedId.value)) { return {} } user.savedTracks.push(new mongoose.Types.ObjectId(parsedId.value)) await user.save() return {} })