#[cfg(test)]
use crate::model::index::IndexModel;
use crate::model::index::{IndexKeyItem, IndexKeyItemsRef};
#[must_use]
#[cfg(test)]
pub(in crate::db) fn index_order_terms(index: &IndexModel) -> Vec<String> {
index_key_item_order_terms(index.key_items())
}
#[must_use]
pub(in crate::db) fn index_key_item_order_terms(key_items: IndexKeyItemsRef) -> Vec<String> {
match 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()
}