@smbcloud / cli / commits / 02a34e2

crud delete

Seto Elkahfi committed May 28, 2025 at 19:34 UTC 02a34e2e4ad5d2758e8ed155eda1e254aaf0006a
2 files changed +47 -34
crates/cli/src/project/crud_delete.rs new
+41
@@ -0,0 +1,41 @@
1 +use crate::{
2 + cli::CommandResult,
3 + ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
4 +};
5 +use anyhow::Result;
6 +use dialoguer::{theme::ColorfulTheme, Input};
7 +use smbcloud_networking::environment::Environment;
8 +use smbcloud_networking_project::delete_project;
9 +use spinners::Spinner;
10 +
11 +pub 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 +}
crates/cli/src/project/mod.rs
+6 -34
@@ -1,19 +1,21 @@
1 pub mod cli;
2 pub mod crud_create;
3 +pub mod crud_delete;
4 pub mod crud_read;
5
6 use self::cli::Commands;
7 use crate::{
8 cli::CommandResult,
8 - project::{crud_create::process_project_init, crud_read::process_project_list},
9 + project::crud_create::process_project_init,
10 + project::crud_delete::process_project_delete,
11 + project::crud_read::process_project_list,
12 ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
13 };
14 use anyhow::{anyhow, Result};
12 -use dialoguer::{theme::ColorfulTheme, Input};
15 use log::debug;
16 use smbcloud_model::project::{Config, Project};
17 use smbcloud_networking::environment::Environment;
16 -use smbcloud_networking_project::{delete_project, get_project};
18 +use smbcloud_networking_project::get_project;
19 use spinners::Spinner;
20 use std::{fs::OpenOptions, io::Write};
21 use tabled::{Table, Tabled};
@@ -36,6 +38,7 @@ pub async fn process_project(env: Environment, commands: Commands) -> Result<Com
38 match commands {
39 Commands::New {} => process_project_init(env).await,
40 Commands::List {} => process_project_list(env).await,
41 + Commands::Delete { id } => process_project_delete(env, id).await,
42 Commands::Show { id } => {
43 let mut spinner = Spinner::new(
44 spinners::Spinners::SimpleDotsScrolling,
@@ -62,37 +65,6 @@ pub async fn process_project(env: Environment, commands: Commands) -> Result<Com
65 }
66 }
67 }
65 - Commands::Delete { id } => {
66 - let confirmation = Input::<String>::with_theme(&ColorfulTheme::default())
67 - .with_prompt("Are you sure? (y/n)")
68 - .interact()
69 - .unwrap();
70 -
71 - let spinner = Spinner::new(
72 - spinners::Spinners::SimpleDotsScrolling,
73 - succeed_message("Deleting project"),
74 - );
75 -
76 - if confirmation != "y" {
77 - return Ok(CommandResult {
78 - spinner,
79 - symbol: succeed_symbol(),
80 - msg: succeed_message("Cancelled."),
81 - });
82 - }
83 - match delete_project(env, id).await {
84 - Ok(_) => Ok(CommandResult {
85 - spinner,
86 - symbol: succeed_symbol(),
87 - msg: succeed_message("Done. Project has been deleted."),
88 - }),
89 - Err(e) => Ok(CommandResult {
90 - spinner,
91 - symbol: fail_symbol(),
92 - msg: fail_message(&e.to_string()),
93 - }),
94 - }
95 - }
68 Commands::Use { id } => {
69 let project = get_project(env, id).await?;
70