api3/config/datastore.rs: implement delete

This commit is contained in:
Dietmar Maurer 2018-12-09 16:52:32 +01:00
parent 1a7bc3dd5e
commit 34d3ba52eb
2 changed files with 35 additions and 2 deletions

View File

@ -30,7 +30,6 @@ pub fn post() -> ApiMethod {
}
fn create_datastore(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
println!("This is a test {}", param);
// fixme: locking ?
@ -53,11 +52,39 @@ fn create_datastore(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
Ok(Value::Null)
}
pub fn delete() -> ApiMethod {
ApiMethod::new(
delete_datastore,
ObjectSchema::new("Remove a datastore configuration.")
.required("name", StringSchema::new("Datastore name.")))
}
fn delete_datastore(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
println!("This is a test {}", param);
// fixme: locking ?
// fixme: check digest ?
let mut config = datastore::config()?;
let name = param["name"].as_str().unwrap();
match config.sections.get(name) {
Some(_) => { config.sections.remove(name); },
None => bail!("datastore '{}' does not exist.", name),
}
datastore::save_config(&config)?;
Ok(Value::Null)
}
pub fn router() -> Router {
let route = Router::new()
.get(get())
.post(post());
.post(post())
.delete(delete());
route

View File

@ -72,6 +72,12 @@ fn main() {
fixed_param: vec![],
});
cmd_def.insert("remove".to_owned(), CliCommand {
info: api3::config::datastore::delete(),
arg_param: vec!["name"],
fixed_param: vec![],
});
if let Err(err) = run_cli_command(&cmd_def) {
eprintln!("Error: {}", err);
print_cli_usage();