pub struct ParentEdgePostExecutionArguments {
definition: crate::wit::EdgeDefinition,
parents: Vec<String>,
metadata: String,
}
impl ParentEdgePostExecutionArguments {
pub(crate) fn new(definition: crate::wit::EdgeDefinition, parents: Vec<String>, metadata: String) -> Self {
Self {
definition,
parents,
metadata,
}
}
pub fn parent_type_name(&self) -> &str {
&self.definition.parent_type_name
}
pub fn field_name(&self) -> &str {
&self.definition.field_name
}
pub fn parents<'a, T>(&'a self) -> Result<Vec<T>, serde_json::Error>
where
T: serde::Deserialize<'a>,
{
self.parents.iter().map(|parent| serde_json::from_str(parent)).collect()
}
pub fn metadata<'a, T>(&'a self) -> Result<T, serde_json::Error>
where
T: serde::Deserialize<'a>,
{
serde_json::from_str(&self.metadata)
}
}