pub struct EdgeNodePostExecutionArguments {
definition: crate::wit::EdgeDefinition,
nodes: Vec<String>,
metadata: String,
}
impl EdgeNodePostExecutionArguments {
pub(crate) fn new(definition: crate::wit::EdgeDefinition, nodes: Vec<String>, metadata: String) -> Self {
Self {
definition,
nodes,
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 nodes<'a, T>(&'a self) -> Result<Vec<T>, serde_json::Error>
where
T: serde::Deserialize<'a>,
{
self.nodes.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)
}
}