reactive_graph_client/client/instances/relations/args/
create.rs1use 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 #[clap(flatten)]
11 pub id: RelationInstanceIdArgs,
12
13 #[clap(short, long)]
15 pub description: Option<String>,
16
17 #[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}