use crate::model::index::{IndexKeyItem, IndexKeyItemsRef, IndexModel};
#[must_use]
pub(in crate::db) fn index_order_terms(index: &IndexModel) -> Vec<String> {
match index.key_items() {
IndexKeyItemsRef::Fields(fields) => {
canonical_index_order_terms(fields.iter().copied().map(IndexKeyItem::Field))
}
IndexKeyItemsRef::Items(items) => canonical_index_order_terms(items.iter().copied()),
}
}
fn canonical_index_order_terms<I>(key_items: I) -> Vec<String>
where
I: IntoIterator<Item = IndexKeyItem>,
{
key_items
.into_iter()
.map(|key_item| key_item.canonical_text())
.collect()
}