summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/QueryService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/core/QueryService.ts')
-rw-r--r--packages/backend/src/core/QueryService.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/backend/src/core/QueryService.ts b/packages/backend/src/core/QueryService.ts
index 119eb49c02..e219efaf3d 100644
--- a/packages/backend/src/core/QueryService.ts
+++ b/packages/backend/src/core/QueryService.ts
@@ -287,4 +287,26 @@ export class QueryService {
.andWhere(instanceSuspension('renoteUser'));
}
}
+
+ // Requirements: user replyUser renoteUser must be joined
+ @bindThis
+ public generateSuspendedUserQueryForNote(q: SelectQueryBuilder<any>, excludeAuthor?: boolean): void {
+ if (excludeAuthor) {
+ const brakets = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`)
+ .orWhere(`user.id = ${user}.id`)
+ .orWhere(`${user}.isSuspended = FALSE`));
+ q
+ .andWhere(brakets('replyUser'))
+ .andWhere(brakets('renoteUser'));
+ } else {
+ const brakets = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`)
+ .orWhere(`${user}.isSuspended = FALSE`));
+ q
+ .andWhere('user.isSuspended = FALSE')
+ .andWhere(brakets('replyUser'))
+ .andWhere(brakets('renoteUser'));
+ }
+ }
}