X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-file.ts;h=d48c9f5d4d9a0fccf5b0e2a8a16589ade1dc6cb8;hb=bb4ba6d94c5051fdd665ebe63fffcc105778b8be;hp=8c8fc0b515fcddec83af080f8acfa9c2a241ef33;hpb=97969c4edf51b37eee691adba43368bb0fbb729b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-file.ts b/server/models/video/video-file.ts index 8c8fc0b51..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 @@ -329,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 &&