pub mod timestamp_based;
use crate::Result;
use crate::config::HudiConfigs;
use crate::config::table::HudiTableConfig::{KeyGeneratorClass, KeyGeneratorType};
use crate::expr::filter::Filter;
pub fn is_timestamp_based_keygen(hudi_configs: &HudiConfigs) -> Result<bool> {
let by_class = hudi_configs
.try_get(KeyGeneratorClass)?
.map(|v| {
let s: String = v.into();
s.contains("TimestampBasedKeyGenerator")
})
.unwrap_or(false);
if by_class {
return Ok(true);
}
Ok(hudi_configs
.try_get(KeyGeneratorType)?
.map(|v| {
let s: String = v.into();
let upper = s.to_uppercase();
upper == "TIMESTAMP" || upper == "TIMESTAMP_AVRO"
})
.unwrap_or(false))
}
pub trait KeyGeneratorFilterTransformer {
fn source_field(&self) -> &str;
fn transform_filter(&self, filter: &Filter) -> Result<Vec<Filter>>;
}