athena_rs 3.26.1

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

use actix_web::HttpResponse;

use super::identifier_validation::validate_identifier;
use super::query_contracts::ConstraintQuery;
use super::request_param_contracts::NormalizedConstraintQuery;

/// Default schema name used when constraints queries omit explicit schema input.
const DEFAULT_SCHEMA_NAME: &str = "public";

/// Validates and normalizes `/schema/constraints` query parameters.
pub(super) fn normalize_constraint_query(
    query: &ConstraintQuery,
) -> Result<NormalizedConstraintQuery, HttpResponse> {
    let table_name = validate_identifier(&query.table_name, "table_name")?;
    let table_schema = match query.table_schema.as_deref() {
        Some(value) => validate_identifier(value, "table_schema")?,
        None => DEFAULT_SCHEMA_NAME.to_string(),
    };

    Ok(NormalizedConstraintQuery {
        table_name,
        table_schema,
    })
}