reactive_graph/client/instances/flows/
mod.rs

1use 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::Create(args) => match client.instances().flows().create_from_type(args.id, args.description.clone(), args.properties()).await {
37        //     Ok(Some(flow_instance)) => output_format_wrapper.single(flow_instance),
38        //     Ok(None) => Err(NoContent("Flow instance not created".to_string())),
39        //     Err(e) => Err(e.into()),
40        // },
41        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}