use crate::ast::pipeline::HamelinPipeline;
use crate::ast::sort_expression::HamelinSortExpression;
use crate::translation::sql_query_helpers::add_order_expression;
use crate::translation::PendingQuery;
use hamelin_lib::antlr::hamelinparser::{SortCommandContext, SortCommandContextAttrs};
use hamelin_lib::err::TranslationErrors;
use hamelin_lib::func::def::FunctionTranslationContext;
pub fn translate(
ctx: &SortCommandContext<'static>,
pipeline: &HamelinPipeline,
previous: &PendingQuery,
) -> Result<PendingQuery, TranslationErrors> {
let all = ctx.sortExpression_all().clone();
let expr_ctx = pipeline
.context
.expression_translation_context(&previous.env, FunctionTranslationContext::default());
let res = PendingQuery::new(
add_order_expression(
previous.query.clone(),
HamelinSortExpression::new(all, expr_ctx).translate()?.0,
&previous.env,
),
previous.env.clone(),
);
Ok(res)
}