refactor: remove backend Rust types for groups (UI-only, like notes)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Guilhem
2026-02-24 14:46:19 +00:00
parent b1575303f7
commit 39fbccc5fa
4 changed files with 6 additions and 39 deletions

View File

@@ -107,7 +107,7 @@ pub async fn resolve_module(
ForloopFlow { modules, modules_node, .. } | WhileloopFlow { modules, modules_node, .. } => {
resolve_modules(db, workspace_id, modules, modules_node.take(), with_code).await?;
}
BranchOne { branches, default, default_node, .. } => {
BranchOne { branches, default, default_node } => {
resolve_modules(db, workspace_id, default, default_node.take(), with_code).await?;
for branch in branches {
resolve_modules(

View File

@@ -178,8 +178,6 @@ pub struct FlowValue {
pub chat_input_enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub flow_env: Option<HashMap<String, Box<RawValue>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub groups: Option<Vec<FlowGroup>>,
}
impl FlowValue {
@@ -406,20 +404,6 @@ pub struct Mock {
pub return_value: Option<serde_json::Value>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct FlowGroup {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", alias = "collapsed")]
pub collapsed_by_default: Option<bool>,
pub module_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, Default)]
pub struct FlowModule {
#[serde(default = "default_id")]
@@ -864,8 +848,6 @@ pub enum FlowModuleValue {
parallelism: Option<InputTransform>,
#[serde(skip_serializing_if = "Option::is_none")]
squash: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
collapsed: Option<bool>,
},
WhileloopFlow {
modules: Vec<FlowModule>,
@@ -875,23 +857,17 @@ pub enum FlowModuleValue {
skip_failures: bool,
#[serde(skip_serializing_if = "Option::is_none")]
squash: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
collapsed: Option<bool>,
},
BranchOne {
branches: Vec<Branch>,
default: Vec<FlowModule>,
#[serde(skip_serializing_if = "Option::is_none")]
default_node: Option<FlowNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
collapsed: Option<bool>,
},
BranchAll {
branches: Vec<Branch>,
#[serde(default = "default_true")]
parallel: bool,
#[serde(skip_serializing_if = "Option::is_none")]
collapsed: Option<bool>,
},
RawScript {
#[serde(default)]
@@ -967,7 +943,6 @@ struct UntaggedFlowModuleValue {
tools: Option<Vec<AgentTool>>,
pass_flow_input_directly: Option<bool>,
squash: Option<bool>,
collapsed: Option<bool>,
#[serde(flatten)]
concurrency_settings: ConcurrencySettingsWithCustom,
}
@@ -1009,7 +984,6 @@ impl<'de> Deserialize<'de> for FlowModuleValue {
parallel: untagged.parallel.unwrap_or(false),
parallelism: untagged.parallelism,
squash: untagged.squash,
collapsed: untagged.collapsed,
}),
"whileloopflow" => Ok(FlowModuleValue::WhileloopFlow {
modules: untagged
@@ -1018,7 +992,6 @@ impl<'de> Deserialize<'de> for FlowModuleValue {
modules_node: untagged.modules_node,
skip_failures: untagged.skip_failures.unwrap_or(false),
squash: untagged.squash,
collapsed: untagged.collapsed,
}),
"branchone" => Ok(FlowModuleValue::BranchOne {
branches: untagged
@@ -1028,14 +1001,12 @@ impl<'de> Deserialize<'de> for FlowModuleValue {
.default
.ok_or_else(|| serde::de::Error::missing_field("default"))?,
default_node: untagged.default_node,
collapsed: untagged.collapsed,
}),
"branchall" => Ok(FlowModuleValue::BranchAll {
branches: untagged
.branches
.ok_or_else(|| serde::de::Error::missing_field("branches"))?,
parallel: untagged.parallel.unwrap_or(true),
collapsed: untagged.collapsed,
}),
"rawscript" => Ok(FlowModuleValue::RawScript {
input_transforms: untagged.input_transforms.unwrap_or_default(),

View File

@@ -4481,7 +4481,7 @@ async fn compute_next_flow_transform(
}
}
}
FlowModuleValue::BranchOne { branches, default, default_node, .. } => {
FlowModuleValue::BranchOne { branches, default, default_node } => {
let branch = match status_module {
FlowStatusModule::WaitingForPriorSteps { .. }
| FlowStatusModule::WaitingForEvents { .. }

View File

@@ -800,7 +800,6 @@ async fn lock_modules<'c>(
parallel,
parallelism,
squash,
collapsed,
} => {
let nmodules;
(nmodules, tx, nmodified_ids, nerrors) = Box::pin(lock_modules(
@@ -833,11 +832,10 @@ async fn lock_modules<'c>(
parallel,
parallelism,
squash,
collapsed,
}
.into()
}
FlowModuleValue::BranchAll { branches, parallel, collapsed } => {
FlowModuleValue::BranchAll { branches, parallel } => {
let mut nbranches = vec![];
for mut b in branches {
let nmodules;
@@ -870,9 +868,9 @@ async fn lock_modules<'c>(
b.modules = nmodules;
nbranches.push(b)
}
e.value = FlowModuleValue::BranchAll { branches: nbranches, parallel, collapsed }.into()
e.value = FlowModuleValue::BranchAll { branches: nbranches, parallel }.into()
}
FlowModuleValue::WhileloopFlow { modules, modules_node, skip_failures, squash, collapsed } => {
FlowModuleValue::WhileloopFlow { modules, modules_node, skip_failures, squash } => {
let nmodules;
(nmodules, tx, nmodified_ids, nerrors) = Box::pin(lock_modules(
modules,
@@ -901,11 +899,10 @@ async fn lock_modules<'c>(
modules_node,
skip_failures,
squash,
collapsed,
}
.into()
}
FlowModuleValue::BranchOne { branches, default, default_node, collapsed } => {
FlowModuleValue::BranchOne { branches, default, default_node } => {
let mut nbranches = vec![];
for mut b in branches {
let nmodules;
@@ -969,7 +966,6 @@ async fn lock_modules<'c>(
branches: nbranches,
default: ndefault,
default_node,
collapsed,
}
.into();
}