use async_trait::async_trait;
use datafusion::execution::context::SessionState;
pub use openlineage_client::LineageContext;
#[async_trait]
pub trait LineageContextProvider: std::fmt::Debug + Send + Sync {
async fn context(&self, session_state: &SessionState) -> LineageContext;
}
#[derive(Debug, Default)]
pub struct StaticContextProvider(pub LineageContext);
#[async_trait]
impl LineageContextProvider for StaticContextProvider {
async fn context(&self, _session_state: &SessionState) -> LineageContext {
self.0.clone()
}
}