diff --git a/packages/tests/fixtures/peertube-plugin-test-four/main.js b/packages/tests/fixtures/peertube-plugin-test-four/main.js index b10177b45..4aa8cb027 100644 --- a/packages/tests/fixtures/peertube-plugin-test-four/main.js +++ b/packages/tests/fixtures/peertube-plugin-test-four/main.js @@ -30,6 +30,13 @@ async function register ({ if (videoFromDB1.uuid !== videoFromDB2.uuid || videoFromDB2.uuid !== videoFromDB3.uuid) return + const videoWithFiles = await peertubeHelpers.videos.loadByIdOrUUIDWithFiles(video.id) + + if (videoWithFiles.getHLSPlaylist().getMasterPlaylistUrl(videoWithFiles) === null) { + logger.error('Video with files could not be loaded.') + return + } + logger.info('video from DB uuid is %s.', videoFromDB1.uuid) await peertubeHelpers.videos.removeVideo(video.id) diff --git a/server/core/lib/plugins/plugin-helpers-builder.ts b/server/core/lib/plugins/plugin-helpers-builder.ts index 506fbabb6..19c9f4ab5 100644 --- a/server/core/lib/plugins/plugin-helpers-builder.ts +++ b/server/core/lib/plugins/plugin-helpers-builder.ts @@ -88,6 +88,10 @@ function buildVideosHelpers () { return VideoModel.load(id) }, + loadByIdOrUUIDWithFiles: (id: number | string) => { + return VideoModel.loadWithFiles(id) + }, + removeVideo: (id: number) => { return sequelizeTypescript.transaction(async t => { const video = await VideoModel.loadFull(id, t) diff --git a/server/core/types/plugins/register-server-option.model.ts b/server/core/types/plugins/register-server-option.model.ts index e31aca1b8..07dfd8082 100644 --- a/server/core/types/plugins/register-server-option.model.ts +++ b/server/core/types/plugins/register-server-option.model.ts @@ -17,7 +17,7 @@ import { VideoBlacklistCreate } from '@peertube/peertube-models' import { ActorModel } from '@server/models/actor/actor.js' -import { MUserDefault, MVideo, MVideoThumbnail, UserNotificationModelForApi } from '../models/index.js' +import { MUserDefault, MVideo, MVideoThumbnail, MVideoWithAllFiles, UserNotificationModelForApi } from '../models/index.js' import { RegisterServerAuthExternalOptions, RegisterServerAuthExternalResult, @@ -34,6 +34,7 @@ export type PeerTubeHelpers = { videos: { loadByUrl: (url: string) => Promise + loadByIdOrUUIDWithFiles: (id: number | string) => Promise loadByIdOrUUID: (id: number | string) => Promise removeVideo: (videoId: number) => Promise