delta-funnel 0.1.0

Export Delta Lake tables into Microsoft SQL Server efficiently
Documentation
use std::fmt;

use crate::{
    BatchPipelinePhase, DeltaFunnelError, SqlTablePhase, support::sanitize_text_for_display,
};

use super::{LazyTable, sql_server_workflows::MssqlDerivedCacheAliasPlan};

pub(super) fn sql_table_error<T>(
    phase: SqlTablePhase,
    message: impl Into<String>,
) -> Result<T, DeltaFunnelError> {
    Err(DeltaFunnelError::SqlTable {
        phase,
        message: message.into(),
    })
}

pub(super) fn unknown_lazy_table_error(table: &LazyTable) -> DeltaFunnelError {
    DeltaFunnelError::MssqlWorkflowPlanning {
        message: format!(
            "lazy table `{}` is not registered in this session",
            sanitize_text_for_display(table.name())
        ),
    }
}

pub(super) fn unknown_cached_alias_error(alias: &MssqlDerivedCacheAliasPlan) -> DeltaFunnelError {
    DeltaFunnelError::MssqlWorkflowPlanning {
        message: format!(
            "cached alias `{}` is not registered in this session",
            sanitize_text_for_display(alias.alias())
        ),
    }
}

pub(super) fn cached_output_stream_setup_error(
    output_name: &str,
    message: impl fmt::Display,
) -> DeltaFunnelError {
    DeltaFunnelError::MssqlWorkflowPlanning {
        message: format!(
            "cached output stream setup failed for `{}`: {}",
            sanitize_text_for_display(output_name),
            sanitize_text_for_display(&message.to_string())
        ),
    }
}

pub(super) fn mssql_scoped_cache_alias_error(
    phase: &'static str,
    alias_name: &str,
    error: impl fmt::Display,
) -> DeltaFunnelError {
    DeltaFunnelError::MssqlWorkflowPlanning {
        message: format!(
            "scoped MSSQL cache alias {phase} failed for `{}`: {}",
            sanitize_text_for_display(alias_name),
            sanitize_text_for_display(&error.to_string())
        ),
    }
}

pub(super) fn datafusion_handoff_setup_error(
    option: &'static str,
    error: impl fmt::Display,
) -> DeltaFunnelError {
    DeltaFunnelError::BatchPipeline {
        phase: BatchPipelinePhase::HandoffSetup,
        option,
        message: error.to_string(),
    }
}