diff --git a/server/src/tables_data/handlers/post_table_data.rs b/server/src/tables_data/handlers/post_table_data.rs index 41a04e5..bdfdb03 100644 --- a/server/src/tables_data/handlers/post_table_data.rs +++ b/server/src/tables_data/handlers/post_table_data.rs @@ -126,9 +126,24 @@ pub async fn post_table_data( .map_err(|e| Status::invalid_argument(e.to_string()))?; // Get source column from operation - let source_column = match operation { - ScriptOperation::SetToColumn { source } => source, - }; + let source_column = + match operation { + ScriptOperation::SetToLocalColumn { source } => source, + ScriptOperation::SetToExternalColumn { table, column } => { + // For external columns, we need to resolve the value from the external table + let external_source = format!("@{}.{}", table, column); + let resolved_value = execution::resolve_value( + db_pool, + profile_id, + &table_name, + &data, + &external_source + ).await.map_err(|e| Status::invalid_argument(e.to_string()))?; + + // Return the resolved value + resolved_value + } + }; // Check source column presence let source_value = data.get(&source_column)