diff --git a/src/core/src/collection.rs b/src/core/src/collection.rs index bc52b35da..2855afdbb 100644 --- a/src/core/src/collection.rs +++ b/src/core/src/collection.rs @@ -7,6 +7,8 @@ use crate::encodings::Idx; use crate::manifest::{Manifest, Record}; use crate::prelude::*; use crate::storage::{FSStorage, InnerStorage, MemStorage, SigStore, ZipStorage}; +#[cfg(all(feature = "branchwater", not(target_arch = "wasm32")))] +use crate::storage::rocksdb::RocksDBStorage; use crate::{Error, Result}; #[cfg(feature = "parallel")] @@ -132,6 +134,18 @@ impl Collection { storage: InnerStorage::new(storage), }) } + #[cfg(all(feature = "branchwater", not(target_arch = "wasm32")))] + pub fn from_rocksdb>(dirname: P) -> Result { + // @CTB: is this right? + let path = dirname.as_ref().as_os_str().to_str().unwrap(); + let storage = RocksDBStorage::from_path(path); + // Load manifest from standard location in zipstorage + let manifest = Manifest::from_reader(storage.load("SOURMASH-MANIFEST.csv")?.as_slice())?; + Ok(Self { + manifest, + storage: InnerStorage::new(storage), + }) + } pub fn from_sigs(sigs: Vec) -> Result { let storage = MemStorage::new();