From 2d7b416652c7f5afe72cfcf9c0fdc082d53e922e Mon Sep 17 00:00:00 2001 From: Bao Date: Thu, 27 Jul 2023 05:12:18 -0500 Subject: [PATCH] Omit local instance from federated instances list (#3712) Co-authored-by: Nutomic --- crates/db_schema/src/impls/instance.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/db_schema/src/impls/instance.rs b/crates/db_schema/src/impls/instance.rs index d6a23a71..f92d261b 100644 --- a/crates/db_schema/src/impls/instance.rs +++ b/crates/db_schema/src/impls/instance.rs @@ -1,7 +1,7 @@ use crate::{ diesel::dsl::IntervalDsl, newtypes::InstanceId, - schema::{federation_allowlist, federation_blocklist, instance}, + schema::{federation_allowlist, federation_blocklist, instance, local_site, site}, source::instance::{Instance, InstanceForm}, utils::{get_conn, naive_now, DbPool}, }; @@ -97,6 +97,10 @@ impl Instance { pub async fn linked(pool: &mut DbPool<'_>) -> Result, Error> { let conn = &mut get_conn(pool).await?; instance::table + // omit instance representing the local site + .left_join(site::table.inner_join(local_site::table)) + .filter(local_site::id.is_null()) + // omit instances in the blocklist .left_join(federation_blocklist::table) .filter(federation_blocklist::id.is_null()) .select(instance::all_columns)