49 lines
1.2 KiB
JavaScript

import { Track } from "@shared-classes/DbModels"
const urlRegex = new RegExp(`^https://(.*?)/(.*)$`)
export default async (tracksIds) => {
if (typeof tracksIds === "string") {
tracksIds = [tracksIds]
}
const removedIds = []
// find Tracks
const tracks = await Track.find({
_id: tracksIds,
})
for (const track of tracks) {
const match = urlRegex.exec(track.source)
const bucket = match[2].split("/")[0]
const objectName = match[2].split("/").slice(1).join("/")
try {
// find on storage and remove
await new Promise((resolve, reject) => {
global.storage.removeObject(bucket, objectName, (err) => {
if (err) {
return reject(err)
}
return resolve()
})
}).catch((err) => {
console.error(err)
return false
})
// remove from db
await track.remove()
} catch (error) {
console.error(error)
continue
}
removedIds.push(track._id)
}
return removedIds
}