use std::sync::Arc;
use datafusion_ducklake_provider::datafusion::arrow::record_batch::RecordBatch;
use datafusion_ducklake_provider::datafusion::arrow::util::pretty::pretty_format_batches;
use datafusion_ducklake_provider::datafusion::dataframe::DataFrame;
use crate::error::CliError;
pub(crate) async fn format_dataframe(
dataframe: DataFrame,
quiet: bool,
) -> Result<Option<String>, CliError> {
let schema = Arc::new(dataframe.schema().as_arrow().clone());
let has_columns = !schema.fields().is_empty();
let mut batches = dataframe.collect().await?;
if !has_columns {
if !quiet {
return Ok(Some("OK\n".to_string()));
}
return Ok(None);
}
if batches.is_empty() {
batches.push(RecordBatch::new_empty(schema));
}
Ok(Some(format!("{}\n", pretty_format_batches(&batches)?)))
}