implement options for playlist controller

This commit is contained in:
SrGooglo 2023-06-09 14:26:19 +00:00
parent c7a554e455
commit a66e561a75
2 changed files with 11 additions and 2 deletions

View File

@ -34,7 +34,7 @@ export default class PlaylistsModel {
return data return data
} }
static deletePlaylist = async (id) => { static deletePlaylist = async (id, options = {}) => {
if (!id) { if (!id) {
throw new Error("ID is required") throw new Error("ID is required")
} }
@ -43,6 +43,7 @@ export default class PlaylistsModel {
instance: PlaylistsModel.api_instance, instance: PlaylistsModel.api_instance,
method: "DELETE", method: "DELETE",
url: `/playlists/${id}`, url: `/playlists/${id}`,
params: options,
}) })
return data return data

View File

@ -1,4 +1,4 @@
import { Playlist } from "@models" import { Playlist, Track } from "@models"
import { AuthorizationError, PermissionError, NotFoundError } from "@shared-classes/Errors" import { AuthorizationError, PermissionError, NotFoundError } from "@shared-classes/Errors"
export default async (req, res) => { export default async (req, res) => {
@ -6,6 +6,8 @@ export default async (req, res) => {
return new AuthorizationError(req, res) return new AuthorizationError(req, res)
} }
const removeWithTracks = req.query.remove_with_tracks === "true"
let playlist = await Playlist.findOne({ let playlist = await Playlist.findOne({
_id: req.params.playlist_id, _id: req.params.playlist_id,
}).catch((err) => { }).catch((err) => {
@ -24,6 +26,12 @@ export default async (req, res) => {
_id: req.params.playlist_id, _id: req.params.playlist_id,
}) })
if (removeWithTracks) {
await Track.deleteMany({
_id: playlist.tracks,
})
}
return res.json({ return res.json({
success: true, success: true,
}) })