use crate::common::{Identifier, ParameterType, Store};
use schemars::schema::Schema;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, JsonSchema, PartialEq, Serialize)]
#[serde(rename = "parameter")]
pub struct Parameter {
pub id: Identifier,
#[serde(flatten)]
pub kind: ParameterType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub store: Option<Store>,
}
impl Parameter {
pub fn new(key: &str, schema: &Schema) -> Result<Self, String> {
let kind = ParameterType::try_from(schema)?;
Ok(Parameter {
id: Identifier {
content: key.to_string(),
},
kind,
store: None,
})
}
}