reactive_graph_client/client/instances/relations/args/
create.rs

1use crate::client::instances::properties::args::parse_property;
2use crate::client::instances::relations::args::id::RelationInstanceIdArgs;
3use clap::Args;
4use reactive_graph_graph::PropertyInstances;
5use serde_json::Value;
6
7#[derive(Args, Debug, Clone)]
8pub(crate) struct CreateRelationInstanceArgs {
9    /// The id of the relation instance.
10    #[clap(flatten)]
11    pub id: RelationInstanceIdArgs,
12
13    /// The relation instance description.
14    #[clap(short, long)]
15    pub description: Option<String>,
16
17    /// The relation instance properties.
18    #[clap(short, long, value_parser = parse_property)]
19    pub properties: Option<Vec<(String, Value)>>,
20}
21
22impl CreateRelationInstanceArgs {
23    pub fn properties(&self) -> PropertyInstances {
24        match &self.properties {
25            None => PropertyInstances::new(),
26            Some(properties) => properties.iter().map(|(name, value)| (name.clone(), value.clone())).collect(),
27        }
28    }
29}