use libimagstore::store::Entry;
use libimagentryutil::isa::Is;
use libimagentryutil::isa::IsKindHeaderPathProvider;
use failure::Fallible as Result;
use crate::diaryid::DiaryId;
use crate::diaryid::FromStoreId;
provide_kindflag_path!(pub IsDiaryEntry, "diary.is_diary_entry");
pub trait DiaryEntry {
fn is_diary_entry(&self) -> Result<bool>;
fn diary_id(&self) -> Result<DiaryId>;
}
impl DiaryEntry for Entry {
fn is_diary_entry(&self) -> Result<bool> {
self.is::<IsDiaryEntry>().map_err(From::from)
}
fn diary_id(&self) -> Result<DiaryId> {
DiaryId::from_storeid(&self.get_location().clone())
}
}