smbcloud_cli/project/
crud_delete.rs1use crate::{
2 cli::CommandResult,
3 ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
4};
5use anyhow::Result;
6use dialoguer::{theme::ColorfulTheme, Input};
7use smbcloud_networking::environment::Environment;
8use smbcloud_networking_project::delete_project;
9use spinners::Spinner;
10
11pub async fn process_project_delete(env: Environment, id: String) -> Result<CommandResult> {
12 let confirmation = Input::<String>::with_theme(&ColorfulTheme::default())
13 .with_prompt("Are you sure you want to delete this project? (y/n)")
14 .interact()
15 .unwrap();
16
17 let spinner = Spinner::new(
18 spinners::Spinners::SimpleDotsScrolling,
19 succeed_message("Deleting project"),
20 );
21
22 if confirmation != "y" {
23 return Ok(CommandResult {
24 spinner,
25 symbol: succeed_symbol(),
26 msg: succeed_message("Cancelled."),
27 });
28 }
29 match delete_project(env, id).await {
30 Ok(_) => Ok(CommandResult {
31 spinner,
32 symbol: succeed_symbol(),
33 msg: succeed_message("Done. Project has been deleted."),
34 }),
35 Err(e) => Ok(CommandResult {
36 spinner,
37 symbol: fail_symbol(),
38 msg: fail_message(&e.to_string()),
39 }),
40 }
41}