43 lines
924 B
JavaScript

import { Track } from "@models"
const allowedUpdateFields = [
"title",
"thumbnail",
"album",
"artist",
"explicit",
]
export default async (payload) => {
if (!payload.title || !payload.source || !payload.user_id) {
throw new Error("title and source and user_id are required")
}
let track = null
if (payload._id) {
track = await Track.findById(payload._id)
if (!track) {
throw new Error("track not found")
}
allowedUpdateFields.forEach((field) => {
if (typeof payload[field] !== "undefined") {
track[field] = payload[field]
}
})
track = await Track.findByIdAndUpdate(payload._id, track)
if (!track) {
throw new Error("Failed to update track")
}
} else {
track = new Track(payload)
await track.save()
}
return track
}