use crate::resource::version::{HttpVersion, RawVersion};
use serde_json::Value;
pub mod group_crud;
pub mod group_queries;
pub mod system_info;
pub mod user_crud;
pub mod user_queries;
pub use group_crud::*;
pub use group_queries::*;
pub use system_info::*;
pub use user_crud::*;
pub use user_queries::*;
pub fn etag_to_raw_version(etag_value: &Value) -> Option<String> {
let etag_str = etag_value.as_str()?;
if let Ok(version) = etag_str.parse::<HttpVersion>() {
return Some(version.as_str().to_string());
}
if let Ok(version) = etag_str.parse::<RawVersion>() {
return Some(version.as_str().to_string());
}
None
}
pub fn convert_resource_versions(mut resource: Value) -> Value {
if let Some(meta) = resource.get_mut("meta") {
if let Some(version) = meta.get("version") {
if let Some(raw_version) = etag_to_raw_version(version) {
meta["version"] = Value::String(raw_version);
}
}
}
resource
}
pub fn convert_resources_versions(resources: &mut Value) {
if let Some(resources_array) = resources.as_array_mut() {
for resource in resources_array {
*resource = convert_resource_versions(resource.clone());
}
}
}