diff options
author | Chocobozzz <me@florianbigard.com> | 2020-08-20 08:52:16 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2020-08-20 11:05:45 +0200 |
commit | 1c58423f6c42f494ea6358043bcb5a735b7bd5d7 (patch) | |
tree | 501b91e6a36cf95ae0f1ea4816ee9a8207b154ac /server/models/utils.ts | |
parent | 1c5c31a1cef7b12d71a799ae9c2a4371647bfee2 (diff) | |
download | PeerTube-1c58423f6c42f494ea6358043bcb5a735b7bd5d7.tar.gz PeerTube-1c58423f6c42f494ea6358043bcb5a735b7bd5d7.tar.zst PeerTube-1c58423f6c42f494ea6358043bcb5a735b7bd5d7.zip |
Optimize comment RSS sql query
Diffstat (limited to 'server/models/utils.ts')
-rw-r--r-- | server/models/utils.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/server/models/utils.ts b/server/models/utils.ts index d706d9ea8..6e5522346 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts | |||
@@ -129,6 +129,30 @@ function buildBlockedAccountSQL (blockerIds: number[]) { | |||
129 | 'WHERE "serverBlocklist"."accountId" IN (' + blockerIdsString + ')' | 129 | 'WHERE "serverBlocklist"."accountId" IN (' + blockerIdsString + ')' |
130 | } | 130 | } |
131 | 131 | ||
132 | function buildBlockedAccountSQLOptimized (columnNameJoin: string, blockerIds: number[]) { | ||
133 | const blockerIdsString = blockerIds.join(', ') | ||
134 | |||
135 | return [ | ||
136 | literal( | ||
137 | `NOT EXISTS (` + | ||
138 | ` SELECT 1 FROM "accountBlocklist" ` + | ||
139 | ` WHERE "targetAccountId" = ${columnNameJoin} ` + | ||
140 | ` AND "accountId" IN (${blockerIdsString})` + | ||
141 | `)` | ||
142 | ), | ||
143 | |||
144 | literal( | ||
145 | `NOT EXISTS (` + | ||
146 | ` SELECT 1 FROM "account" ` + | ||
147 | ` INNER JOIN "actor" ON account."actorId" = actor.id ` + | ||
148 | ` INNER JOIN "serverBlocklist" ON "actor"."serverId" = "serverBlocklist"."targetServerId" ` + | ||
149 | ` WHERE "account"."id" = ${columnNameJoin} ` + | ||
150 | ` AND "serverBlocklist"."accountId" IN (${blockerIdsString})` + | ||
151 | `)` | ||
152 | ) | ||
153 | ] | ||
154 | } | ||
155 | |||
132 | function buildServerIdsFollowedBy (actorId: any) { | 156 | function buildServerIdsFollowedBy (actorId: any) { |
133 | const actorIdNumber = parseInt(actorId + '', 10) | 157 | const actorIdNumber = parseInt(actorId + '', 10) |
134 | 158 | ||
@@ -201,6 +225,7 @@ function searchAttribute (sourceField?: string, targetField?: string) { | |||
201 | 225 | ||
202 | export { | 226 | export { |
203 | buildBlockedAccountSQL, | 227 | buildBlockedAccountSQL, |
228 | buildBlockedAccountSQLOptimized, | ||
204 | buildLocalActorIdsIn, | 229 | buildLocalActorIdsIn, |
205 | SortType, | 230 | SortType, |
206 | buildLocalAccountIdsIn, | 231 | buildLocalAccountIdsIn, |