// src/shared/schema_qualifier.rs use tonic::Status; /// Qualifies table names with the appropriate schema /// /// Rules: /// - Tables created via PostTableDefinition (dynamically created tables) are in 'gen' schema /// - System tables (like users, profiles) remain in 'public' schema pub fn qualify_table_name(table_name: &str) -> String { // Check if table matches the pattern of dynamically created tables (e.g., 2025_something) if table_name.starts_with(|c: char| c.is_ascii_digit()) && table_name.contains('_') { format!("gen.\"{}\"", table_name) } else { format!("\"{}\"", table_name) } } /// Qualifies table names for data operations pub fn qualify_table_name_for_data(table_name: &str) -> Result { Ok(qualify_table_name(table_name)) } #[cfg(test)] mod tests { use super::*; #[test] fn test_qualify_table_name() { assert_eq!(qualify_table_name("2025_test_schema3"), "gen.\"2025_test_schema3\""); assert_eq!(qualify_table_name("users"), "\"users\""); assert_eq!(qualify_table_name("profiles"), "\"profiles\""); assert_eq!(qualify_table_name("adresar"), "\"adresar\""); } }