1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use std::sync::Arc;
use url::Url;
use crate::sites::{Site, SiteId, SiteIdBuilder, SiteModule, SiteReadOption, SiteRepository};
use shaku::HasProvider;

pub struct SiteKit {
    site_repository: Arc<dyn SiteRepository>,
}

impl SiteKit {
    pub fn get_site(&self, url: Url) -> (&Box<dyn Site>, Box<dyn SiteId>) {
        let domain = url.domain().unwrap().to_string();
        let created_site = self.site_repository.read(SiteReadOption::Domain(domain));
        created_site
    }
    pub fn site_id_builder() -> Box<dyn SiteIdBuilder> {
        let module = SiteModule::builder().build();
        let service: Box<dyn SiteIdBuilder> = module.provide().unwrap();
        service
    }
}