diff --git a/server/src/steel/server/syntax_parser.rs b/server/src/steel/server/syntax_parser.rs index 3c7573b..33b0c48 100644 --- a/server/src/steel/server/syntax_parser.rs +++ b/server/src/steel/server/syntax_parser.rs @@ -19,7 +19,7 @@ impl SyntaxParser { } } - pub fn parse(&self, script: &str) -> String { + pub fn parse(&self, script: &str, current_table: &str) -> String { let mut transformed = script.to_string(); // Process indexed access first to avoid overlap with relationship matches @@ -46,7 +46,7 @@ impl SyntaxParser { transformed } - pub fn extract_dependencies(&self, script: &str) -> (HashSet, HashSet) { + pub fn extract_dependencies(&self, script: &str, current_table: &str) -> (HashSet, HashSet) { let mut tables = HashSet::new(); let mut columns = HashSet::new(); diff --git a/server/src/table_script/handlers/post_table_script.rs b/server/src/table_script/handlers/post_table_script.rs index 76b9443..9d8e37a 100644 --- a/server/src/table_script/handlers/post_table_script.rs +++ b/server/src/table_script/handlers/post_table_script.rs @@ -62,7 +62,8 @@ pub async fn post_table_script( // Parse and transform the script let parser = SyntaxParser::new(); - let parsed_script = parser.parse(&request.script); + let parsed_script = parser.parse(&request.script, &table_def.table_name); + let (tables, columns) = parser.extract_dependencies(&request.script, &table_def.table_name); // Store script in database with automatic target_table let script_record = sqlx::query!( @@ -72,7 +73,7 @@ pub async fn post_table_script( VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING id"#, request.table_definition_id, - table_def.table_name, // Auto-populate target_table from table_def + table_def.table_name, request.target_column, column_type, parsed_script,