use tantivy::DocAddress;

pub(crate) use super::search_rows::FastFieldColumnCache;
pub use super::search_rows::{
    BytesColumnData, F64ColumnData, I64ColumnData, SearchRows, U64ColumnData,
};

#[derive(Debug)]
pub struct ColumnValue {
    pub field_name: String,
    pub string_value: Option<Vec<u8>>,
    pub int_value: Option<i64>,
    pub float_value: Option<f64>,
}
impl ColumnValue {
    pub fn new(field_name: String) -> Self {
        Self {
            field_name,
            string_value: None,
            int_value: None,
            float_value: None,
        }
    }

    pub fn is_null(&self) -> bool {
        self.string_value.is_none() && self.int_value.is_none() && self.float_value.is_none()
    }
}

#[derive(Debug)]
pub struct TopKValue {
    pub cols: Vec<ColumnValue>,
    pub doc_addr: DocAddress,
}
