saving steel script into the database

This commit is contained in:
filipriec
2025-03-07 20:37:32 +01:00
parent b01eeddfe0
commit 965ffee35a
8 changed files with 65 additions and 80 deletions

View File

@@ -0,0 +1,4 @@
// src/steel/handlers.rs
pub mod evaluator;
pub use evaluator::{validate_script, validate_target_column};

View File

@@ -0,0 +1,32 @@
// src/steel/handlers/evaluator.rs
use serde_json::Value;
const SYSTEM_COLUMNS: &[&str] = &["id", "deleted", "firma", "created_at"];
// Column validation
pub fn validate_target_column(
table_name: &str,
target: &str,
table_columns: &Value,
) -> Result<(), String> {
if SYSTEM_COLUMNS.contains(&target) {
return Err(format!("Cannot override system column: {}", target));
}
let columns: Vec<String> = serde_json::from_value(table_columns.clone())
.map_err(|e| format!("Invalid column data: {}", e))?;
if !columns.iter().any(|c| c == target) {
return Err(format!("Target column {} not defined in table {}", target, table_name));
}
Ok(())
}
// Basic script validation
pub fn validate_script(script: &str) -> Result<(), String> {
if script.trim().is_empty() {
return Err("Script cannot be empty".to_string());
}
Ok(())
}

3
server/src/steel/mod.rs Normal file
View File

@@ -0,0 +1,3 @@
// src/steel/mod.rs
pub mod handlers;