athena_rs 3.22.1

Hyper performant polyglot Database driver
Documentation
//! Schema-route request parameter normalization.
//!
//! This module preserves a stable normalization import path while normalization
//! policies are split by concern:
//! - `request_params_schema`
//! - `request_params_columns`
//! - `request_params_constraints`

pub(super) use super::request_param_contracts::{NormalizedColumnQuery, NormalizedConstraintQuery};
pub(super) use super::request_params_columns::normalize_column_query;
pub(super) use super::request_params_constraints::normalize_constraint_query;
pub(super) use super::request_params_schema::normalize_schema_query;

#[cfg(test)]
mod tests {
    use super::*;
    use crate::api::schema::query_contracts::{ColumnQuery, ConstraintQuery};

    /// Ensures constraints defaults schema to `public` when omitted.
    #[test]
    fn normalize_constraint_query_defaults_public_schema() {
        let query = ConstraintQuery {
            table_name: "users".to_string(),
            table_schema: None,
        };

        let normalized = normalize_constraint_query(&query).expect("query should normalize");
        assert_eq!(normalized.table_name, "users");
        assert_eq!(normalized.table_schema, "public");
    }

    /// Ensures optional table-schema values remain absent when not provided.
    #[test]
    fn normalize_column_query_keeps_optional_schema_none() {
        let query = ColumnQuery {
            table_name: "users".to_string(),
            table_schema: None,
        };

        let normalized = normalize_column_query(&query).expect("query should normalize");
        assert_eq!(normalized.table_name, "users");
        assert!(normalized.table_schema.is_none());
    }

    /// Ensures invalid identifiers are rejected during query normalization.
    #[test]
    fn normalize_constraint_query_rejects_invalid_schema_name() {
        let query = ConstraintQuery {
            table_name: "users".to_string(),
            table_schema: Some("public;drop".to_string()),
        };

        let result = normalize_constraint_query(&query);
        assert!(result.is_err());
    }
}