33 lines
895 B
Rust
33 lines
895 B
Rust
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::<String>("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(())
|
|
}
|