hamelin_lib 0.10.4

Core library for Hamelin query language
Documentation
//! Shared test helpers for tree tests
//!
//! This module contains common utilities used across multiple test modules
//! to reduce duplication and ensure consistency.

use std::sync::Arc;

use ordermap::OrderMap;

use crate::catalog::CatalogProvider;
use crate::tree::ast::identifier::{
    Identifier as AstIdentifier, SimpleIdentifier as AstSimpleIdentifier,
};
use crate::types::Type;

/// Helper to create a catalog provider with table schemas
pub fn catalog_with_tables(tables: Vec<(&str, Vec<(&str, Type)>)>) -> Arc<CatalogProvider> {
    let mut datasets = std::collections::HashMap::new();

    for (table_name, fields) in tables {
        let table_id = AstIdentifier::parse(table_name).unwrap();
        let mut field_map = OrderMap::new();
        for (field_name, field_type) in fields {
            field_map.insert(AstSimpleIdentifier::new(field_name), field_type);
        }
        datasets.insert(table_id, field_map);
    }

    Arc::new(CatalogProvider::new(datasets))
}