Skip to main content

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}