diff --git a/packages/comty.js/src/models/playlists/index.js b/packages/comty.js/src/models/playlists/index.js index f0aeed7f..536a3208 100755 --- a/packages/comty.js/src/models/playlists/index.js +++ b/packages/comty.js/src/models/playlists/index.js @@ -34,7 +34,7 @@ export default class PlaylistsModel { return data } - static deletePlaylist = async (id) => { + static deletePlaylist = async (id, options = {}) => { if (!id) { throw new Error("ID is required") } @@ -43,6 +43,7 @@ export default class PlaylistsModel { instance: PlaylistsModel.api_instance, method: "DELETE", url: `/playlists/${id}`, + params: options, }) return data diff --git a/packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js b/packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js index 70235387..0816c03c 100644 --- a/packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js +++ b/packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js @@ -1,4 +1,4 @@ -import { Playlist } from "@models" +import { Playlist, Track } from "@models" import { AuthorizationError, PermissionError, NotFoundError } from "@shared-classes/Errors" export default async (req, res) => { @@ -6,6 +6,8 @@ export default async (req, res) => { return new AuthorizationError(req, res) } + const removeWithTracks = req.query.remove_with_tracks === "true" + let playlist = await Playlist.findOne({ _id: req.params.playlist_id, }).catch((err) => { @@ -24,6 +26,12 @@ export default async (req, res) => { _id: req.params.playlist_id, }) + if (removeWithTracks) { + await Track.deleteMany({ + _id: playlist.tracks, + }) + } + return res.json({ success: true, })