wsb 0.192.4181

Workspace - A tool suite for file operations, version management, and development workflow automation
Documentation
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::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 session_repo: Arc<SessionRepo>,
    pub project_repo: Arc<ProjectRepo>,
    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 {
            session_repo: Arc::new(SessionRepo::new(db_service.clone())),
            project_repo: Arc::new(ProjectRepo::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 session_repo(&self) -> Arc<SessionRepo> {
        self.session_repo.clone()
    }

    pub fn project_repo(&self) -> Arc<ProjectRepo> {
        self.project_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()
    }
}