diff --git a/src/api3/config/datastore.rs b/src/api3/config/datastore.rs index cbb7910a..63a8a4e7 100644 --- a/src/api3/config/datastore.rs +++ b/src/api3/config/datastore.rs @@ -10,10 +10,9 @@ use crate::config::datastore; fn datastore_list(param: Value, _info: &ApiMethod) -> Result { println!("This is a test {}", param); - let config = datastore::config().unwrap(); - - - Ok(json!({})) + let config = datastore::config()?; + + Ok(config.convert_to_array("id")) } pub fn router() -> Router { diff --git a/src/section_config.rs b/src/section_config.rs index 25302cd7..21f2a4fa 100644 --- a/src/section_config.rs +++ b/src/section_config.rs @@ -38,7 +38,7 @@ enum ParseState<'a> { #[derive(Debug)] pub struct SectionConfigData { - sections: HashMap, + pub sections: HashMap, order: VecDeque, } @@ -56,6 +56,18 @@ impl SectionConfigData { fn record_order(&mut self, section_id: &str) { self.order.push_back(section_id.to_string()); } + + pub fn convert_to_array(&self, id_prop: &str) -> Value { + let mut list: Vec = vec![]; + + for (section_id, (_, data)) in &self.sections { + let mut entry = data.clone(); + entry.as_object_mut().unwrap().insert(id_prop.into(), section_id.clone().into()); + list.push(entry); + } + + list.into() + } } impl SectionConfig {