robin_sparkless_polars/functions/
sort.rs1use crate::column::Column;
4use polars::prelude::Expr;
5
6#[derive(Debug, Clone)]
8pub struct SortOrder {
9 pub(crate) expr: Expr,
10 pub descending: bool,
11 pub nulls_last: bool,
12}
13
14impl SortOrder {
15 pub fn expr(&self) -> &Expr {
16 &self.expr
17 }
18}
19
20pub fn asc(column: &Column) -> SortOrder {
22 SortOrder {
23 expr: column.expr().clone(),
24 descending: false,
25 nulls_last: false,
26 }
27}
28
29pub fn asc_nulls_first(column: &Column) -> SortOrder {
31 SortOrder {
32 expr: column.expr().clone(),
33 descending: false,
34 nulls_last: false,
35 }
36}
37
38pub fn asc_nulls_last(column: &Column) -> SortOrder {
40 SortOrder {
41 expr: column.expr().clone(),
42 descending: false,
43 nulls_last: true,
44 }
45}
46
47pub fn desc(column: &Column) -> SortOrder {
49 SortOrder {
50 expr: column.expr().clone(),
51 descending: true,
52 nulls_last: true,
53 }
54}
55
56pub fn desc_nulls_first(column: &Column) -> SortOrder {
58 SortOrder {
59 expr: column.expr().clone(),
60 descending: true,
61 nulls_last: false,
62 }
63}
64
65pub fn desc_nulls_last(column: &Column) -> SortOrder {
67 SortOrder {
68 expr: column.expr().clone(),
69 descending: true,
70 nulls_last: true,
71 }
72}