use serde_json::Value;
pub struct SchemaGenerator;
impl SchemaGenerator {
pub fn new() -> Self {
Self
}
pub fn generate<T: serde::Serialize>(&self) -> Value {
serde_json::json!({
"type": "object",
"properties": {}
})
}
pub fn object_schema(properties: Vec<(&str, &str)>) -> Value {
let props: serde_json::Map<String, Value> = properties
.into_iter()
.map(|(name, type_name)| {
let type_str = match type_name {
"string" => "string",
"number" => "number",
"boolean" => "boolean",
"array" => "array",
_ => "object",
};
(name.to_string(), serde_json::json!({ "type": type_str }))
})
.collect();
serde_json::json!({
"type": "object",
"properties": props,
})
}
}
impl Default for SchemaGenerator {
fn default() -> Self {
Self::new()
}
}
pub trait Schema {
fn schema() -> Value;
}