summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2017-11-24 18:55:12 +0100
committerMatthias Beyer <mail@beyermatthias.de>2017-12-08 14:54:45 +0100
commitdc7a315176f2faf2f46e5ff06fa75c3db74b9b36 (patch)
tree2428493fcc9d676d1c5201bf7a2716b636a18e9b
parentb181b488a2a4285cec338d0328c05cbeb1098486 (diff)
Getter for all instances
-rw-r--r--lib/domain/libimaghabit/src/iter.rs6
-rw-r--r--lib/domain/libimaghabit/src/store.rs19
2 files changed, 23 insertions, 2 deletions
diff --git a/lib/domain/libimaghabit/src/iter.rs b/lib/domain/libimaghabit/src/iter.rs
index d3c96508..416cbe66 100644
--- a/lib/domain/libimaghabit/src/iter.rs
+++ b/lib/domain/libimaghabit/src/iter.rs
@@ -21,12 +21,14 @@ use toml::Value;
use toml_query::read::TomlValueReadExt;
use libimagstore::store::FileLockEntry;
+use libimagstore::store::Store;
use libimagstore::storeid::StoreIdIterator;
use libimagstore::storeid::StoreId;
use error::HabitError as HE;
use error::HabitErrorKind as HEK;
use error::*;
+use util::IsHabitCheck;
pub struct HabitTemplateStoreIdIterator(StoreIdIterator);
@@ -35,7 +37,7 @@ impl Iterator for HabitTemplateStoreIdIterator {
fn next(&mut self) -> Option<Self::Item> {
while let Some(n) = self.0.next() {
- if n.is_in_collection(&["habit", "template"]) {
+ if n.is_habit_template() {
return Some(n)
}
}
@@ -56,7 +58,7 @@ impl Iterator for HabitInstanceStoreIdIterator {
fn next(&mut self) -> Option<Self::Item> {
while let Some(n) = self.0.next() {
- if n.is_in_collection(&["habit", "instance"]) {
+ if n.is_habit_instance() {
return Some(n)
}
}
diff --git a/lib/domain/libimaghabit/src/store.rs b/lib/domain/libimaghabit/src/store.rs
index 6ac5e889..5d30c03d 100644
--- a/lib/domain/libimaghabit/src/store.rs
+++ b/lib/domain/libimaghabit/src/store.rs
@@ -17,11 +17,17 @@
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
+use chrono::NaiveDate;
+
use error::Result;
+use error::HabitError as HE;
use habit::builder::HabitBuilder;
use iter::HabitTemplateStoreIdIterator;
+use iter::HabitInstanceStoreIdIterator;
use libimagstore::store::Store;
+use libimagstore::store::FileLockEntry;
+use libimagstore::storeid::StoreIdIterator;
/// Extension trait for libimagstore::store::Store which is basically our Habit-Store
pub trait HabitStore {
@@ -34,6 +40,14 @@ pub trait HabitStore {
/// Get an iterator over all habits
fn all_habit_templates(&self) -> Result<HabitTemplateStoreIdIterator>;
+ /// Get instances
+ fn all_habit_instances(&self) -> Result<HabitInstanceStoreIdIterator>;
+
+ // /// Get instances of a certain date
+ // fn all_habit_instances_on(&self, date: &NaiveDate) -> Result<HabitInstanceStoreIdIterator>;
+
+ // /// Get instances between two dates
+ // fn all_habit_instances_between(&self, start: &NaiveDate, end: &NaiveDate) -> Result<HabitInstanceStoreIdIterator>;
}
impl HabitStore for Store {
@@ -41,4 +55,9 @@ impl HabitStore for Store {
fn all_habit_templates(&self) -> Result<HabitTemplateStoreIdIterator> {
self.entries().map(HabitTemplateStoreIdIterator::from).map_err(From::from)
}
+
+ fn all_habit_instances(&self) -> Result<HabitInstanceStoreIdIterator> {
+ self.entries().map(HabitInstanceStoreIdIterator::from).map_err(From::from)
+ }
}
+