improvements and fixing of the tests

This commit is contained in:
filipriec
2025-06-20 19:59:42 +02:00
parent 8414657224
commit 8e22ea05ff
4 changed files with 87 additions and 42 deletions

View File

@@ -104,7 +104,21 @@ pub async fn post_table_definition(
db_pool: &PgPool,
request: PostTableDefinitionRequest,
) -> Result<TableDefinitionResponse, Status> {
if request.profile_name.trim().is_empty() {
return Err(Status::invalid_argument("Profile name cannot be empty"));
}
const MAX_IDENTIFIER_LENGTH: usize = 63;
let base_name = sanitize_table_name(&request.table_name);
if base_name.len() > MAX_IDENTIFIER_LENGTH {
return Err(Status::invalid_argument(format!(
"Identifier '{}' exceeds the {} character limit.",
base_name,
MAX_IDENTIFIER_LENGTH
)));
}
let user_part_cleaned = request.table_name
.replace(|c: char| !c.is_ascii_alphanumeric() && c != '_', "")
.trim_matches('_')
@@ -179,6 +193,9 @@ async fn execute_table_definition(
if !is_valid_identifier(&col_def.name) {
return Err(Status::invalid_argument("Invalid column name"));
}
if col_name.ends_with("_id") || col_name == "id" || col_name == "deleted" || col_name == "created_at" {
return Err(Status::invalid_argument("Invalid column name"));
}
let sql_type = map_field_type(&col_def.field_type)?;
columns.push(format!("\"{}\" {}", col_name, sql_type));
}