summaryrefslogtreecommitdiffstats
path: root/libimagnotes
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-08-25 19:56:47 +0200
committerMatthias Beyer <mail@beyermatthias.de>2016-08-28 18:41:56 +0200
commit63aa16de4eac12c0e276d853a27eb83be21fcebe (patch)
tree6f26b80889827aabc5665f009655466b73c8a786 /libimagnotes
parentc9612437fd4ffecd460ee4bdcb8a9b77a1e94d76 (diff)
Fix libimagnotes::{error, note}::* for new StoreId interface
Diffstat (limited to 'libimagnotes')
-rw-r--r--libimagnotes/src/error.rs1
-rw-r--r--libimagnotes/src/note.rs34
2 files changed, 19 insertions, 16 deletions
diff --git a/libimagnotes/src/error.rs b/libimagnotes/src/error.rs
index bbb02d0c..bebed316 100644
--- a/libimagnotes/src/error.rs
+++ b/libimagnotes/src/error.rs
@@ -9,4 +9,5 @@ generate_error_module!(
pub use self::error::NoteError;
pub use self::error::NoteErrorKind;
+pub use self::error::MapErrInto;
diff --git a/libimagnotes/src/note.rs b/libimagnotes/src/note.rs
index 48f25bf0..768b5607 100644
--- a/libimagnotes/src/note.rs
+++ b/libimagnotes/src/note.rs
@@ -19,6 +19,7 @@ use module_path::ModuleEntryPath;
use result::Result;
use error::NoteError as NE;
use error::NoteErrorKind as NEK;
+use error::MapErrInto;
#[derive(Debug)]
pub struct Note<'a> {
@@ -32,11 +33,10 @@ impl<'a> Note<'a> {
debug!("Creating new Note: '{}'", name);
let fle = {
- let lockentry = store.create(ModuleEntryPath::new(name.clone()).into_storeid());
- if lockentry.is_err() {
- return Err(NE::new(NEK::StoreWriteError, Some(Box::new(lockentry.unwrap_err()))));
- }
- let mut lockentry = lockentry.unwrap();
+ let mut lockentry = try!(ModuleEntryPath::new(name.clone())
+ .into_storeid()
+ .and_then(|id| store.create(id))
+ .map_err_into(NEK::StoreWriteError));
{
let mut entry = lockentry.deref_mut();
@@ -93,24 +93,26 @@ impl<'a> Note<'a> {
}
pub fn delete(store: &Store, name: String) -> Result<()> {
- store.delete(ModuleEntryPath::new(name).into_storeid())
- .map_err(|e| NE::new(NEK::StoreWriteError, Some(Box::new(e))))
+ ModuleEntryPath::new(name)
+ .into_storeid()
+ .and_then(|id| store.delete(id))
+ .map_err_into(NEK::StoreWriteError)
}
pub fn retrieve(store: &Store, name: String) -> Result<Note> {
- store.retrieve(ModuleEntryPath::new(name).into_storeid())
- .map_err(|e| NE::new(NEK::StoreWriteError, Some(Box::new(e))))
+ ModuleEntryPath::new(name)
+ .into_storeid()
+ .and_then(|id| store.retrieve(id))
+ .map_err_into(NEK::StoreWriteError)
.map(|entry| Note { entry: entry })
}
pub fn get(store: &Store, name: String) -> Result<Option<Note>> {
- use libimagerror::into::IntoError;
-
- match store.get(ModuleEntryPath::new(name).into_storeid()) {
- Ok(Some(entry)) => Ok(Some(Note { entry: entry })),
- Ok(None) => Ok(None),
- Err(e) => Err(NEK::StoreWriteError.into_error_with_cause(Box::new(e))),
- }
+ ModuleEntryPath::new(name)
+ .into_storeid()
+ .and_then(|id| store.get(id))
+ .map_err_into(NEK::StoreWriteError)
+ .map(|o| o.map(|entry| Note { entry: entry }))
}
pub fn all_notes(store: &Store) -> Result<NoteIterator> {