1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use crate::{
ObjectTypeStore,
SudodbError,
convert_field_value_store_to_json_string,
SelectionSet
};
use std::error::Error;
use std::collections::HashMap;
pub fn delete(
object_type_store: &mut ObjectTypeStore,
object_type_name: &str,
id: &str,
selection_set: &SelectionSet
) -> Result<Vec<String>, Box<dyn Error>> {
let object_type_option = object_type_store.get_mut(object_type_name);
if let Some(object_type) = object_type_option {
let field_value_store_option = object_type.field_values_store.get(id);
if let Some(field_value_store) = field_value_store_option {
let cloned = field_value_store.clone();
object_type.field_values_store.remove(id);
let json_result_string = convert_field_value_store_to_json_string(
object_type_store,
&cloned,
selection_set
);
return Ok(vec![json_result_string]);
}
else {
return Ok(vec![]);
}
}
else {
return Err(Box::new(SudodbError {
message: format!(
"{object_type_name} not found in database",
object_type_name = object_type_name
)
}));
}
}