Skip to main content

server_watchdog/infrastructure/cli/
event.rs

1use clap::Subcommand;
2use log::{debug, trace};
3use struct_input::StructInputTrait;
4use crate::application::config::EventConfigUseCase;
5use crate::domain::config::EventConfig;
6use crate::infrastructure::cli::util::{read_string, FormatChecker};
7
8#[derive(Subcommand)]
9#[derive(Debug)]
10pub enum EventCommands {
11    Add,
12    List,
13    Remove { name: String }
14}
15
16impl EventCommands {
17    pub async fn run(&self, event_config_adapter: Box<dyn EventConfigUseCase>) {
18        trace!("event command start: {:?}", &self);
19        match self {
20            EventCommands::Add => {
21                debug!("add event");
22                println!("--- Add Event ---");
23                let config = EventConfig::from_input().await;
24                debug!("new event config: {:?}", &config);
25                event_config_adapter.add_event(config).await.unwrap();
26            },
27            EventCommands::List => {
28                debug!("list event");
29                let events = event_config_adapter.list_event().await.unwrap();
30                debug!("events: {:?}", &events);
31
32                println!("--- Event List ---");
33
34                if events.is_empty() {
35                    println!("Empty Event");
36                } else {
37                    for event in events {
38                        println!(
39                            "=========\nName: {}\nType: {}\nTarget: {}\nKeyword: {}\n\n",
40                            event.name,
41                            event.r#type,
42                            event.target,
43                            event.keyword
44                        );
45                    }
46                }
47            },
48            EventCommands::Remove { name } => {
49                debug!("remove event: {}", name);
50                event_config_adapter.remove_event(name.clone()).await.unwrap();
51                println!("Event '{}' removed.", name);
52            }
53        }
54        trace!("event command end");
55    }
56}