Skip to main content

parse_order

Function parse_order 

Source
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.asc or column_name.desc
  • Multiple columns: col1.asc,col2.desc,col3
  • With nulls handling: column.desc.nullsfirst or column.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 asc or desc
  • Nulls option is not nullsfirst or nullslast