use super::bucketed::BucketedStore;
use super::fs_backend::FsBackend;
use super::pad_store::PadStore;
use std::path::PathBuf;
pub type FileStore = BucketedStore<FsBackend>;
impl FileStore {
pub fn new_fs(project_root: Option<PathBuf>, global_root: PathBuf) -> Self {
BucketedStore::new(
FsBackend::new(
project_root.as_ref().map(|r| r.join("active")),
global_root.join("active"),
),
FsBackend::new(
project_root.as_ref().map(|r| r.join("archived")),
global_root.join("archived"),
),
FsBackend::new(
project_root.as_ref().map(|r| r.join("deleted")),
global_root.join("deleted"),
),
FsBackend::new(project_root, global_root),
)
}
pub fn with_format(mut self, ext: &str) -> Self {
self.active = PadStore::with_backend(self.active.backend.with_format(ext));
self.archived = PadStore::with_backend(self.archived.backend.with_format(ext));
self.deleted = PadStore::with_backend(self.deleted.backend.with_format(ext));
self
}
pub fn set_format(&mut self, ext: &str) {
self.active.backend.set_format(ext);
self.archived.backend.set_format(ext);
self.deleted.backend.set_format(ext);
}
pub fn format_ext(&self) -> &str {
self.active.backend.format_ext()
}
}