Browse Source

get_tasks returns a HashMap

github_actions
daladim 5 years ago
parent
commit
4dd0bea78b
  1. 23
      src/calendar.rs

23
src/calendar.rs

@ -1,8 +1,10 @@
use std::convert::TryFrom; use std::convert::TryFrom;
use std::error::Error; use std::error::Error;
use std::collections::HashMap;
use url::Url; use url::Url;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use crate::task::Task; use crate::task::Task;
use crate::task::TaskId; use crate::task::TaskId;
@ -91,7 +93,7 @@ impl Calendar {
/// Returns the list of tasks that this calendar contains /// Returns the list of tasks that this calendar contains
/// Pass a `completed` flag to filter only the completed (or non-completed) tasks /// Pass a `completed` flag to filter only the completed (or non-completed) tasks
pub fn get_tasks(&self, completed: Option<bool>) -> Vec<&Task> { pub fn get_tasks(&self, completed: Option<bool>) -> HashMap<TaskId, &Task> {
self.get_tasks_modified_since(None, completed) self.get_tasks_modified_since(None, completed)
} }
@ -108,9 +110,20 @@ impl Calendar {
/// Returns the tasks that have been last-modified after `since` /// Returns the tasks that have been last-modified after `since`
/// Pass a `completed` flag to filter only the completed (or non-completed) tasks /// Pass a `completed` flag to filter only the completed (or non-completed) tasks
fn get_tasks_modified_since(&self, _since: Option<std::time::SystemTime>, _completed: Option<bool>) -> Vec<&Task> { pub fn get_tasks_modified_since(&self, since: Option<DateTime<Utc>>, _completed: Option<bool>) -> HashMap<TaskId, &Task> {
self.tasks let mut map = HashMap::new();
.iter()
.collect() for task in &self.tasks {
match since {
None => (),
Some(since) => if task.last_modified() < since {
continue;
},
}
map.insert(task.id().clone(), task);
}
map
} }
} }

Loading…
Cancel
Save