aboutsummaryrefslogtreecommitdiff
path: root/lockchain-files/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lockchain-files/src/lib.rs')
-rw-r--r--lockchain-files/src/lib.rs33
1 files changed, 18 insertions, 15 deletions
diff --git a/lockchain-files/src/lib.rs b/lockchain-files/src/lib.rs
index 5926355..af7271e 100644
--- a/lockchain-files/src/lib.rs
+++ b/lockchain-files/src/lib.rs
@@ -56,6 +56,7 @@ extern crate serde;
use lcc::traits::{Body, LoadRecord, Vault};
use lcc::{
+ errors::VaultError,
users::{Access, Token},
Generator, MetaDomain, Payload, Record, VaultMetadata,
};
@@ -101,30 +102,32 @@ impl<T: Body> DataVault<T> {
self
}
- fn load(mut self) -> Option<Box<Self>> {
+ fn load(mut self) -> Result<Box<Self>, VaultError> {
self.config = match VaultConfig::load(&self.fs.root) {
Ok(cfg) => cfg,
- _ => return None,
+ _ => return Err(VaultError::FailedLoading),
};
- Some(Box::new(self))
+ Ok(Box::new(self))
}
}
impl<T: Body> LoadRecord<T> for DataVault<T> {}
impl<T: Body> Vault<T> for DataVault<T> {
- fn new(gen: Generator) -> DataVault<T> {
- Self {
- meta_info: (
- gen.name.clone().unwrap().into(),
- gen.location.clone().unwrap().into(),
- ),
- records: HashMap::new(),
- config: VaultConfig::new(),
- metadata: HashMap::new(),
- fs: Filesystem::new(&gen.location.unwrap(), &gen.name.unwrap()),
- }.initialize()
+ fn new(gen: Generator) -> Result<Box<DataVault<T>>, VaultError> {
+ Ok(Box::new(
+ Self {
+ meta_info: (
+ gen.name.clone().unwrap().into(),
+ gen.location.clone().unwrap().into(),
+ ),
+ records: HashMap::new(),
+ config: VaultConfig::new(),
+ metadata: HashMap::new(),
+ fs: Filesystem::new(&gen.location.unwrap(), &gen.name.unwrap()),
+ }.initialize(),
+ ))
}
fn create_user(
@@ -144,7 +147,7 @@ impl<T: Body> Vault<T> for DataVault<T> {
//
// If it's compatible we can open the vault into memory
// (loading all required paths into the struct), then return it
- fn load(name: &str, location: &str) -> Option<Box<Self>> {
+ fn load(name: &str, location: &str) -> Result<Box<Self>, VaultError> {
Self {
meta_info: (name.into(), location.into()),
records: HashMap::new(),