]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/sql/video/shared/video-file-query-builder.ts
Feature/Add replay privacy (#5692)
[github/Chocobozzz/PeerTube.git] / server / models / video / sql / video / shared / video-file-query-builder.ts
index 3eb3dc07d559b86c86ad6d4244493944be1c8d76..cc53a486064d6573cadb00b8492bcb3365498668 100644 (file)
@@ -1,7 +1,17 @@
-import { Sequelize } from 'sequelize'
-import { BuildVideoGetQueryOptions } from '../video-model-get-query-builder'
+import { Sequelize, Transaction } from 'sequelize'
 import { AbstractVideoQueryBuilder } from './abstract-video-query-builder'
 
+export type FileQueryOptions = {
+  id?: string | number
+  url?: string
+
+  includeRedundancy: boolean
+
+  transaction?: Transaction
+
+  logging?: boolean
+}
+
 /**
  *
  * Fetch files (webtorrent and streaming playlist) according to a video
@@ -12,29 +22,29 @@ export class VideoFileQueryBuilder extends AbstractVideoQueryBuilder {
   protected attributes: { [key: string]: string }
 
   constructor (protected readonly sequelize: Sequelize) {
-    super('get')
+    super(sequelize, 'get')
   }
 
-  queryWebTorrentVideos (options: BuildVideoGetQueryOptions) {
+  queryWebTorrentVideos (options: FileQueryOptions) {
     this.buildWebtorrentFilesQuery(options)
 
     return this.runQuery(options)
   }
 
-  queryStreamingPlaylistVideos (options: BuildVideoGetQueryOptions) {
+  queryStreamingPlaylistVideos (options: FileQueryOptions) {
     this.buildVideoStreamingPlaylistFilesQuery(options)
 
     return this.runQuery(options)
   }
 
-  private buildWebtorrentFilesQuery (options: BuildVideoGetQueryOptions) {
+  private buildWebtorrentFilesQuery (options: FileQueryOptions) {
     this.attributes = {
       '"video"."id"': ''
     }
 
     this.includeWebtorrentFiles()
 
-    if (this.shouldIncludeRedundancies(options)) {
+    if (options.includeRedundancy) {
       this.includeWebTorrentRedundancies()
     }
 
@@ -43,14 +53,14 @@ export class VideoFileQueryBuilder extends AbstractVideoQueryBuilder {
     this.query = this.buildQuery()
   }
 
-  private buildVideoStreamingPlaylistFilesQuery (options: BuildVideoGetQueryOptions) {
+  private buildVideoStreamingPlaylistFilesQuery (options: FileQueryOptions) {
     this.attributes = {
       '"video"."id"': ''
     }
 
     this.includeStreamingPlaylistFiles()
 
-    if (this.shouldIncludeRedundancies(options)) {
+    if (options.includeRedundancy) {
       this.includeStreamingPlaylistRedundancies()
     }
 
@@ -62,8 +72,4 @@ export class VideoFileQueryBuilder extends AbstractVideoQueryBuilder {
   private buildQuery () {
     return `${this.buildSelect()} FROM "video" ${this.joins} ${this.where}`
   }
-
-  private shouldIncludeRedundancies (options: BuildVideoGetQueryOptions) {
-    return options.type === 'api'
-  }
 }