use std::borrow::Cow;
use polars_core::prelude::{ArrowSchema, DataFrame, Series, IDX_DTYPE};
use super::read_impl::materialize_hive_partitions;
use crate::utils::apply_projection;
use crate::RowIndex;
pub fn materialize_empty_df(
    projection: Option<&[usize]>,
    reader_schema: &ArrowSchema,
    hive_partition_columns: Option<&[Series]>,
    row_index: Option<&RowIndex>,
) -> DataFrame {
    let schema = if let Some(projection) = projection {
        Cow::Owned(apply_projection(reader_schema, projection))
    } else {
        Cow::Borrowed(reader_schema)
    };
    let mut df = DataFrame::from(schema.as_ref());
    if let Some(row_index) = row_index {
        df.insert_column(0, Series::new_empty(&row_index.name, &IDX_DTYPE))
            .unwrap();
    }
    materialize_hive_partitions(&mut df, hive_partition_columns, 0);
    df
}