reactive_graph_client/client/instances/flows/
mod.rs1use crate::client::error::CommandError;
2use crate::client::error::CommandError::NoContent;
3use crate::client::error::CommandError::NotFound;
4use crate::client::instances::flows::args::FlowInstancesArgs;
5use crate::client::instances::flows::commands::FlowInstancesCommands;
6use crate::client::instances::flows::output_format::FlowInstancesOutputFormatWrapper;
7use crate::client::result::CommandResult;
8use reactive_graph_client::ReactiveGraphClient;
9use std::sync::Arc;
10
11pub(crate) mod args;
12pub(crate) mod commands;
13pub(crate) mod output_format;
14
15pub(crate) async fn flow_instances(client: &Arc<ReactiveGraphClient>, flow_instances_args: FlowInstancesArgs) -> CommandResult {
16 let output_format_wrapper: FlowInstancesOutputFormatWrapper = flow_instances_args.output_format.clone().into();
17 let Some(command) = flow_instances_args.commands else {
18 return Err(CommandError::MissingSubCommand);
19 };
20 match command {
21 FlowInstancesCommands::List(args) => match client.instances().flows().search((&args).into()).await {
22 Ok(Some(flow_instances)) => output_format_wrapper.collection(flow_instances),
23 Ok(None) => Err(NoContent("No flow instances found".to_string())),
24 Err(e) => Err(e.into()),
25 },
26 FlowInstancesCommands::Get(args) => match client.instances().flows().get_by_id(args.clone()).await {
27 Ok(Some(flow_instance)) => output_format_wrapper.single(flow_instance),
28 Ok(None) => Err(args.not_found()),
29 Err(e) => Err(e.into()),
30 },
31 FlowInstancesCommands::GetByLabel(args) => match client.instances().flows().get_by_label(args.label.clone()).await {
32 Ok(Some(flow_instance)) => output_format_wrapper.single(flow_instance),
33 Ok(None) => Err(args.not_found()),
34 Err(e) => Err(e.into()),
35 },
36 FlowInstancesCommands::CreateFromType(args) => match client
42 .instances()
43 .flows()
44 .create_from_type(args.ty.clone(), args.id, args.variables(), args.properties())
45 .await
46 {
47 Ok(Some(flow_instance)) => output_format_wrapper.single(flow_instance),
48 Ok(None) => Err(NoContent("Flow instance not created".to_string())),
49 Err(e) => Err(e.into()),
50 },
51 FlowInstancesCommands::Delete(args) => match client.instances().flows().delete(args.id).await {
52 Ok(Some(true)) => Ok(format!("Flow instance {} deleted", args.id).into()),
53 Ok(Some(false)) => Ok(format!("Flow instance {} not deleted", args.id).into()),
54 Ok(None) => Err(args.not_found()),
55 Err(e) => Err(e.into()),
56 },
57 FlowInstancesCommands::JsonSchema => match client.json_schema().instances().flows().await {
58 Ok(Some(json_schema)) => Ok(json_schema.into()),
59 Ok(None) => Err(NotFound("JSON Schema not available".to_string())),
60 Err(e) => Err(e.into()),
61 },
62 }
63}