pub(crate) mod blob;
mod parse;
mod table;
use std::collections::HashMap;
use std::sync::Arc;
use anyhow::Result;
use datafusion::prelude::SessionContext;
pub use parse::{ImageMode, OcrMode, ParseOptions, ParsedPage, parse_source, preflight};
pub use table::DocumentsTable;
pub async fn register_documents_tables(
session_ctx: &mut SessionContext,
name: &str,
path: &str,
options: Option<&HashMap<String, String>>,
) -> Result<()> {
tracing::info!("Registering documents source: {} at {}", name, path);
let opts = ParseOptions::from_map(options);
preflight(&opts)?;
session_ctx
.register_table(name, Arc::new(DocumentsTable::new(path.to_string(), opts)))
.map_err(|e| anyhow::anyhow!("Failed to register documents table '{}': {}", name, e))?;
tracing::info!("Successfully registered documents source: {}", name);
Ok(())
}