use std::sync::Arc;
use super::super::options::{AvroReadOptions, ReadOptions};
use super::{DataFilePaths, DataFrame, Result, SessionContext};
impl SessionContext {
pub async fn read_avro<P: DataFilePaths>(
&self,
table_paths: P,
options: AvroReadOptions<'_>,
) -> Result<DataFrame> {
self._read_type(table_paths, options).await
}
pub async fn register_avro(
&self,
name: &str,
table_path: &str,
options: AvroReadOptions<'_>,
) -> Result<()> {
let listing_options = options.to_listing_options(&self.copied_config());
self.register_listing_table(
name,
table_path,
listing_options,
options.schema.map(|s| Arc::new(s.to_owned())),
None,
)
.await?;
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
use async_trait::async_trait;
#[async_trait]
trait CallReadTrait {
async fn call_read_avro(&self) -> DataFrame;
}
struct CallRead {}
#[async_trait]
impl CallReadTrait for CallRead {
async fn call_read_avro(&self) -> DataFrame {
let ctx = SessionContext::new();
ctx.read_avro("dummy", AvroReadOptions::default())
.await
.unwrap()
}
}
}