gluesql-core 0.20.0

GlueSQL - Open source SQL database engine fully written in Rust with pure functional execution layer, easily swappable storage and web assembly support!
Documentation
use {super::ExprNode, crate::query_builder::OrderByExprNode};

impl<'a> ExprNode<'a> {
    #[must_use]
    pub fn asc(self) -> OrderByExprNode<'a> {
        OrderByExprNode::Expr {
            expr: self,
            asc: Some(true),
        }
    }

    #[must_use]
    pub fn desc(self) -> OrderByExprNode<'a> {
        OrderByExprNode::Expr {
            expr: self,
            asc: Some(false),
        }
    }
}

#[cfg(test)]
mod tests {
    use {
        crate::{
            parse_sql::parse_order_by_expr,
            query_builder::{OrderByExprNode, col},
            translate::{NO_PARAMS, translate_order_by_expr},
        },
        pretty_assertions::assert_eq,
    };

    fn test(actual: OrderByExprNode, expected: &str) {
        let parsed = &parse_order_by_expr(expected).expect(expected);
        let expected = translate_order_by_expr(parsed, NO_PARAMS);
        assert_eq!(actual.build_order_by_expr(), expected);
    }

    #[test]
    fn order_by() {
        let actual = col("foo").asc();
        let expected = "foo ASC";
        test(actual, expected);

        let actual = col("foo").desc();
        let expected = "foo DESC";
        test(actual, expected);
    }
}