use bollard::Docker; use clap::Arg; use clap::{Command, ArgMatches}; use crate::DbPool; use crate::srvmgr; use crate::status::ServerStatus; use diesel::prelude::*; use crate::schema; pub fn create_subcommand() -> Command { Command::new("disable") .about("disable") .arg(Arg::new("NAME").required(true)) } pub async fn subcommand(arguments: &ArgMatches, pool: &DbPool, docker: &Docker) -> Result<(), String> { use schema::servers::dsl::*; let server_name = arguments.get_one::("NAME").unwrap(); println!("Stopping container"); srvmgr::stop_server(&docker, pool, server_name, true).await?; println!("container stopped"); let conn = &mut pool.get().unwrap(); diesel::update(servers).filter(name.eq(server_name)).set(status.eq(ServerStatus::Disabled)).execute(conn).map_err(|e| format!("Failed to disable the server : {}", e))?; Ok(()) }