1 import { logger } from '@server/helpers/logger'
2 import { MVideoWithAllFiles } from '@server/types/models'
3 import { lTags } from './object-storage/shared'
5 async function removeHLSPlaylist (video: MVideoWithAllFiles) {
6 const hls = video.getHLSPlaylist()
9 await video.removeStreamingPlaylistFiles(hls)
12 video.VideoStreamingPlaylists = video.VideoStreamingPlaylists.filter(p => p.id !== hls.id)
15 async function removeHLSFile (video: MVideoWithAllFiles, fileToDeleteId: number) {
16 logger.info('Deleting HLS file %d of %s.', fileToDeleteId, video.url, lTags(video.uuid))
18 const hls = video.getHLSPlaylist()
19 const files = hls.VideoFiles
21 if (files.length === 1) {
22 await removeHLSPlaylist(video)
26 const toDelete = files.find(f => f.id === fileToDeleteId)
27 await video.removeStreamingPlaylistVideoFile(video.getHLSPlaylist(), toDelete)
28 await toDelete.destroy()
30 hls.VideoFiles = hls.VideoFiles.filter(f => f.id !== toDelete.id)
35 // ---------------------------------------------------------------------------
37 async function removeAllWebTorrentFiles (video: MVideoWithAllFiles) {
38 for (const file of video.VideoFiles) {
39 await video.removeWebTorrentFile(file)
48 async function removeWebTorrentFile (video: MVideoWithAllFiles, fileToDeleteId: number) {
49 const files = video.VideoFiles
51 if (files.length === 1) {
52 return removeAllWebTorrentFiles(video)
55 const toDelete = files.find(f => f.id === fileToDeleteId)
56 await video.removeWebTorrentFile(toDelete)
57 await toDelete.destroy()
59 video.VideoFiles = files.filter(f => f.id !== toDelete.id)
67 removeAllWebTorrentFiles,