diff options
Diffstat (limited to 'src/web_server/bot_data.rs')
| -rw-r--r-- | src/web_server/bot_data.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/web_server/bot_data.rs b/src/web_server/bot_data.rs new file mode 100644 index 0000000..af0c5e1 --- /dev/null +++ b/src/web_server/bot_data.rs @@ -0,0 +1,47 @@ +use async_trait::async_trait; + +use xtra::{Context, Handler, Message}; + +use crate::bot::MasterBot; +use crate::web_server::BotData; + +pub struct BotNameListRequest; + +impl Message for BotNameListRequest { + type Result = Vec<String>; +} + +#[async_trait] +impl Handler<BotNameListRequest> for MasterBot { + async fn handle(&mut self, _: BotNameListRequest, _: &mut Context<Self>) -> Vec<String> { + self.bot_names() + } +} + +pub struct BotDataListRequest; + +impl Message for BotDataListRequest { + type Result = Vec<BotData>; +} + +#[async_trait] +impl Handler<BotDataListRequest> for MasterBot { + async fn handle(&mut self, _: BotDataListRequest, _: &mut Context<Self>) -> Vec<BotData> { + self.bot_datas().await + } +} + +pub struct BotDataRequest(pub String); + +impl Message for BotDataRequest { + type Result = Option<BotData>; +} + +#[async_trait] +impl Handler<BotDataRequest> for MasterBot { + async fn handle(&mut self, r: BotDataRequest, _: &mut Context<Self>) -> Option<BotData> { + let name = r.0; + + self.bot_data(name).await + } +} |
