hamelin_lib 0.22.1

Core library for Hamelin query language
Documentation
use std::fmt::{Debug, Formatter};

use crate::tree::ast::dataset_identifier::QualifiedDatasetIdentifier;
use crate::types::struct_type::Struct;

pub trait EnvironmentProvider: Debug + Send + Sync {
    fn reflect_columns(&self, name: &QualifiedDatasetIdentifier) -> anyhow::Result<Struct>;
    fn reflect_datasets(&self) -> anyhow::Result<Vec<QualifiedDatasetIdentifier>>;

    /// Whether this provider is the default no-op placeholder (no catalog backing).
    fn is_noop(&self) -> bool {
        false
    }
}

#[derive(Default, Clone, Copy)]
pub struct NoOpProvider {}

impl Debug for NoOpProvider {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        write!(f, "NoOpProvider")
    }
}

impl EnvironmentProvider for NoOpProvider {
    fn reflect_columns(&self, _name: &QualifiedDatasetIdentifier) -> anyhow::Result<Struct> {
        Ok(Struct::default())
    }

    fn reflect_datasets(&self) -> anyhow::Result<Vec<QualifiedDatasetIdentifier>> {
        Ok(vec![])
    }

    fn is_noop(&self) -> bool {
        true
    }
}