athena_rs 3.26.3

Hyper performant polyglot Database driver
//! Input assembly for observed-table map building in `/debug/schema`.
//!
//! This module isolates construction of typed observed-table builder input
//! payloads from observed-stage orchestration so callers delegate relation and
//! column wiring through one dedicated assembly boundary.

use super::debug_observed_table_builder_input_contracts::LoggingSchemaObservedTablesBuilderInput;
use super::service::{SchemaColumnRecord, SchemaRelationRecord};

/// Builds one typed observed-table builder input payload from relation and
/// column rows discovered during logging-schema snapshotting.
pub(super) fn build_observed_table_builder_input_assembly(
    relations: Vec<SchemaRelationRecord>,
    columns: Vec<SchemaColumnRecord>,
) -> LoggingSchemaObservedTablesBuilderInput {
    LoggingSchemaObservedTablesBuilderInput { relations, columns }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::api::schema::debug_report_test_fixtures::{
        build_expected_logging_schema_columns_for_tests,
        build_expected_logging_schema_relations_for_tests,
    };

    #[test]
    /// Preserves relation and column rows in observed-table builder input assembly output.
    fn observed_table_builder_input_assembly_preserves_relation_and_column_rows() {
        let relations = build_expected_logging_schema_relations_for_tests(false);
        let columns = build_expected_logging_schema_columns_for_tests(false);

        let input = build_observed_table_builder_input_assembly(relations, columns);

        assert!(
            !input.relations.is_empty(),
            "expected non-empty relation rows in observed-table builder input"
        );
        assert!(
            !input.columns.is_empty(),
            "expected non-empty column rows in observed-table builder input"
        );
    }
}