smbcloud_cli/project/
crud_delete.rs

1use 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}