summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-03 21:54:25 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-03 21:54:25 -0400
commitff8b22ce608780bd4084bf26c8a3ba35ac31425d (patch)
tree78e7ced4be22a633ef84ca6c96f5c4050f24fe63
parentcheck suspended users/hosts in following feed (diff)
downloadsharkey-ff8b22ce608780bd4084bf26c8a3ba35ac31425d.tar.gz
sharkey-ff8b22ce608780bd4084bf26c8a3ba35ac31425d.tar.bz2
sharkey-ff8b22ce608780bd4084bf26c8a3ba35ac31425d.zip
apply optimized domain block pattern to silence and bubble checks
-rw-r--r--packages/backend/src/server/api/endpoints/federation/instances.ts35
1 files changed, 8 insertions, 27 deletions
diff --git a/packages/backend/src/server/api/endpoints/federation/instances.ts b/packages/backend/src/server/api/endpoints/federation/instances.ts
index d644db479c..eeaebc3708 100644
--- a/packages/backend/src/server/api/endpoints/federation/instances.ts
+++ b/packages/backend/src/server/api/endpoints/federation/instances.ts
@@ -113,11 +113,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
if (typeof ps.blocked === 'boolean') {
- const meta = await this.metaService.fetch(true);
if (ps.blocked) {
- query.andWhere(meta.blockedHosts.length === 0 ? '1=0' : 'instance.host IN (select unnest("blockedHosts") as x from "meta")');
+ query.andWhere('instance.host IN (select unnest("blockedHosts") as x from "meta")');
} else {
- query.andWhere(meta.blockedHosts.length === 0 ? '1=1' : 'instance.host NOT IN (select unnest("blockedHosts") as x from "meta")');
+ query.andWhere('instance.host NOT IN (select unnest("blockedHosts") as x from "meta")');
}
}
@@ -146,36 +145,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
if (typeof ps.silenced === 'boolean') {
- const meta = await this.metaService.fetch(true);
-
if (ps.silenced) {
- if (meta.silencedHosts.length === 0) {
- return [];
- }
- query.andWhere('instance.host IN (:...silences)', {
- silences: meta.silencedHosts,
- });
- } else if (meta.silencedHosts.length > 0) {
- query.andWhere('instance.host NOT IN (:...silences)', {
- silences: meta.silencedHosts,
- });
+ query.andWhere('instance.host IN (select unnest("silencedHosts") as x from "meta")');
+ } else {
+ query.andWhere('instance.host NOT IN (select unnest("silencedHosts") as x from "meta")');
}
}
if (typeof ps.bubble === 'boolean') {
- const meta = await this.metaService.fetch(true);
-
if (ps.bubble) {
- if (meta.bubbleInstances.length === 0) {
- return [];
- }
- query.andWhere('instance.host IN (:...bubble)', {
- bubble: meta.bubbleInstances,
- });
- } else if (meta.bubbleInstances.length > 0) {
- query.andWhere('instance.host NOT IN (:...bubble)', {
- bubble: meta.bubbleInstances,
- });
+ query.andWhere('instance.host IN (select unnest("bubbleInstances") as x from "meta")');
+ } else {
+ query.andWhere('instance.host NOT IN (select unnest("bubbleInstances") as x from "meta")');
}
}