use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct FlowModuleTool {
#[serde(rename = "input_transforms")]
pub input_transforms: Box<models::AiAgentInputTransforms>,
#[serde(rename = "content")]
pub content: String,
#[serde(rename = "language")]
pub language: Language,
#[serde(rename = "path")]
pub path: String,
#[serde(rename = "lock", skip_serializing_if = "Option::is_none")]
pub lock: Option<String>,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(rename = "concurrent_limit", skip_serializing_if = "Option::is_none")]
pub concurrent_limit: Option<f64>,
#[serde(rename = "concurrency_time_window_s", skip_serializing_if = "Option::is_none")]
pub concurrency_time_window_s: Option<f64>,
#[serde(rename = "custom_concurrency_key", skip_serializing_if = "Option::is_none")]
pub custom_concurrency_key: Option<String>,
#[serde(rename = "is_trigger", skip_serializing_if = "Option::is_none")]
pub is_trigger: Option<bool>,
#[serde(rename = "assets", skip_serializing_if = "Option::is_none")]
pub assets: Option<Vec<models::RawScriptAssetsInner>>,
#[serde(rename = "hash", skip_serializing_if = "Option::is_none")]
pub hash: Option<String>,
#[serde(rename = "tag_override", skip_serializing_if = "Option::is_none")]
pub tag_override: Option<String>,
#[serde(rename = "modules")]
pub modules: Vec<models::FlowModule>,
#[serde(rename = "iterator")]
pub iterator: Box<models::InputTransform>,
#[serde(rename = "skip_failures")]
pub skip_failures: bool,
#[serde(rename = "parallel", skip_serializing_if = "Option::is_none")]
pub parallel: Option<bool>,
#[serde(rename = "parallelism", skip_serializing_if = "Option::is_none")]
pub parallelism: Option<Box<models::InputTransform>>,
#[serde(rename = "squash", skip_serializing_if = "Option::is_none")]
pub squash: Option<bool>,
#[serde(rename = "branches")]
pub branches: Vec<models::BranchAllBranchesInner>,
#[serde(rename = "default")]
pub default: Vec<models::FlowModule>,
#[serde(rename = "flow", skip_serializing_if = "Option::is_none")]
pub flow: Option<bool>,
#[serde(rename = "tools")]
pub tools: Vec<models::AgentTool>,
#[serde(rename = "tool_type")]
pub tool_type: ToolType,
}
impl FlowModuleTool {
pub fn new(input_transforms: models::AiAgentInputTransforms, content: String, language: Language, path: String, r#type: Type, modules: Vec<models::FlowModule>, iterator: models::InputTransform, skip_failures: bool, branches: Vec<models::BranchAllBranchesInner>, default: Vec<models::FlowModule>, tools: Vec<models::AgentTool>, tool_type: ToolType) -> FlowModuleTool {
FlowModuleTool {
input_transforms: Box::new(input_transforms),
content,
language,
path,
lock: None,
r#type,
tag: None,
concurrent_limit: None,
concurrency_time_window_s: None,
custom_concurrency_key: None,
is_trigger: None,
assets: None,
hash: None,
tag_override: None,
modules,
iterator: Box::new(iterator),
skip_failures,
parallel: None,
parallelism: None,
squash: None,
branches,
default,
flow: None,
tools,
tool_type,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Language {
#[serde(rename = "deno")]
Deno,
#[serde(rename = "bun")]
Bun,
#[serde(rename = "python3")]
Python3,
#[serde(rename = "go")]
Go,
#[serde(rename = "bash")]
Bash,
#[serde(rename = "powershell")]
Powershell,
#[serde(rename = "postgresql")]
Postgresql,
#[serde(rename = "mysql")]
Mysql,
#[serde(rename = "bigquery")]
Bigquery,
#[serde(rename = "snowflake")]
Snowflake,
#[serde(rename = "mssql")]
Mssql,
#[serde(rename = "oracledb")]
Oracledb,
#[serde(rename = "graphql")]
Graphql,
#[serde(rename = "nativets")]
Nativets,
#[serde(rename = "php")]
Php,
#[serde(rename = "rust")]
Rust,
#[serde(rename = "ansible")]
Ansible,
#[serde(rename = "csharp")]
Csharp,
#[serde(rename = "nu")]
Nu,
#[serde(rename = "java")]
Java,
#[serde(rename = "ruby")]
Ruby,
#[serde(rename = "rlang")]
Rlang,
#[serde(rename = "duckdb")]
Duckdb,
}
impl Default for Language {
fn default() -> Language {
Self::Deno
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "aiagent")]
Aiagent,
}
impl Default for Type {
fn default() -> Type {
Self::Aiagent
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ToolType {
#[serde(rename = "flowmodule")]
Flowmodule,
}
impl Default for ToolType {
fn default() -> ToolType {
Self::Flowmodule
}
}