diff options
author | Chocobozzz <me@florianbigard.com> | 2018-09-18 12:00:49 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-09-19 09:54:37 +0200 |
commit | 627621c1e8d37c33f7b3dd59f4c8907b12c630bc (patch) | |
tree | 007e7118f482c543d3898b222b62c185fda4fd2b /server/lib | |
parent | e972e046dbe9b499944c4fab9220eee13e31ac1b (diff) | |
download | PeerTube-627621c1e8d37c33f7b3dd59f4c8907b12c630bc.tar.gz PeerTube-627621c1e8d37c33f7b3dd59f4c8907b12c630bc.tar.zst PeerTube-627621c1e8d37c33f7b3dd59f4c8907b12c630bc.zip |
Optimize SQL requests of watch page API endpoints
Diffstat (limited to 'server/lib')
-rw-r--r-- | server/lib/cache/videos-caption-cache.ts | 2 | ||||
-rw-r--r-- | server/lib/cache/videos-preview-cache.ts | 4 | ||||
-rw-r--r-- | server/lib/client-html.ts | 6 | ||||
-rw-r--r-- | server/lib/job-queue/handlers/video-file.ts | 8 | ||||
-rw-r--r-- | server/lib/job-queue/handlers/video-import.ts | 2 |
5 files changed, 10 insertions, 12 deletions
diff --git a/server/lib/cache/videos-caption-cache.ts b/server/lib/cache/videos-caption-cache.ts index 380d42b2c..f240affbc 100644 --- a/server/lib/cache/videos-caption-cache.ts +++ b/server/lib/cache/videos-caption-cache.ts | |||
@@ -38,7 +38,7 @@ class VideosCaptionCache extends AbstractVideoStaticFileCache <GetPathParam> { | |||
38 | if (videoCaption.isOwned()) throw new Error('Cannot load remote caption of owned video.') | 38 | if (videoCaption.isOwned()) throw new Error('Cannot load remote caption of owned video.') |
39 | 39 | ||
40 | // Used to fetch the path | 40 | // Used to fetch the path |
41 | const video = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(videoId) | 41 | const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) |
42 | if (!video) return undefined | 42 | if (!video) return undefined |
43 | 43 | ||
44 | const remoteStaticPath = videoCaption.getCaptionStaticPath() | 44 | const remoteStaticPath = videoCaption.getCaptionStaticPath() |
diff --git a/server/lib/cache/videos-preview-cache.ts b/server/lib/cache/videos-preview-cache.ts index 22b6d9cb0..a5d6f5b62 100644 --- a/server/lib/cache/videos-preview-cache.ts +++ b/server/lib/cache/videos-preview-cache.ts | |||
@@ -16,7 +16,7 @@ class VideosPreviewCache extends AbstractVideoStaticFileCache <string> { | |||
16 | } | 16 | } |
17 | 17 | ||
18 | async getFilePath (videoUUID: string) { | 18 | async getFilePath (videoUUID: string) { |
19 | const video = await VideoModel.loadByUUID(videoUUID) | 19 | const video = await VideoModel.loadByUUIDWithFile(videoUUID) |
20 | if (!video) return undefined | 20 | if (!video) return undefined |
21 | 21 | ||
22 | if (video.isOwned()) return join(CONFIG.STORAGE.PREVIEWS_DIR, video.getPreviewName()) | 22 | if (video.isOwned()) return join(CONFIG.STORAGE.PREVIEWS_DIR, video.getPreviewName()) |
@@ -25,7 +25,7 @@ class VideosPreviewCache extends AbstractVideoStaticFileCache <string> { | |||
25 | } | 25 | } |
26 | 26 | ||
27 | protected async loadRemoteFile (key: string) { | 27 | protected async loadRemoteFile (key: string) { |
28 | const video = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(key) | 28 | const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(key) |
29 | if (!video) return undefined | 29 | if (!video) return undefined |
30 | 30 | ||
31 | if (video.isOwned()) throw new Error('Cannot load remote preview of owned video.') | 31 | if (video.isOwned()) throw new Error('Cannot load remote preview of owned video.') |
diff --git a/server/lib/client-html.ts b/server/lib/client-html.ts index b1088c096..fc013e0c3 100644 --- a/server/lib/client-html.ts +++ b/server/lib/client-html.ts | |||
@@ -39,10 +39,8 @@ export class ClientHtml { | |||
39 | let videoPromise: Bluebird<VideoModel> | 39 | let videoPromise: Bluebird<VideoModel> |
40 | 40 | ||
41 | // Let Angular application handle errors | 41 | // Let Angular application handle errors |
42 | if (validator.isUUID(videoId, 4)) { | 42 | if (validator.isInt(videoId) || validator.isUUID(videoId, 4)) { |
43 | videoPromise = VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(videoId) | 43 | videoPromise = VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) |
44 | } else if (validator.isInt(videoId)) { | ||
45 | videoPromise = VideoModel.loadAndPopulateAccountAndServerAndTags(+videoId) | ||
46 | } else { | 44 | } else { |
47 | return ClientHtml.getIndexHTML(req, res) | 45 | return ClientHtml.getIndexHTML(req, res) |
48 | } | 46 | } |
diff --git a/server/lib/job-queue/handlers/video-file.ts b/server/lib/job-queue/handlers/video-file.ts index 2c9ca8e12..1463c93fc 100644 --- a/server/lib/job-queue/handlers/video-file.ts +++ b/server/lib/job-queue/handlers/video-file.ts | |||
@@ -26,7 +26,7 @@ async function processVideoFileImport (job: Bull.Job) { | |||
26 | const payload = job.data as VideoFileImportPayload | 26 | const payload = job.data as VideoFileImportPayload |
27 | logger.info('Processing video file import in job %d.', job.id) | 27 | logger.info('Processing video file import in job %d.', job.id) |
28 | 28 | ||
29 | const video = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(payload.videoUUID) | 29 | const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) |
30 | // No video, maybe deleted? | 30 | // No video, maybe deleted? |
31 | if (!video) { | 31 | if (!video) { |
32 | logger.info('Do not process job %d, video does not exist.', job.id) | 32 | logger.info('Do not process job %d, video does not exist.', job.id) |
@@ -43,7 +43,7 @@ async function processVideoFile (job: Bull.Job) { | |||
43 | const payload = job.data as VideoFilePayload | 43 | const payload = job.data as VideoFilePayload |
44 | logger.info('Processing video file in job %d.', job.id) | 44 | logger.info('Processing video file in job %d.', job.id) |
45 | 45 | ||
46 | const video = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(payload.videoUUID) | 46 | const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) |
47 | // No video, maybe deleted? | 47 | // No video, maybe deleted? |
48 | if (!video) { | 48 | if (!video) { |
49 | logger.info('Do not process job %d, video does not exist.', job.id) | 49 | logger.info('Do not process job %d, video does not exist.', job.id) |
@@ -69,7 +69,7 @@ async function onVideoFileTranscoderOrImportSuccess (video: VideoModel) { | |||
69 | 69 | ||
70 | return sequelizeTypescript.transaction(async t => { | 70 | return sequelizeTypescript.transaction(async t => { |
71 | // Maybe the video changed in database, refresh it | 71 | // Maybe the video changed in database, refresh it |
72 | let videoDatabase = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(video.uuid, t) | 72 | let videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t) |
73 | // Video does not exist anymore | 73 | // Video does not exist anymore |
74 | if (!videoDatabase) return undefined | 74 | if (!videoDatabase) return undefined |
75 | 75 | ||
@@ -99,7 +99,7 @@ async function onVideoFileOptimizerSuccess (video: VideoModel, isNewVideo: boole | |||
99 | 99 | ||
100 | return sequelizeTypescript.transaction(async t => { | 100 | return sequelizeTypescript.transaction(async t => { |
101 | // Maybe the video changed in database, refresh it | 101 | // Maybe the video changed in database, refresh it |
102 | const videoDatabase = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(video.uuid, t) | 102 | const videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t) |
103 | // Video does not exist anymore | 103 | // Video does not exist anymore |
104 | if (!videoDatabase) return undefined | 104 | if (!videoDatabase) return undefined |
105 | 105 | ||
diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts index ebcb2090c..9e14e57e6 100644 --- a/server/lib/job-queue/handlers/video-import.ts +++ b/server/lib/job-queue/handlers/video-import.ts | |||
@@ -183,7 +183,7 @@ async function processFile (downloader: () => Promise<string>, videoImport: Vide | |||
183 | const videoUpdated = await video.save({ transaction: t }) | 183 | const videoUpdated = await video.save({ transaction: t }) |
184 | 184 | ||
185 | // Now we can federate the video (reload from database, we need more attributes) | 185 | // Now we can federate the video (reload from database, we need more attributes) |
186 | const videoForFederation = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(video.uuid, t) | 186 | const videoForFederation = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t) |
187 | await federateVideoIfNeeded(videoForFederation, true, t) | 187 | await federateVideoIfNeeded(videoForFederation, true, t) |
188 | 188 | ||
189 | // Update video import object | 189 | // Update video import object |