mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-11 03:24:16 +00:00
43 lines
924 B
JavaScript
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
|
|
} |