reactive_graph_client/client/instances/entities/args/
create.rs1use crate::client::instances::properties::args::parse_property;
2use crate::client::types::entities::args::type_id::EntityTypeIdArgs;
3use clap::Args;
4use reactive_graph_graph::PropertyInstances;
5use serde_json::Value;
6use uuid::Uuid;
7
8#[derive(Args, Debug, Clone)]
9pub(crate) struct CreateEntityInstanceArgs {
10 #[clap(flatten)]
12 pub ty: EntityTypeIdArgs,
13
14 #[clap(short, long)]
16 pub id: Option<Uuid>,
17
18 #[clap(short, long)]
20 pub description: Option<String>,
21
22 #[clap(short, long, value_parser = parse_property)]
24 pub properties: Option<Vec<(String, Value)>>,
25 }
29
30impl CreateEntityInstanceArgs {
31 pub fn properties(&self) -> PropertyInstances {
32 match &self.properties {
33 None => PropertyInstances::new(),
34 Some(properties) => properties.iter().map(|(name, value)| (name.clone(), value.clone())).collect(),
35 }
36 }
37}