summaryrefslogtreecommitdiffstats
path: root/src/data.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.rs')
-rw-r--r--src/data.rs17
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)
}