use peace_core::AppName;
use peace_resource_rt::internal::WorkspaceDirs;
use peace_rt_model_core::Error;
use crate::{Storage, WorkspaceDirsBuilder, WorkspaceSpec};
#[derive(Clone, Debug)]
pub struct Workspace {
app_name: AppName,
dirs: WorkspaceDirs,
storage: Storage,
}
impl Workspace {
pub fn new(app_name: AppName, workspace_spec: WorkspaceSpec) -> Result<Self, Error> {
let dirs = WorkspaceDirsBuilder::build(&app_name, workspace_spec)?;
let storage = Storage;
Ok(Self {
app_name,
dirs,
storage,
})
}
pub fn into_inner(self) -> (AppName, WorkspaceDirs, Storage) {
let Self {
app_name,
dirs,
storage,
} = self;
(app_name, dirs, storage)
}
pub fn app_name(&self) -> &AppName {
&self.app_name
}
pub fn dirs(&self) -> &WorkspaceDirs {
&self.dirs
}
pub fn storage(&self) -> &Storage {
&self.storage
}
}