X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fsql%2Fvideos-model-list-query-builder.ts;h=b15b29ec3a59f42a219c2b363357e2afd64d9b38;hb=dbd9fb44ddd880622265097bd7baf4dd71ea0861;hp=43040fc5e6da1be861c5acad4a7dd275f3575983;hpb=71d4af1efc810f853e1a0d986bf758c201692594;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/sql/videos-model-list-query-builder.ts b/server/models/video/sql/videos-model-list-query-builder.ts index 43040fc5e..b15b29ec3 100644 --- a/server/models/video/sql/videos-model-list-query-builder.ts +++ b/server/models/video/sql/videos-model-list-query-builder.ts @@ -1,5 +1,6 @@ +import { VideoInclude } from '@shared/models' import { Sequelize } from 'sequelize' -import { AbstractVideosModelQueryBuilder } from './shared/abstract-videos-model-query-builder' +import { AbstractVideoQueryBuilder } from './shared/abstract-video-query-builder' import { VideoModelBuilder } from './shared/video-model-builder' import { BuildVideosListQueryOptions, VideosIdListQueryBuilder } from './videos-id-list-query-builder' @@ -9,7 +10,7 @@ import { BuildVideosListQueryOptions, VideosIdListQueryBuilder } from './videos- * */ -export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder { +export class VideosModelListQueryBuilder extends AbstractVideoQueryBuilder { protected attributes: { [key: string]: string } private innerQuery: string @@ -25,22 +26,22 @@ export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder queryVideos (options: BuildVideosListQueryOptions) { this.buildInnerQuery(options) - this.buildListQueryFromIdsQuery(options) + this.buildMainQuery(options) return this.runQuery() - .then(rows => this.videoModelBuilder.buildVideosFromRows(rows)) + .then(rows => this.videoModelBuilder.buildVideosFromRows({ rows, include: options.include })) } private buildInnerQuery (options: BuildVideosListQueryOptions) { const idsQueryBuilder = new VideosIdListQueryBuilder(this.sequelize) - const { query, sort, replacements } = idsQueryBuilder.getIdsListQueryAndSort(options) + const { query, sort, replacements } = idsQueryBuilder.getQuery(options) this.replacements = replacements this.innerQuery = query this.innerSort = sort } - private buildListQueryFromIdsQuery (options: BuildVideosListQueryOptions) { + private buildMainQuery (options: BuildVideosListQueryOptions) { this.attributes = { '"video".*': '' } @@ -51,9 +52,9 @@ export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder this.includeAccounts() this.includeThumbnails() - if (options.withFiles) { - this.includeWebtorrentFiles(false) - this.includeStreamingPlaylistFiles(false) + if (options.include & VideoInclude.FILES) { + this.includeWebtorrentFiles() + this.includeStreamingPlaylistFiles() } if (options.user) { @@ -64,6 +65,14 @@ export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder this.includePlaylist(options.videoPlaylistId) } + if (options.include & VideoInclude.BLACKLISTED) { + this.includeBlacklisted() + } + + if (options.include & VideoInclude.BLOCKED_OWNER) { + this.includeBlockedOwnerAndServer(options.serverAccountIdForBlock, options.user) + } + const select = this.buildSelect() this.query = `${select} FROM (${this.innerQuery}) AS "tmp" ${this.joins} ${this.innerSort}`