server_watchdog/infrastructure/cli/
event.rs1use 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}