]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/sql/shared/video-file-query-builder.ts
Merge branch 'release/4.0.0' into develop
[github/Chocobozzz/PeerTube.git] / server / models / video / sql / shared / video-file-query-builder.ts
index ad47905c65c108c6bfd3af414194ee0a658a1451..3eb3dc07d559b86c86ad6d4244493944be1c8d76 100644 (file)
@@ -1,6 +1,6 @@
 import { Sequelize } from 'sequelize'
 import { BuildVideoGetQueryOptions } from '../video-model-get-query-builder'
-import { AbstractVideosModelQueryBuilder } from './abstract-videos-model-query-builder'
+import { AbstractVideoQueryBuilder } from './abstract-video-query-builder'
 
 /**
  *
@@ -8,9 +8,8 @@ import { AbstractVideosModelQueryBuilder } from './abstract-videos-model-query-b
  *
  */
 
-export class VideoFileQueryBuilder extends AbstractVideosModelQueryBuilder {
+export class VideoFileQueryBuilder extends AbstractVideoQueryBuilder {
   protected attributes: { [key: string]: string }
-  protected joins: string[] = []
 
   constructor (protected readonly sequelize: Sequelize) {
     super('get')
@@ -19,13 +18,13 @@ export class VideoFileQueryBuilder extends AbstractVideosModelQueryBuilder {
   queryWebTorrentVideos (options: BuildVideoGetQueryOptions) {
     this.buildWebtorrentFilesQuery(options)
 
-    return this.runQuery(options.transaction)
+    return this.runQuery(options)
   }
 
   queryStreamingPlaylistVideos (options: BuildVideoGetQueryOptions) {
     this.buildVideoStreamingPlaylistFilesQuery(options)
 
-    return this.runQuery(options.transaction)
+    return this.runQuery(options)
   }
 
   private buildWebtorrentFilesQuery (options: BuildVideoGetQueryOptions) {
@@ -33,13 +32,13 @@ export class VideoFileQueryBuilder extends AbstractVideosModelQueryBuilder {
       '"video"."id"': ''
     }
 
-    this.includeWebtorrentFiles(true)
+    this.includeWebtorrentFiles()
 
-    if (options.forGetAPI === true) {
+    if (this.shouldIncludeRedundancies(options)) {
       this.includeWebTorrentRedundancies()
     }
 
-    this.whereId(options.id)
+    this.whereId(options)
 
     this.query = this.buildQuery()
   }
@@ -49,18 +48,22 @@ export class VideoFileQueryBuilder extends AbstractVideosModelQueryBuilder {
       '"video"."id"': ''
     }
 
-    this.includeStreamingPlaylistFiles(true)
+    this.includeStreamingPlaylistFiles()
 
-    if (options.forGetAPI === true) {
+    if (this.shouldIncludeRedundancies(options)) {
       this.includeStreamingPlaylistRedundancies()
     }
 
-    this.whereId(options.id)
+    this.whereId(options)
 
     this.query = this.buildQuery()
   }
 
   private buildQuery () {
-    return `${this.buildSelect()} FROM "video" ${this.joins.join(' ')} ${this.where}`
+    return `${this.buildSelect()} FROM "video" ${this.joins} ${this.where}`
+  }
+
+  private shouldIncludeRedundancies (options: BuildVideoGetQueryOptions) {
+    return options.type === 'api'
   }
 }