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