X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fabuse%2Fabuse-query-builder.ts;h=cfc924ba4b4c495a3d2d1ae08886d161e1d5856c;hb=e722fb5923ddf11d72e48cec9788abc64327c22f;hp=5fddcf3c439d451b4b8267fc11d7ad600c4f75c6;hpb=ec903c010ecc54ec2acad0bf2cf10e7fbf6a0fa2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/abuse/abuse-query-builder.ts b/server/models/abuse/abuse-query-builder.ts index 5fddcf3c4..cfc924ba4 100644 --- a/server/models/abuse/abuse-query-builder.ts +++ b/server/models/abuse/abuse-query-builder.ts @@ -13,7 +13,7 @@ export type BuildAbusesQueryOptions = { searchReporter?: string searchReportee?: string - // video releated + // video related searchVideo?: string searchVideoChannel?: string videoIs?: AbuseVideoIs @@ -26,8 +26,10 @@ export type BuildAbusesQueryOptions = { state?: AbuseState // accountIds - serverAccountId: number - userAccountId: number + serverAccountId?: number + userAccountId?: number + + reporterAccountId?: number } function buildAbuseListQuery (options: BuildAbusesQueryOptions, type: 'count' | 'id') { @@ -40,12 +42,22 @@ function buildAbuseListQuery (options: BuildAbusesQueryOptions, type: 'count' | 'LEFT JOIN "videoBlacklist" ON "videoBlacklist"."videoId" = "video"."id"', 'LEFT JOIN "videoChannel" ON "video"."channelId" = "videoChannel"."id"', 'LEFT JOIN "account" "reporterAccount" ON "reporterAccount"."id" = "abuse"."reporterAccountId"', - 'LEFT JOIN "account" "flaggedAccount" ON "flaggedAccount"."id" = "abuse"."reporterAccountId"', + 'LEFT JOIN "account" "flaggedAccount" ON "flaggedAccount"."id" = "abuse"."flaggedAccountId"', 'LEFT JOIN "commentAbuse" ON "commentAbuse"."abuseId" = "abuse"."id"', 'LEFT JOIN "videoComment" ON "commentAbuse"."videoCommentId" = "videoComment"."id"' ] - whereAnd.push('"abuse"."reporterAccountId" NOT IN (' + buildBlockedAccountSQL([ options.serverAccountId, options.userAccountId ]) + ')') + if (options.serverAccountId || options.userAccountId) { + whereAnd.push( + '"abuse"."reporterAccountId" IS NULL OR ' + + '"abuse"."reporterAccountId" NOT IN (' + buildBlockedAccountSQL([ options.serverAccountId, options.userAccountId ]) + ')' + ) + } + + if (options.reporterAccountId) { + whereAnd.push('"abuse"."reporterAccountId" = :reporterAccountId') + replacements.reporterAccountId = options.reporterAccountId + } if (options.search) { const searchWhereOr = [