]> Untitled Git - lemmy.git/blob - crates/api/src/site/federated_instances.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / api / src / site / federated_instances.rs
1 use crate::Perform;
2 use actix_web::web::Data;
3 use lemmy_api_common::{
4   context::LemmyContext,
5   site::{GetFederatedInstances, GetFederatedInstancesResponse},
6   utils::build_federated_instances,
7 };
8 use lemmy_db_views::structs::SiteView;
9 use lemmy_utils::error::LemmyError;
10
11 #[async_trait::async_trait(?Send)]
12 impl Perform for GetFederatedInstances {
13   type Response = GetFederatedInstancesResponse;
14
15   #[tracing::instrument(skip(context))]
16   async fn perform(&self, context: &Data<LemmyContext>) -> Result<Self::Response, LemmyError> {
17     let site_view = SiteView::read_local(&mut context.pool()).await?;
18     let federated_instances =
19       build_federated_instances(&site_view.local_site, &mut context.pool()).await?;
20
21     Ok(Self::Response {
22       federated_instances,
23     })
24   }
25 }