freedom_api/extensions/
site.rs

1use crate::{Api, error::Error};
2
3use freedom_models::site::{Site, SiteConfiguration};
4
5pub trait SiteConfigurationExt {
6    fn get_id(&self) -> Result<i32, Error>;
7
8    fn get_site<C>(&self, client: &C) -> impl Future<Output = Result<Site, Error>> + Send + Sync
9    where
10        C: Api;
11}
12
13impl SiteConfigurationExt for SiteConfiguration {
14    fn get_id(&self) -> Result<i32, Error> {
15        super::get_id("self", &self.links)
16    }
17
18    async fn get_site<C>(&self, client: &C) -> Result<Site, Error>
19    where
20        C: Api,
21    {
22        super::get_content("site", &self.links, client).await
23    }
24}
25
26pub trait SiteExt {
27    fn get_id(&self) -> Result<i32, Error>;
28
29    fn get_site_configurations<C>(
30        &self,
31        client: &C,
32    ) -> impl Future<Output = Result<Vec<SiteConfiguration>, Error>> + Send + Sync
33    where
34        C: Api;
35}
36
37impl SiteExt for Site {
38    fn get_id(&self) -> Result<i32, Error> {
39        super::get_id("self", &self.links)
40    }
41
42    async fn get_site_configurations<C>(&self, client: &C) -> Result<Vec<SiteConfiguration>, Error>
43    where
44        C: Api,
45    {
46        super::get_embedded("configurations", &self.links, client).await
47    }
48}