]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/video-comment.ts
Fix RSS feed when HLS only is enabled
[github/Chocobozzz/PeerTube.git] / server / models / video / video-comment.ts
index 75b914b8c8f7fd6f8c49e06bb14375c166d829ef..de27b3d875fb3745682f5a056405162b5298f85f 100644 (file)
@@ -1,6 +1,6 @@
 import * as Bluebird from 'bluebird'
 import { uniq } from 'lodash'
-import { FindOptions, Op, Order, ScopeOptions, Sequelize, Transaction } from 'sequelize'
+import { FindOptions, Op, Order, ScopeOptions, Sequelize, Transaction, WhereOptions } from 'sequelize'
 import {
   AllowNull,
   BelongsTo,
@@ -40,11 +40,11 @@ import {
 import { VideoCommentAbuseModel } from '../abuse/video-comment-abuse'
 import { AccountModel } from '../account/account'
 import { ActorModel, unusedActorAttributesForAPI } from '../activitypub/actor'
-import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
+import { buildBlockedAccountSQL, buildBlockedAccountSQLOptimized, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
 import { VideoModel } from './video'
 import { VideoChannelModel } from './video-channel'
 
-enum ScopeNames {
+export enum ScopeNames {
   WITH_ACCOUNT = 'WITH_ACCOUNT',
   WITH_ACCOUNT_FOR_API = 'WITH_ACCOUNT_FOR_API',
   WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO',
@@ -460,19 +460,20 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
     const serverActor = await getServerActor()
     const { start, count, videoId, accountId, videoChannelId } = parameters
 
-    const accountExclusion = {
-      [Op.notIn]: Sequelize.literal(
-        '(' + buildBlockedAccountSQL([ serverActor.Account.id, '"Video->VideoChannel"."accountId"' ]) + ')'
-      )
+    const whereAnd: WhereOptions[] = buildBlockedAccountSQLOptimized(
+      '"VideoCommentModel"."accountId"',
+      [ serverActor.Account.id, '"Video->VideoChannel"."accountId"' ]
+    )
+
+    if (accountId) {
+      whereAnd.push({
+        [Op.eq]: accountId
+      })
+    }
+
+    const accountWhere = {
+      [Op.and]: whereAnd
     }
-    const accountWhere = accountId
-      ? {
-        [Op.and]: {
-          ...accountExclusion,
-          [Op.eq]: accountId
-        }
-      }
-      : accountExclusion
 
     const videoChannelWhere = videoChannelId ? { id: videoChannelId } : undefined