treq/view/commands/
save_new_request.rs1use async_trait::async_trait;
2
3use super::ViewCommand;
4use crate::app::backend::Backend;
5use crate::app::services::request::entities::requests::RequestData;
6use crate::view::output::utils::BREAK_LINE;
7use crate::view::output::writer::CliWriterRepository;
8use crate::view::style::{Color, StyledStr};
9
10pub struct SaveNewRequestExecutor<W1, W2>
11where
12 W1: CliWriterRepository,
13 W2: CliWriterRepository,
14{
15 pub request_name: String,
16 pub request_data: RequestData,
17 pub writer_stdout: W1,
18 pub writer_stderr: W2,
19}
20
21#[async_trait]
22impl<W1, W2> ViewCommand for SaveNewRequestExecutor<W1, W2>
23where
24 W1: CliWriterRepository,
25 W2: CliWriterRepository,
26{
27 async fn execute(mut self: Box<Self>, provider: &mut dyn Backend) -> anyhow::Result<()> {
28 self.writer_stderr.print_lines([BREAK_LINE]);
29 self.writer_stderr
30 .print_lines_styled([[StyledStr::from(" Saving").with_color_text(Color::Yellow)]]);
31 self.writer_stderr.print_lines_styled([[
32 StyledStr::from(" -> "),
33 StyledStr::from(&self.request_name).with_color_text(Color::Blue),
34 ]]);
35
36 provider
37 .save_request_datas_as(self.request_name, self.request_data)
38 .await?;
39
40 Ok(())
41 }
42}