Omit local instance from federated instances list (#3712)
authorBao <qubidt@gmail.com>
Thu, 27 Jul 2023 10:12:18 +0000 (05:12 -0500)
committerGitHub <noreply@github.com>
Thu, 27 Jul 2023 10:12:18 +0000 (12:12 +0200)
Co-authored-by: Nutomic <me@nutomic.com>
crates/db_schema/src/impls/instance.rs

index d6a23a71215cd20edf7daabfa77a9c5de3a61f25..f92d261b544c9910a63cf5839aad9c6bf3bbaaa7 100644 (file)
@@ -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<Vec<Self>, 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)