nodedb_sql/planner/sort.rs
1//! ORDER BY planning and sort key extraction.
2//!
3//! Search-triggering sort detection (vector_distance, bm25_score, rrf_score)
4//! is handled in select.rs as part of apply_order_by. This module provides
5//! sort key extraction utilities.
6
7use crate::error::Result;
8use crate::resolver::expr::convert_expr;
9use crate::types::SortKey;
10
11/// Convert sqlparser OrderByExpr list to SortKey list.
12pub fn convert_sort_keys(exprs: &[sqlparser::ast::OrderByExpr]) -> Result<Vec<SortKey>> {
13 exprs
14 .iter()
15 .map(|o| {
16 Ok(SortKey {
17 expr: convert_expr(&o.expr)?,
18 ascending: o.options.asc.unwrap_or(true),
19 nulls_first: o.options.nulls_first.unwrap_or(false),
20 })
21 })
22 .collect()
23}