pub fn parse_order(order_str: &str) -> Result<Vec<OrderTerm>, ParseError>Expand description
Parses a PostgREST order clause into a list of order terms.
§Syntax
- Single column:
column_name.ascorcolumn_name.desc - Multiple columns:
col1.asc,col2.desc,col3 - With nulls handling:
column.desc.nullsfirstorcolumn.asc.nullslast - JSON fields:
data->created_at.desc - Type casts:
price::numeric.desc
§Examples
use postgrest_parser::parse_order;
// Single column ascending
let terms = parse_order("name.asc").unwrap();
assert_eq!(terms.len(), 1);
// Multiple columns
let terms = parse_order("created_at.desc,name.asc").unwrap();
assert_eq!(terms.len(), 2);
// With nulls handling
let terms = parse_order("updated_at.desc.nullsfirst").unwrap();
assert_eq!(terms.len(), 1);
// JSON field ordering
let terms = parse_order("data->timestamp.desc").unwrap();
assert_eq!(terms.len(), 1);
// Default direction (ascending)
let terms = parse_order("id").unwrap();
assert_eq!(terms.len(), 1);§Errors
Returns ParseError if:
- Field name is invalid or empty
- Direction is not
ascordesc - Nulls option is not
nullsfirstornullslast