aboutsummaryrefslogtreecommitdiffstats
path: root/src/web_server/bot_data.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/web_server/bot_data.rs')
-rw-r--r--src/web_server/bot_data.rs47
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
+ }
+}