diff options
Diffstat (limited to 'src/data.rs')
-rw-r--r-- | src/data.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/data.rs b/src/data.rs index 2734f38..061badb 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,4 +1,4 @@ -use crate::schema::{Person, Team}; +use crate::schema::{Person, Team, List}; use failure::{Error, ResultExt}; use serde::Deserialize; use std::collections::HashMap; @@ -48,6 +48,21 @@ impl Data { Ok(()) } + pub(crate) fn lists(&self) -> Result<HashMap<String, List>, Error> { + let mut lists = HashMap::new(); + for team in self.teams.values() { + for list in team.lists(self)? { + lists.insert(list.address().to_string(), list); + } + } + Ok(lists) + } + + pub(crate) fn list(&self, name: &str) -> Result<Option<List>, Error> { + let mut lists = self.lists()?; + Ok(lists.remove(name)) + } + pub(crate) fn team(&self, name: &str) -> Option<&Team> { self.teams.get(name) } |