X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-file.ts;h=d48c9f5d4d9a0fccf5b0e2a8a16589ade1dc6cb8;hb=bb4ba6d94c5051fdd665ebe63fffcc105778b8be;hp=6a321917c0827eb7d39670e0c413b3c5966393d5;hpb=c6c0fa6cd8fe8f752463d8982c3dbcd448739c4e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-file.ts b/server/models/video/video-file.ts index 6a321917c..d48c9f5d4 100644 --- a/server/models/video/video-file.ts +++ b/server/models/video/video-file.ts @@ -269,10 +269,11 @@ export class VideoFileModel extends Model { } static getStats () { - const query: FindOptions = { + const webtorrentFilesQuery: FindOptions = { include: [ { attributes: [], + required: true, model: VideoModel.unscoped(), where: { remote: false @@ -281,10 +282,32 @@ export class VideoFileModel extends Model { ] } - return VideoFileModel.aggregate('size', 'SUM', query) - .then(result => ({ - totalLocalVideoFilesSize: parseAggregateResult(result) - })) + const hlsFilesQuery: FindOptions = { + include: [ + { + attributes: [], + required: true, + model: VideoStreamingPlaylistModel.unscoped(), + include: [ + { + attributes: [], + model: VideoModel.unscoped(), + required: true, + where: { + remote: false + } + } + ] + } + ] + } + + return Promise.all([ + VideoFileModel.aggregate('size', 'SUM', webtorrentFilesQuery), + VideoFileModel.aggregate('size', 'SUM', hlsFilesQuery) + ]).then(([ webtorrentResult, hlsResult ]) => ({ + totalLocalVideoFilesSize: parseAggregateResult(webtorrentResult) + parseAggregateResult(hlsResult) + })) } // Redefine upsert because sequelize does not use an appropriate where clause in the update query with 2 unique indexes @@ -311,6 +334,14 @@ export class VideoFileModel extends Model { return element.save({ transaction }) } + static removeHLSFilesOfVideoId (videoStreamingPlaylistId: number) { + const options = { + where: { videoStreamingPlaylistId } + } + + return VideoFileModel.destroy(options) + } + getVideoOrStreamingPlaylist (this: MVideoFileVideo | MVideoFileStreamingPlaylistVideo): MVideo | MStreamingPlaylistVideo { if (this.videoId) return (this as MVideoFileVideo).Video @@ -321,6 +352,14 @@ export class VideoFileModel extends Model { return !!MIMETYPES.AUDIO.EXT_MIMETYPE[this.extname] } + isLive () { + return this.size === -1 + } + + isHLS () { + return !!this.videoStreamingPlaylistId + } + hasSameUniqueKeysThan (other: MVideoFile) { return this.fps === other.fps && this.resolution === other.resolution &&