From 1bb6e307f1011456b28bb6eb27abc80e71ef187d Mon Sep 17 00:00:00 2001 From: Jokler Date: Mon, 5 Mar 2018 18:11:51 +0100 Subject: Check for outstanding tells when a userlist is received --- src/plugins/tell/database.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/plugins/tell/database.rs') 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, TellError>; + fn get_receivers(&self) -> Result, TellError>; fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError>; } @@ -69,6 +70,12 @@ impl Database for HashMap> { Ok(self.get(receiver).cloned().ok_or(ErrorKind::NotFound)?) } + fn get_receivers(&self) -> Result, TellError> { + Ok(self.iter() + .map(|(receiver, _)| receiver.to_owned()) + .collect::>()) + } + fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError> { match self.remove(receiver) { Some(_) => Ok(()), @@ -120,6 +127,16 @@ impl Database for Arc>> { .context(ErrorKind::MysqlError)?) } + fn get_receivers(&self) -> Result, TellError> { + use self::tells::columns; + + let conn = &*self.get().context(ErrorKind::NoConnection)?; + Ok(tells::table + .select(columns::receiver) + .load::(conn) + .context(ErrorKind::MysqlError)?) + } + fn delete_tells(&mut self, receiver: &str) -> Result<(), TellError> { use diesel; use self::tells::columns; -- cgit v1.2.3-70-g09d2