alfred_core/
config_message.rs1use std::collections::LinkedList;
2use serde_derive::Deserialize;
3use crate::message::{Message, MessageType};
4
5#[derive(Deserialize, Clone, Debug)]
6pub struct ConfigMessage {
7 pub text: Option<String>,
8 pub starting_module: Option<String>,
9 pub request_topic: Option<String>,
10 pub response_topics: Option<LinkedList<String>>,
11 pub sender: Option<String>,
12 pub message_type: Option<MessageType>,
13 }
15
16impl ConfigMessage {
17 pub fn generate_message(&self, default: &Message) -> Message {
18 Message {
19 text: self.text.clone().unwrap_or_else(|| default.text.clone()),
20 starting_module: self.starting_module.clone().unwrap_or_else(|| default.starting_module.clone()),
21 request_topic: self.request_topic.clone().unwrap_or_else(|| default.request_topic.clone()),
22 response_topics: self.response_topics.clone().unwrap_or_else(|| default.response_topics.clone()),
23 sender: self.sender.clone().unwrap_or_else(|| default.sender.clone()),
24 message_type: self.message_type.clone().unwrap_or_else(|| default.message_type.clone()),
25 params: default.params.clone(),
26 }
27 }
28}