athena_rs 3.22.1

Hyper performant polyglot Database driver
Documentation
//! Final still-needed payload assembly for `/debug/schema`.
//!
//! This module owns constructing `LoggingSchemaDebugStillNeeded` from already
//! normalized unresolved-requirement lists.

use super::debug_still_needed_contracts::LoggingSchemaDebugStillNeeded;

/// Builds one still-needed payload from normalized unresolved requirement lists.
pub(super) fn build_logging_schema_debug_still_needed_output(
    required_missing_tables: Vec<String>,
    optional_missing_tables: Vec<String>,
    required_missing_columns: Vec<String>,
    optional_missing_columns: Vec<String>,
    relation_type_mismatches: Vec<String>,
) -> LoggingSchemaDebugStillNeeded {
    LoggingSchemaDebugStillNeeded {
        required_missing_tables,
        optional_missing_tables,
        required_missing_columns,
        optional_missing_columns,
        relation_type_mismatches,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    /// Preserves normalized unresolved requirement lists in still-needed payload output.
    fn still_needed_output_preserves_normalized_requirement_lists() {
        let still_needed = build_logging_schema_debug_still_needed_output(
            vec!["public.gateway_request_log".to_string()],
            vec!["public.route_request_log".to_string()],
            vec!["public.gateway_request_log.request_id".to_string()],
            vec!["public.route_request_log.route_path".to_string()],
            vec!["public.route_request_log".to_string()],
        );

        assert_eq!(
            still_needed.required_missing_tables,
            vec!["public.gateway_request_log".to_string()]
        );
        assert_eq!(
            still_needed.optional_missing_tables,
            vec!["public.route_request_log".to_string()]
        );
        assert_eq!(
            still_needed.required_missing_columns,
            vec!["public.gateway_request_log.request_id".to_string()]
        );
        assert_eq!(
            still_needed.optional_missing_columns,
            vec!["public.route_request_log.route_path".to_string()]
        );
        assert_eq!(
            still_needed.relation_type_mismatches,
            vec!["public.route_request_log".to_string()]
        );
    }
}