use crate::prelude::*;
pub mod session_repo;
pub use session_repo::*;
use crate::persist::global::service::DatabaseService;
use crate::persist::local::repos::directive_repo::DirectiveRepo;
use crate::persist::local::repos::feature_repo::FeatureRepo;
use crate::persist::local::repos::catalogue_repo::CatalogueRepo;
use crate::persist::local::repos::project_repo::ProjectRepo;
use crate::persist::local::repos::session_repo::LocalSessionRepo;
use crate::persist::local::repos::task_repo::TaskRepo;
#[derive(Clone, Debug)]
pub struct WsbRepos {
pub project_repo: Arc<ProjectRepo>,
pub catalogue_repo: Arc<CatalogueRepo>,
pub feature_repo: Arc<FeatureRepo>,
pub task_repo: Arc<TaskRepo>,
pub work_session_repo: Arc<LocalSessionRepo>,
pub directive_repo: Arc<DirectiveRepo>,
}
impl WsbRepos {
pub fn new(db_service: &Arc<DatabaseService>) -> Self {
Self {
project_repo: Arc::new(ProjectRepo::new(db_service.clone())),
catalogue_repo: Arc::new(CatalogueRepo::new(db_service.clone())),
feature_repo: Arc::new(FeatureRepo::new(db_service.clone())),
task_repo: Arc::new(TaskRepo::new(db_service.clone())),
work_session_repo: Arc::new(LocalSessionRepo::new(db_service.clone())),
directive_repo: Arc::new(DirectiveRepo::new(db_service.clone())),
}
}
pub fn project_repo(&self) -> Arc<ProjectRepo> {
self.project_repo.clone()
}
pub fn catalogue_repo(&self) -> Arc<CatalogueRepo> {
self.catalogue_repo.clone()
}
pub fn feature_repo(&self) -> Arc<FeatureRepo> {
self.feature_repo.clone()
}
pub fn task_repo(&self) -> Arc<TaskRepo> {
self.task_repo.clone()
}
pub fn work_session_repo(&self) -> Arc<LocalSessionRepo> {
self.work_session_repo.clone()
}
pub fn directive_repo(&self) -> Arc<DirectiveRepo> {
self.directive_repo.clone()
}
}