diff options
| author | Jokler <jokler.contact@gmail.com> | 2018-03-05 18:11:51 +0100 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2018-03-05 18:11:51 +0100 |
| commit | 1bb6e307f1011456b28bb6eb27abc80e71ef187d (patch) | |
| tree | 5cb3b84e07a3252e247704fac058848148ccd441 /src/plugins/tell/database.rs | |
| parent | 3e439f17248a5168c22955d7cb4d0a9ba7531e5f (diff) | |
| download | frippy-1bb6e307f1011456b28bb6eb27abc80e71ef187d.tar.gz frippy-1bb6e307f1011456b28bb6eb27abc80e71ef187d.zip | |
Check for outstanding tells when a userlist is received
Diffstat (limited to 'src/plugins/tell/database.rs')
| -rw-r--r-- | src/plugins/tell/database.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/tell/database.rs b/src/plugins/tell/database.rs index 40ec6fc..98e9fb3 100644 --- a/src/plugins/tell/database.rs +++ b/src/plugins/tell/database.rs @@ -43,6 +43,7 @@ pub struct NewTellMessage<'a> { pub trait Database: Send { fn insert_tell(&mut self, tell: &NewTellMessage) -> Result<(), TellError>; fn get_tells(&self, receiver: &str) -> Result<Vec<TellMessage>, TellError>; + fn get_receivers(&self) -> Result<Vec<String>, TellError>; fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError>; } @@ -69,6 +70,12 @@ impl Database for HashMap<String, Vec<TellMessage>> { Ok(self.get(receiver).cloned().ok_or(ErrorKind::NotFound)?) } + fn get_receivers(&self) -> Result<Vec<String>, TellError> { + Ok(self.iter() + .map(|(receiver, _)| receiver.to_owned()) + .collect::<Vec<_>>()) + } + fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError> { match self.remove(receiver) { Some(_) => Ok(()), @@ -120,6 +127,16 @@ impl Database for Arc<Pool<ConnectionManager<MysqlConnection>>> { .context(ErrorKind::MysqlError)?) } + fn get_receivers(&self) -> Result<Vec<String>, TellError> { + use self::tells::columns; + + let conn = &*self.get().context(ErrorKind::NoConnection)?; + Ok(tells::table + .select(columns::receiver) + .load::<String>(conn) + .context(ErrorKind::MysqlError)?) + } + fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError> { use diesel; use self::tells::columns; |
