athena_rs 3.26.2

Hyper performant polyglot Database driver
Documentation
//! `/schema/columns` request-parameter normalization helpers.
//!
//! This module owns validation and normalization for the `/schema/columns`
//! endpoint query parameters.

use actix_web::HttpResponse;

use super::identifier_validation::validate_identifier;
use super::query_contracts::ColumnQuery;
use super::request_param_contracts::NormalizedColumnQuery;

/// Validates and normalizes `/schema/columns` query parameters.
pub(super) fn normalize_column_query(
    query: &ColumnQuery,
) -> Result<NormalizedColumnQuery, HttpResponse> {
    let table_name = validate_identifier(&query.table_name, "table_name")?;
    let table_schema = optional_identifier(query.table_schema.as_deref(), "table_schema")?;

    Ok(NormalizedColumnQuery {
        table_name,
        table_schema,
    })
}

/// Validates an optional identifier parameter and preserves missing values.
fn optional_identifier(
    value: Option<&str>,
    parameter_name: &str,
) -> Result<Option<String>, HttpResponse> {
    match value {
        Some(raw_value) => validate_identifier(raw_value, parameter_name).map(Some),
        None => Ok(None),
    }
}