aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/create-move-video-storage-job.ts2
-rwxr-xr-xscripts/create-transcoding-job.ts2
-rw-r--r--scripts/migrations/peertube-4.0.ts2
-rwxr-xr-xscripts/update-host.ts2
-rw-r--r--server/controllers/api/videos/ownership.ts2
-rw-r--r--server/controllers/api/videos/update.ts4
-rw-r--r--server/controllers/api/videos/upload.ts2
-rw-r--r--server/lib/activitypub/process/process-dislike.ts2
-rw-r--r--server/lib/activitypub/process/process-like.ts2
-rw-r--r--server/lib/activitypub/process/process-undo.ts4
-rw-r--r--server/lib/activitypub/send/send-undo.ts2
-rw-r--r--server/lib/activitypub/send/send-update.ts2
-rw-r--r--server/lib/files-cache/videos-caption-cache.ts2
-rw-r--r--server/lib/files-cache/videos-preview-cache.ts2
-rw-r--r--server/lib/files-cache/videos-torrent-cache.ts2
-rw-r--r--server/lib/job-queue/handlers/activitypub-http-fetcher.ts2
-rw-r--r--server/lib/job-queue/handlers/video-file-import.ts2
-rw-r--r--server/lib/job-queue/handlers/video-import.ts2
-rw-r--r--server/lib/job-queue/handlers/video-live-ending.ts4
-rw-r--r--server/lib/job-queue/handlers/video-studio-edition.ts2
-rw-r--r--server/lib/job-queue/handlers/video-transcoding.ts4
-rw-r--r--server/lib/live/live-manager.ts4
-rw-r--r--server/lib/model-loaders/video.ts2
-rw-r--r--server/lib/plugins/plugin-helpers-builder.ts8
-rw-r--r--server/lib/schedulers/update-videos-scheduler.ts2
-rw-r--r--server/lib/schedulers/video-views-buffer-scheduler.ts2
-rw-r--r--server/lib/video-channel.ts2
-rw-r--r--server/lib/video-state.ts2
-rw-r--r--server/middlewares/validators/shared/videos.ts2
-rw-r--r--server/models/video/sql/video/video-model-get-query-builder.ts18
-rw-r--r--server/models/video/video.ts4
31 files changed, 48 insertions, 48 deletions
diff --git a/scripts/create-move-video-storage-job.ts b/scripts/create-move-video-storage-job.ts
index 18629aa27..0f0d4ee35 100644
--- a/scripts/create-move-video-storage-job.ts
+++ b/scripts/create-move-video-storage-job.ts
@@ -70,7 +70,7 @@ async function run () {
70 } 70 }
71 71
72 for (const id of ids) { 72 for (const id of ids) {
73 const videoFull = await VideoModel.loadAndPopulateAccountAndServerAndTags(id) 73 const videoFull = await VideoModel.loadFull(id)
74 74
75 const files = videoFull.VideoFiles || [] 75 const files = videoFull.VideoFiles || []
76 const hls = videoFull.getHLSPlaylist() 76 const hls = videoFull.getHLSPlaylist()
diff --git a/scripts/create-transcoding-job.ts b/scripts/create-transcoding-job.ts
index 59fc84ad5..8f4d64290 100755
--- a/scripts/create-transcoding-job.ts
+++ b/scripts/create-transcoding-job.ts
@@ -43,7 +43,7 @@ async function run () {
43 return 43 return
44 } 44 }
45 45
46 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(uuid) 46 const video = await VideoModel.loadFull(uuid)
47 if (!video) throw new Error('Video not found.') 47 if (!video) throw new Error('Video not found.')
48 48
49 const dataInput: VideoTranscodingPayload[] = [] 49 const dataInput: VideoTranscodingPayload[] = []
diff --git a/scripts/migrations/peertube-4.0.ts b/scripts/migrations/peertube-4.0.ts
index 64cf45474..9e5ca60d4 100644
--- a/scripts/migrations/peertube-4.0.ts
+++ b/scripts/migrations/peertube-4.0.ts
@@ -97,7 +97,7 @@ async function processVideo (videoId: number) {
97 // Everything worked, we can save the playlist now 97 // Everything worked, we can save the playlist now
98 await playlist.save() 98 await playlist.save()
99 99
100 const allVideo = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.id) 100 const allVideo = await VideoModel.loadFull(video.id)
101 await federateVideoIfNeeded(allVideo, false) 101 await federateVideoIfNeeded(allVideo, false)
102 102
103 console.log(`Successfully moved HLS files of ${video.name}.`) 103 console.log(`Successfully moved HLS files of ${video.name}.`)
diff --git a/scripts/update-host.ts b/scripts/update-host.ts
index bb54290a4..1d17ce152 100755
--- a/scripts/update-host.ts
+++ b/scripts/update-host.ts
@@ -114,7 +114,7 @@ async function run () {
114 114
115 const ids = await VideoModel.listLocalIds() 115 const ids = await VideoModel.listLocalIds()
116 for (const id of ids) { 116 for (const id of ids) {
117 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id) 117 const video = await VideoModel.loadFull(id)
118 118
119 console.log('Updating video ' + video.uuid) 119 console.log('Updating video ' + video.uuid)
120 120
diff --git a/server/controllers/api/videos/ownership.ts b/server/controllers/api/videos/ownership.ts
index 043861ac3..88355b289 100644
--- a/server/controllers/api/videos/ownership.ts
+++ b/server/controllers/api/videos/ownership.ts
@@ -105,7 +105,7 @@ function acceptOwnership (req: express.Request, res: express.Response) {
105 const channel = res.locals.videoChannel 105 const channel = res.locals.videoChannel
106 106
107 // We need more attributes for federation 107 // We need more attributes for federation
108 const targetVideo = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoChangeOwnership.Video.id, t) 108 const targetVideo = await VideoModel.loadFull(videoChangeOwnership.Video.id, t)
109 109
110 const oldVideoChannel = await VideoChannelModel.loadAndPopulateAccount(targetVideo.channelId, t) 110 const oldVideoChannel = await VideoChannelModel.loadAndPopulateAccount(targetVideo.channelId, t)
111 111
diff --git a/server/controllers/api/videos/update.ts b/server/controllers/api/videos/update.ts
index 2cf8a5883..65a7321fd 100644
--- a/server/controllers/api/videos/update.ts
+++ b/server/controllers/api/videos/update.ts
@@ -62,7 +62,7 @@ async function updateVideo (req: express.Request, res: express.Response) {
62 try { 62 try {
63 const { videoInstanceUpdated, isNewVideo } = await sequelizeTypescript.transaction(async t => { 63 const { videoInstanceUpdated, isNewVideo } = await sequelizeTypescript.transaction(async t => {
64 // Refresh video since thumbnails to prevent concurrent updates 64 // Refresh video since thumbnails to prevent concurrent updates
65 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoFromReq.id, t) 65 const video = await VideoModel.loadFull(videoFromReq.id, t)
66 66
67 const sequelizeOptions = { transaction: t } 67 const sequelizeOptions = { transaction: t }
68 const oldVideoChannel = video.VideoChannel 68 const oldVideoChannel = video.VideoChannel
@@ -212,5 +212,5 @@ async function updateTorrentsMetadataIfNeeded (video: MVideoFullLight, videoInfo
212 } 212 }
213 213
214 // Refresh video since files have changed 214 // Refresh video since files have changed
215 return VideoModel.loadAndPopulateAccountAndServerAndTags(video.id) 215 return VideoModel.loadFull(video.id)
216} 216}
diff --git a/server/controllers/api/videos/upload.ts b/server/controllers/api/videos/upload.ts
index c5890691e..3ce66c9ca 100644
--- a/server/controllers/api/videos/upload.ts
+++ b/server/controllers/api/videos/upload.ts
@@ -272,7 +272,7 @@ async function createTorrentFederate (video: MVideoFullLight, videoFile: MVideoF
272 const job = await JobQueue.Instance.createJobWithPromise({ type: 'manage-video-torrent', payload }) 272 const job = await JobQueue.Instance.createJobWithPromise({ type: 'manage-video-torrent', payload })
273 await job.finished() 273 await job.finished()
274 274
275 const refreshedVideo = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.id) 275 const refreshedVideo = await VideoModel.loadFull(video.id)
276 if (!refreshedVideo) return 276 if (!refreshedVideo) return
277 277
278 // Only federate and notify after the torrent creation 278 // Only federate and notify after the torrent creation
diff --git a/server/lib/activitypub/process/process-dislike.ts b/server/lib/activitypub/process/process-dislike.ts
index 97a994e94..44e349b22 100644
--- a/server/lib/activitypub/process/process-dislike.ts
+++ b/server/lib/activitypub/process/process-dislike.ts
@@ -35,7 +35,7 @@ async function processDislike (activity: ActivityCreate | ActivityDislike, byAct
35 if (!onlyVideo.isOwned()) return 35 if (!onlyVideo.isOwned()) return
36 36
37 return sequelizeTypescript.transaction(async t => { 37 return sequelizeTypescript.transaction(async t => {
38 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(onlyVideo.id, t) 38 const video = await VideoModel.loadFull(onlyVideo.id, t)
39 39
40 const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, activity.id, t) 40 const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, activity.id, t)
41 if (existingRate && existingRate.type === 'dislike') return 41 if (existingRate && existingRate.type === 'dislike') return
diff --git a/server/lib/activitypub/process/process-like.ts b/server/lib/activitypub/process/process-like.ts
index 1aee756d8..580a05bcd 100644
--- a/server/lib/activitypub/process/process-like.ts
+++ b/server/lib/activitypub/process/process-like.ts
@@ -34,7 +34,7 @@ async function processLikeVideo (byActor: MActorSignature, activity: ActivityLik
34 if (!onlyVideo.isOwned()) return 34 if (!onlyVideo.isOwned()) return
35 35
36 return sequelizeTypescript.transaction(async t => { 36 return sequelizeTypescript.transaction(async t => {
37 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(onlyVideo.id, t) 37 const video = await VideoModel.loadFull(onlyVideo.id, t)
38 38
39 const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, activity.id, t) 39 const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, activity.id, t)
40 if (existingRate && existingRate.type === 'like') return 40 if (existingRate && existingRate.type === 'like') return
diff --git a/server/lib/activitypub/process/process-undo.ts b/server/lib/activitypub/process/process-undo.ts
index 257eb6c2b..778a38e05 100644
--- a/server/lib/activitypub/process/process-undo.ts
+++ b/server/lib/activitypub/process/process-undo.ts
@@ -63,7 +63,7 @@ async function processUndoLike (byActor: MActorSignature, activity: ActivityUndo
63 return sequelizeTypescript.transaction(async t => { 63 return sequelizeTypescript.transaction(async t => {
64 if (!byActor.Account) throw new Error('Unknown account ' + byActor.url) 64 if (!byActor.Account) throw new Error('Unknown account ' + byActor.url)
65 65
66 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(onlyVideo.id, t) 66 const video = await VideoModel.loadFull(onlyVideo.id, t)
67 const rate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byActor.Account.id, video.id, likeActivity.id, t) 67 const rate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byActor.Account.id, video.id, likeActivity.id, t)
68 if (!rate || rate.type !== 'like') throw new Error(`Unknown like by account ${byActor.Account.id} for video ${video.id}.`) 68 if (!rate || rate.type !== 'like') throw new Error(`Unknown like by account ${byActor.Account.id} for video ${video.id}.`)
69 69
@@ -87,7 +87,7 @@ async function processUndoDislike (byActor: MActorSignature, activity: ActivityU
87 return sequelizeTypescript.transaction(async t => { 87 return sequelizeTypescript.transaction(async t => {
88 if (!byActor.Account) throw new Error('Unknown account ' + byActor.url) 88 if (!byActor.Account) throw new Error('Unknown account ' + byActor.url)
89 89
90 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(onlyVideo.id, t) 90 const video = await VideoModel.loadFull(onlyVideo.id, t)
91 const rate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byActor.Account.id, video.id, dislike.id, t) 91 const rate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byActor.Account.id, video.id, dislike.id, t)
92 if (!rate || rate.type !== 'dislike') throw new Error(`Unknown dislike by account ${byActor.Account.id} for video ${video.id}.`) 92 if (!rate || rate.type !== 'dislike') throw new Error(`Unknown dislike by account ${byActor.Account.id} for video ${video.id}.`)
93 93
diff --git a/server/lib/activitypub/send/send-undo.ts b/server/lib/activitypub/send/send-undo.ts
index 442178c42..b8eb47ff6 100644
--- a/server/lib/activitypub/send/send-undo.ts
+++ b/server/lib/activitypub/send/send-undo.ts
@@ -83,7 +83,7 @@ async function sendUndoCacheFile (byActor: MActor, redundancyModel: MVideoRedund
83 return 83 return
84 } 84 }
85 85
86 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(associatedVideo.id) 86 const video = await VideoModel.loadFull(associatedVideo.id)
87 const createActivity = buildCreateActivity(redundancyModel.url, byActor, redundancyModel.toActivityPubObject()) 87 const createActivity = buildCreateActivity(redundancyModel.url, byActor, redundancyModel.toActivityPubObject())
88 88
89 return sendUndoVideoRelatedActivity({ 89 return sendUndoVideoRelatedActivity({
diff --git a/server/lib/activitypub/send/send-update.ts b/server/lib/activitypub/send/send-update.ts
index 3577ece02..24983dd19 100644
--- a/server/lib/activitypub/send/send-update.ts
+++ b/server/lib/activitypub/send/send-update.ts
@@ -92,7 +92,7 @@ async function sendUpdateCacheFile (byActor: MActorLight, redundancyModel: MVide
92 return 92 return
93 } 93 }
94 94
95 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(associatedVideo.id) 95 const video = await VideoModel.loadFull(associatedVideo.id)
96 96
97 const activityBuilder = (audience: ActivityAudience) => { 97 const activityBuilder = (audience: ActivityAudience) => {
98 const redundancyObject = redundancyModel.toActivityPubObject() 98 const redundancyObject = redundancyModel.toActivityPubObject()
diff --git a/server/lib/files-cache/videos-caption-cache.ts b/server/lib/files-cache/videos-caption-cache.ts
index 58e2260b6..2927c37eb 100644
--- a/server/lib/files-cache/videos-caption-cache.ts
+++ b/server/lib/files-cache/videos-caption-cache.ts
@@ -35,7 +35,7 @@ class VideosCaptionCache extends AbstractVideoStaticFileCache <string> {
35 if (videoCaption.isOwned()) throw new Error('Cannot load remote caption of owned video.') 35 if (videoCaption.isOwned()) throw new Error('Cannot load remote caption of owned video.')
36 36
37 // Used to fetch the path 37 // Used to fetch the path
38 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoCaption.videoId) 38 const video = await VideoModel.loadFull(videoCaption.videoId)
39 if (!video) return undefined 39 if (!video) return undefined
40 40
41 const remoteUrl = videoCaption.getFileUrl(video) 41 const remoteUrl = videoCaption.getFileUrl(video)
diff --git a/server/lib/files-cache/videos-preview-cache.ts b/server/lib/files-cache/videos-preview-cache.ts
index dd3a84aca..b7a8d6105 100644
--- a/server/lib/files-cache/videos-preview-cache.ts
+++ b/server/lib/files-cache/videos-preview-cache.ts
@@ -30,7 +30,7 @@ class VideosPreviewCache extends AbstractVideoStaticFileCache <string> {
30 30
31 // Key is the video UUID 31 // Key is the video UUID
32 protected async loadRemoteFile (key: string) { 32 protected async loadRemoteFile (key: string) {
33 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(key) 33 const video = await VideoModel.loadFull(key)
34 if (!video) return undefined 34 if (!video) return undefined
35 35
36 if (video.isOwned()) throw new Error('Cannot load remote preview of owned video.') 36 if (video.isOwned()) throw new Error('Cannot load remote preview of owned video.')
diff --git a/server/lib/files-cache/videos-torrent-cache.ts b/server/lib/files-cache/videos-torrent-cache.ts
index 23217f140..c8188b79f 100644
--- a/server/lib/files-cache/videos-torrent-cache.ts
+++ b/server/lib/files-cache/videos-torrent-cache.ts
@@ -40,7 +40,7 @@ class VideosTorrentCache extends AbstractVideoStaticFileCache <string> {
40 if (file.getVideo().isOwned()) throw new Error('Cannot load remote file of owned video.') 40 if (file.getVideo().isOwned()) throw new Error('Cannot load remote file of owned video.')
41 41
42 // Used to fetch the path 42 // Used to fetch the path
43 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(file.getVideo().id) 43 const video = await VideoModel.loadFull(file.getVideo().id)
44 if (!video) return undefined 44 if (!video) return undefined
45 45
46 const remoteUrl = file.getRemoteTorrentUrl(video) 46 const remoteUrl = file.getRemoteTorrentUrl(video)
diff --git a/server/lib/job-queue/handlers/activitypub-http-fetcher.ts b/server/lib/job-queue/handlers/activitypub-http-fetcher.ts
index 128e14f94..de533de6c 100644
--- a/server/lib/job-queue/handlers/activitypub-http-fetcher.ts
+++ b/server/lib/job-queue/handlers/activitypub-http-fetcher.ts
@@ -17,7 +17,7 @@ async function processActivityPubHttpFetcher (job: Job) {
17 const payload = job.data as ActivitypubHttpFetcherPayload 17 const payload = job.data as ActivitypubHttpFetcherPayload
18 18
19 let video: MVideoFullLight 19 let video: MVideoFullLight
20 if (payload.videoId) video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoId) 20 if (payload.videoId) video = await VideoModel.loadFull(payload.videoId)
21 21
22 const fetcherType: { [ id in FetchType ]: (items: any[]) => Promise<any> } = { 22 const fetcherType: { [ id in FetchType ]: (items: any[]) => Promise<any> } = {
23 'activity': items => processActivities(items, { outboxUrl: payload.uri, fromFetch: true }), 23 'activity': items => processActivities(items, { outboxUrl: payload.uri, fromFetch: true }),
diff --git a/server/lib/job-queue/handlers/video-file-import.ts b/server/lib/job-queue/handlers/video-file-import.ts
index 110176d81..1c600e2a7 100644
--- a/server/lib/job-queue/handlers/video-file-import.ts
+++ b/server/lib/job-queue/handlers/video-file-import.ts
@@ -18,7 +18,7 @@ async function processVideoFileImport (job: Job) {
18 const payload = job.data as VideoFileImportPayload 18 const payload = job.data as VideoFileImportPayload
19 logger.info('Processing video file import in job %d.', job.id) 19 logger.info('Processing video file import in job %d.', job.id)
20 20
21 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) 21 const video = await VideoModel.loadFull(payload.videoUUID)
22 // No video, maybe deleted? 22 // No video, maybe deleted?
23 if (!video) { 23 if (!video) {
24 logger.info('Do not process job %d, video does not exist.', job.id) 24 logger.info('Do not process job %d, video does not exist.', job.id)
diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts
index d59a1b12f..40804e82e 100644
--- a/server/lib/job-queue/handlers/video-import.ts
+++ b/server/lib/job-queue/handlers/video-import.ts
@@ -219,7 +219,7 @@ async function processFile (downloader: () => Promise<string>, videoImport: MVid
219 if (previewModel) await video.addAndSaveThumbnail(previewModel, t) 219 if (previewModel) await video.addAndSaveThumbnail(previewModel, t)
220 220
221 // Now we can federate the video (reload from database, we need more attributes) 221 // Now we can federate the video (reload from database, we need more attributes)
222 const videoForFederation = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t) 222 const videoForFederation = await VideoModel.loadFull(video.uuid, t)
223 await federateVideoIfNeeded(videoForFederation, true, t) 223 await federateVideoIfNeeded(videoForFederation, true, t)
224 224
225 // Update video import object 225 // Update video import object
diff --git a/server/lib/job-queue/handlers/video-live-ending.ts b/server/lib/job-queue/handlers/video-live-ending.ts
index b2c42664a..0e1bfb240 100644
--- a/server/lib/job-queue/handlers/video-live-ending.ts
+++ b/server/lib/job-queue/handlers/video-live-ending.ts
@@ -144,7 +144,7 @@ async function replaceLiveByReplay (options: {
144 await liveSession.save() 144 await liveSession.save()
145 145
146 // Remove old HLS playlist video files 146 // Remove old HLS playlist video files
147 const videoWithFiles = await VideoModel.loadAndPopulateAccountAndServerAndTags(liveVideo.id) 147 const videoWithFiles = await VideoModel.loadFull(liveVideo.id)
148 148
149 const hlsPlaylist = videoWithFiles.getHLSPlaylist() 149 const hlsPlaylist = videoWithFiles.getHLSPlaylist()
150 await VideoFileModel.removeHLSFilesOfVideoId(hlsPlaylist.id) 150 await VideoFileModel.removeHLSFilesOfVideoId(hlsPlaylist.id)
@@ -241,7 +241,7 @@ async function cleanupLiveAndFederate (options: {
241 } 241 }
242 242
243 try { 243 try {
244 const fullVideo = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.id) 244 const fullVideo = await VideoModel.loadFull(video.id)
245 return federateVideoIfNeeded(fullVideo, false, undefined) 245 return federateVideoIfNeeded(fullVideo, false, undefined)
246 } catch (err) { 246 } catch (err) {
247 logger.warn('Cannot federate live after cleanup', { videoId: video.id, err }) 247 logger.warn('Cannot federate live after cleanup', { videoId: video.id, err })
diff --git a/server/lib/job-queue/handlers/video-studio-edition.ts b/server/lib/job-queue/handlers/video-studio-edition.ts
index cf3064a7a..434d0ffe8 100644
--- a/server/lib/job-queue/handlers/video-studio-edition.ts
+++ b/server/lib/job-queue/handlers/video-studio-edition.ts
@@ -44,7 +44,7 @@ async function processVideoStudioEdition (job: Job) {
44 44
45 logger.info('Process video studio edition of %s in job %d.', payload.videoUUID, job.id, lTags) 45 logger.info('Process video studio edition of %s in job %d.', payload.videoUUID, job.id, lTags)
46 46
47 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) 47 const video = await VideoModel.loadFull(payload.videoUUID)
48 48
49 // No video, maybe deleted? 49 // No video, maybe deleted?
50 if (!video) { 50 if (!video) {
diff --git a/server/lib/job-queue/handlers/video-transcoding.ts b/server/lib/job-queue/handlers/video-transcoding.ts
index 95ee6b384..5afca65ca 100644
--- a/server/lib/job-queue/handlers/video-transcoding.ts
+++ b/server/lib/job-queue/handlers/video-transcoding.ts
@@ -42,7 +42,7 @@ async function processVideoTranscoding (job: Job) {
42 const payload = job.data as VideoTranscodingPayload 42 const payload = job.data as VideoTranscodingPayload
43 logger.info('Processing transcoding job %d.', job.id, lTags(payload.videoUUID)) 43 logger.info('Processing transcoding job %d.', job.id, lTags(payload.videoUUID))
44 44
45 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) 45 const video = await VideoModel.loadFull(payload.videoUUID)
46 // No video, maybe deleted? 46 // No video, maybe deleted?
47 if (!video) { 47 if (!video) {
48 logger.info('Do not process job %d, video does not exist.', job.id, lTags(payload.videoUUID)) 48 logger.info('Do not process job %d, video does not exist.', job.id, lTags(payload.videoUUID))
@@ -180,7 +180,7 @@ async function onVideoFirstWebTorrentTranscoding (
180 const { resolution, isPortraitMode, audioStream } = await videoArg.probeMaxQualityFile() 180 const { resolution, isPortraitMode, audioStream } = await videoArg.probeMaxQualityFile()
181 181
182 // Maybe the video changed in database, refresh it 182 // Maybe the video changed in database, refresh it
183 const videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoArg.uuid) 183 const videoDatabase = await VideoModel.loadFull(videoArg.uuid)
184 // Video does not exist anymore 184 // Video does not exist anymore
185 if (!videoDatabase) return undefined 185 if (!videoDatabase) return undefined
186 186
diff --git a/server/lib/live/live-manager.ts b/server/lib/live/live-manager.ts
index d499b4b1a..74f203091 100644
--- a/server/lib/live/live-manager.ts
+++ b/server/lib/live/live-manager.ts
@@ -351,7 +351,7 @@ class LiveManager {
351 const videoId = live.videoId 351 const videoId = live.videoId
352 352
353 try { 353 try {
354 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) 354 const video = await VideoModel.loadFull(videoId)
355 355
356 logger.info('Will publish and federate live %s.', video.url, localLTags) 356 logger.info('Will publish and federate live %s.', video.url, localLTags)
357 357
@@ -390,7 +390,7 @@ class LiveManager {
390 const { videoId, liveSession: liveSessionArg, cleanupNow = false } = options 390 const { videoId, liveSession: liveSessionArg, cleanupNow = false } = options
391 391
392 try { 392 try {
393 const fullVideo = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) 393 const fullVideo = await VideoModel.loadFull(videoId)
394 if (!fullVideo) return 394 if (!fullVideo) return
395 395
396 const live = await VideoLiveModel.loadByVideoId(fullVideo.id) 396 const live = await VideoLiveModel.loadByVideoId(fullVideo.id)
diff --git a/server/lib/model-loaders/video.ts b/server/lib/model-loaders/video.ts
index 0a3c15ad8..cef6a367c 100644
--- a/server/lib/model-loaders/video.ts
+++ b/server/lib/model-loaders/video.ts
@@ -35,7 +35,7 @@ function loadVideo (
35 ) 35 )
36 } 36 }
37 37
38 if (fetchType === 'all') return VideoModel.loadAndPopulateAccountAndServerAndTags(id, undefined, userId) 38 if (fetchType === 'all') return VideoModel.loadFull(id, undefined, userId)
39 39
40 if (fetchType === 'only-immutable-attributes') return VideoModel.loadImmutableAttributes(id) 40 if (fetchType === 'only-immutable-attributes') return VideoModel.loadImmutableAttributes(id)
41 41
diff --git a/server/lib/plugins/plugin-helpers-builder.ts b/server/lib/plugins/plugin-helpers-builder.ts
index 897271c0b..b76c0a8a4 100644
--- a/server/lib/plugins/plugin-helpers-builder.ts
+++ b/server/lib/plugins/plugin-helpers-builder.ts
@@ -83,7 +83,7 @@ function buildVideosHelpers () {
83 83
84 removeVideo: (id: number) => { 84 removeVideo: (id: number) => {
85 return sequelizeTypescript.transaction(async t => { 85 return sequelizeTypescript.transaction(async t => {
86 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id, t) 86 const video = await VideoModel.loadFull(id, t)
87 87
88 await video.destroy({ transaction: t }) 88 await video.destroy({ transaction: t })
89 }) 89 })
@@ -94,7 +94,7 @@ function buildVideosHelpers () {
94 }, 94 },
95 95
96 getFiles: async (id: number | string) => { 96 getFiles: async (id: number | string) => {
97 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id) 97 const video = await VideoModel.loadFull(id)
98 if (!video) return undefined 98 if (!video) return undefined
99 99
100 const webtorrentVideoFiles = (video.VideoFiles || []).map(f => ({ 100 const webtorrentVideoFiles = (video.VideoFiles || []).map(f => ({
@@ -178,14 +178,14 @@ function buildModerationHelpers () {
178 }, 178 },
179 179
180 blacklistVideo: async (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => { 180 blacklistVideo: async (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => {
181 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(options.videoIdOrUUID) 181 const video = await VideoModel.loadFull(options.videoIdOrUUID)
182 if (!video) return 182 if (!video) return
183 183
184 await blacklistVideo(video, options.createOptions) 184 await blacklistVideo(video, options.createOptions)
185 }, 185 },
186 186
187 unblacklistVideo: async (options: { videoIdOrUUID: number | string }) => { 187 unblacklistVideo: async (options: { videoIdOrUUID: number | string }) => {
188 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(options.videoIdOrUUID) 188 const video = await VideoModel.loadFull(options.videoIdOrUUID)
189 if (!video) return 189 if (!video) return
190 190
191 const videoBlacklist = await VideoBlacklistModel.loadByVideoId(video.id) 191 const videoBlacklist = await VideoBlacklistModel.loadByVideoId(video.id)
diff --git a/server/lib/schedulers/update-videos-scheduler.ts b/server/lib/schedulers/update-videos-scheduler.ts
index c652682dd..5bfbc3cd2 100644
--- a/server/lib/schedulers/update-videos-scheduler.ts
+++ b/server/lib/schedulers/update-videos-scheduler.ts
@@ -30,7 +30,7 @@ export class UpdateVideosScheduler extends AbstractScheduler {
30 30
31 for (const schedule of schedules) { 31 for (const schedule of schedules) {
32 await sequelizeTypescript.transaction(async t => { 32 await sequelizeTypescript.transaction(async t => {
33 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(schedule.videoId, t) 33 const video = await VideoModel.loadFull(schedule.videoId, t)
34 34
35 logger.info('Executing scheduled video update on %s.', video.uuid) 35 logger.info('Executing scheduled video update on %s.', video.uuid)
36 36
diff --git a/server/lib/schedulers/video-views-buffer-scheduler.ts b/server/lib/schedulers/video-views-buffer-scheduler.ts
index 937764155..244a88b14 100644
--- a/server/lib/schedulers/video-views-buffer-scheduler.ts
+++ b/server/lib/schedulers/video-views-buffer-scheduler.ts
@@ -26,7 +26,7 @@ export class VideoViewsBufferScheduler extends AbstractScheduler {
26 const views = await Redis.Instance.getLocalVideoViews(videoId) 26 const views = await Redis.Instance.getLocalVideoViews(videoId)
27 await Redis.Instance.deleteLocalVideoViews(videoId) 27 await Redis.Instance.deleteLocalVideoViews(videoId)
28 28
29 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) 29 const video = await VideoModel.loadFull(videoId)
30 if (!video) { 30 if (!video) {
31 logger.debug('Video %d does not exist anymore, skipping videos view addition.', videoId, lTags()) 31 logger.debug('Video %d does not exist anymore, skipping videos view addition.', videoId, lTags())
32 continue 32 continue
diff --git a/server/lib/video-channel.ts b/server/lib/video-channel.ts
index 2fd63a8c4..8322c9ad2 100644
--- a/server/lib/video-channel.ts
+++ b/server/lib/video-channel.ts
@@ -36,7 +36,7 @@ async function federateAllVideosOfChannel (videoChannel: MChannelId) {
36 const videoIds = await VideoModel.getAllIdsFromChannel(videoChannel) 36 const videoIds = await VideoModel.getAllIdsFromChannel(videoChannel)
37 37
38 for (const videoId of videoIds) { 38 for (const videoId of videoIds) {
39 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) 39 const video = await VideoModel.loadFull(videoId)
40 40
41 await federateVideoIfNeeded(video, false) 41 await federateVideoIfNeeded(video, false)
42 } 42 }
diff --git a/server/lib/video-state.ts b/server/lib/video-state.ts
index ae2725d65..b4e3831e5 100644
--- a/server/lib/video-state.ts
+++ b/server/lib/video-state.ts
@@ -43,7 +43,7 @@ function moveToNextState (options: {
43 43
44 return sequelizeTypescript.transaction(async t => { 44 return sequelizeTypescript.transaction(async t => {
45 // Maybe the video changed in database, refresh it 45 // Maybe the video changed in database, refresh it
46 const videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t) 46 const videoDatabase = await VideoModel.loadFull(video.uuid, t)
47 // Video does not exist anymore 47 // Video does not exist anymore
48 if (!videoDatabase) return undefined 48 if (!videoDatabase) return undefined
49 49
diff --git a/server/middlewares/validators/shared/videos.ts b/server/middlewares/validators/shared/videos.ts
index 2c2ae3811..e3a98c58f 100644
--- a/server/middlewares/validators/shared/videos.ts
+++ b/server/middlewares/validators/shared/videos.ts
@@ -144,7 +144,7 @@ async function checkCanSeeAuthVideo (req: Request, res: Response, video: MVideoI
144 144
145 const videoWithRights = (video as MVideoWithRights).VideoChannel?.Account?.userId 145 const videoWithRights = (video as MVideoWithRights).VideoChannel?.Account?.userId
146 ? video as MVideoWithRights 146 ? video as MVideoWithRights
147 : await VideoModel.loadAndPopulateAccountAndServerAndTags(video.id) 147 : await VideoModel.loadFull(video.id)
148 148
149 const privacy = videoWithRights.privacy 149 const privacy = videoWithRights.privacy
150 150
diff --git a/server/models/video/sql/video/video-model-get-query-builder.ts b/server/models/video/sql/video/video-model-get-query-builder.ts
index 32e5c4ff7..29e59c8be 100644
--- a/server/models/video/sql/video/video-model-get-query-builder.ts
+++ b/server/models/video/sql/video/video-model-get-query-builder.ts
@@ -13,7 +13,7 @@ import { VideoTableAttributes } from './shared/video-table-attributes'
13 13
14export type GetType = 14export type GetType =
15 'api' | 15 'api' |
16 'full-light' | 16 'full' |
17 'account-blacklist-files' | 17 'account-blacklist-files' |
18 'all-files' | 18 'all-files' |
19 'thumbnails' | 19 'thumbnails' |
@@ -40,7 +40,7 @@ export class VideoModelGetQueryBuilder {
40 40
41 private readonly videoModelBuilder: VideoModelBuilder 41 private readonly videoModelBuilder: VideoModelBuilder
42 42
43 private static readonly videoFilesInclude = new Set<GetType>([ 'api', 'full-light', 'account-blacklist-files', 'all-files' ]) 43 private static readonly videoFilesInclude = new Set<GetType>([ 'api', 'full', 'account-blacklist-files', 'all-files' ])
44 44
45 constructor (protected readonly sequelize: Sequelize) { 45 constructor (protected readonly sequelize: Sequelize) {
46 this.videoQueryBuilder = new VideosModelGetQuerySubBuilder(sequelize) 46 this.videoQueryBuilder = new VideosModelGetQuerySubBuilder(sequelize)
@@ -96,16 +96,16 @@ export class VideosModelGetQuerySubBuilder extends AbstractVideoQueryBuilder {
96 protected streamingPlaylistFilesQuery: string 96 protected streamingPlaylistFilesQuery: string
97 97
98 private static readonly trackersInclude = new Set<GetType>([ 'api' ]) 98 private static readonly trackersInclude = new Set<GetType>([ 'api' ])
99 private static readonly liveInclude = new Set<GetType>([ 'api', 'full-light' ]) 99 private static readonly liveInclude = new Set<GetType>([ 'api', 'full' ])
100 private static readonly scheduleUpdateInclude = new Set<GetType>([ 'api', 'full-light' ]) 100 private static readonly scheduleUpdateInclude = new Set<GetType>([ 'api', 'full' ])
101 private static readonly tagsInclude = new Set<GetType>([ 'api', 'full-light' ]) 101 private static readonly tagsInclude = new Set<GetType>([ 'api', 'full' ])
102 private static readonly userHistoryInclude = new Set<GetType>([ 'api', 'full-light' ]) 102 private static readonly userHistoryInclude = new Set<GetType>([ 'api', 'full' ])
103 private static readonly accountInclude = new Set<GetType>([ 'api', 'full-light', 'account-blacklist-files' ]) 103 private static readonly accountInclude = new Set<GetType>([ 'api', 'full', 'account-blacklist-files' ])
104 private static readonly ownerUserInclude = new Set<GetType>([ 'blacklist-rights' ]) 104 private static readonly ownerUserInclude = new Set<GetType>([ 'blacklist-rights' ])
105 105
106 private static readonly blacklistedInclude = new Set<GetType>([ 106 private static readonly blacklistedInclude = new Set<GetType>([
107 'api', 107 'api',
108 'full-light', 108 'full',
109 'account-blacklist-files', 109 'account-blacklist-files',
110 'thumbnails-blacklist', 110 'thumbnails-blacklist',
111 'blacklist-rights' 111 'blacklist-rights'
@@ -113,7 +113,7 @@ export class VideosModelGetQuerySubBuilder extends AbstractVideoQueryBuilder {
113 113
114 private static readonly thumbnailsInclude = new Set<GetType>([ 114 private static readonly thumbnailsInclude = new Set<GetType>([
115 'api', 115 'api',
116 'full-light', 116 'full',
117 'account-blacklist-files', 117 'account-blacklist-files',
118 'all-files', 118 'all-files',
119 'thumbnails', 119 'thumbnails',
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 08adbced6..e5f8b5fa2 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -1352,10 +1352,10 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
1352 return queryBuilder.queryVideo({ url, transaction, type: 'account-blacklist-files' }) 1352 return queryBuilder.queryVideo({ url, transaction, type: 'account-blacklist-files' })
1353 } 1353 }
1354 1354
1355 static loadAndPopulateAccountAndServerAndTags (id: number | string, t?: Transaction, userId?: number): Promise<MVideoFullLight> { 1355 static loadFull (id: number | string, t?: Transaction, userId?: number): Promise<MVideoFullLight> {
1356 const queryBuilder = new VideoModelGetQueryBuilder(VideoModel.sequelize) 1356 const queryBuilder = new VideoModelGetQueryBuilder(VideoModel.sequelize)
1357 1357
1358 return queryBuilder.queryVideo({ id, transaction: t, type: 'full-light', userId }) 1358 return queryBuilder.queryVideo({ id, transaction: t, type: 'full', userId })
1359 } 1359 }
1360 1360
1361 static loadForGetAPI (parameters: { 1361 static loadForGetAPI (parameters: {