diff options
author | Chocobozzz <me@florianbigard.com> | 2022-07-29 14:50:41 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-08-01 14:55:10 +0200 |
commit | 1bb4c9ab2e8b3b3022351b33a82a5e527fa5d4d7 (patch) | |
tree | a6554ee0a3ccc2ae402665b2ecf57bb38fd0ed72 /server/models/video/video-streaming-playlist.ts | |
parent | 12d84abeca4917d2f1e3f308010bfcd56d37cb7c (diff) | |
download | PeerTube-1bb4c9ab2e8b3b3022351b33a82a5e527fa5d4d7.tar.gz PeerTube-1bb4c9ab2e8b3b3022351b33a82a5e527fa5d4d7.tar.zst PeerTube-1bb4c9ab2e8b3b3022351b33a82a5e527fa5d4d7.zip |
Add ability to delete a specific video file
Diffstat (limited to 'server/models/video/video-streaming-playlist.ts')
-rw-r--r-- | server/models/video/video-streaming-playlist.ts | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/server/models/video/video-streaming-playlist.ts b/server/models/video/video-streaming-playlist.ts index 2c4dbd8ec..f587989dc 100644 --- a/server/models/video/video-streaming-playlist.ts +++ b/server/models/video/video-streaming-playlist.ts | |||
@@ -16,8 +16,9 @@ import { | |||
16 | UpdatedAt | 16 | UpdatedAt |
17 | } from 'sequelize-typescript' | 17 | } from 'sequelize-typescript' |
18 | import { getHLSPublicFileUrl } from '@server/lib/object-storage' | 18 | import { getHLSPublicFileUrl } from '@server/lib/object-storage' |
19 | import { generateHLSMasterPlaylistFilename, generateHlsSha256SegmentsFilename } from '@server/lib/paths' | ||
19 | import { VideoFileModel } from '@server/models/video/video-file' | 20 | import { VideoFileModel } from '@server/models/video/video-file' |
20 | import { MStreamingPlaylist, MVideo } from '@server/types/models' | 21 | import { MStreamingPlaylist, MStreamingPlaylistFilesVideo, MVideo } from '@server/types/models' |
21 | import { sha1 } from '@shared/extra-utils' | 22 | import { sha1 } from '@shared/extra-utils' |
22 | import { VideoStorage } from '@shared/models' | 23 | import { VideoStorage } from '@shared/models' |
23 | import { AttributesOnly } from '@shared/typescript-utils' | 24 | import { AttributesOnly } from '@shared/typescript-utils' |
@@ -167,6 +168,22 @@ export class VideoStreamingPlaylistModel extends Model<Partial<AttributesOnly<Vi | |||
167 | return VideoStreamingPlaylistModel.findAll(query) | 168 | return VideoStreamingPlaylistModel.findAll(query) |
168 | } | 169 | } |
169 | 170 | ||
171 | static loadWithVideoAndFiles (id: number) { | ||
172 | const options = { | ||
173 | include: [ | ||
174 | { | ||
175 | model: VideoModel.unscoped(), | ||
176 | required: true | ||
177 | }, | ||
178 | { | ||
179 | model: VideoFileModel.unscoped() | ||
180 | } | ||
181 | ] | ||
182 | } | ||
183 | |||
184 | return VideoStreamingPlaylistModel.findByPk<MStreamingPlaylistFilesVideo>(id, options) | ||
185 | } | ||
186 | |||
170 | static loadWithVideo (id: number) { | 187 | static loadWithVideo (id: number) { |
171 | const options = { | 188 | const options = { |
172 | include: [ | 189 | include: [ |
@@ -194,9 +211,22 @@ export class VideoStreamingPlaylistModel extends Model<Partial<AttributesOnly<Vi | |||
194 | 211 | ||
195 | static async loadOrGenerate (video: MVideo, transaction?: Transaction) { | 212 | static async loadOrGenerate (video: MVideo, transaction?: Transaction) { |
196 | let playlist = await VideoStreamingPlaylistModel.loadHLSPlaylistByVideo(video.id, transaction) | 213 | let playlist = await VideoStreamingPlaylistModel.loadHLSPlaylistByVideo(video.id, transaction) |
197 | if (!playlist) playlist = new VideoStreamingPlaylistModel() | ||
198 | 214 | ||
199 | return Object.assign(playlist, { videoId: video.id, Video: video }) | 215 | if (!playlist) { |
216 | playlist = new VideoStreamingPlaylistModel({ | ||
217 | p2pMediaLoaderPeerVersion: P2P_MEDIA_LOADER_PEER_VERSION, | ||
218 | type: VideoStreamingPlaylistType.HLS, | ||
219 | storage: VideoStorage.FILE_SYSTEM, | ||
220 | p2pMediaLoaderInfohashes: [], | ||
221 | playlistFilename: generateHLSMasterPlaylistFilename(video.isLive), | ||
222 | segmentsSha256Filename: generateHlsSha256SegmentsFilename(video.isLive), | ||
223 | videoId: video.id | ||
224 | }) | ||
225 | |||
226 | await playlist.save({ transaction }) | ||
227 | } | ||
228 | |||
229 | return Object.assign(playlist, { Video: video }) | ||
200 | } | 230 | } |
201 | 231 | ||
202 | static doesOwnedHLSPlaylistExist (videoUUID: string) { | 232 | static doesOwnedHLSPlaylistExist (videoUUID: string) { |