FlopRest.Sorting (FlopRest v0.6.1)

Copy Markdown View Source

Parses REST-style sort strings into Flop format and vice versa.

Summary

Functions

Parses a sort string like "-field,other_field" into Flop format.

Returns the list of reserved sorting keys.

Converts a Flop struct's sorting fields back to REST-style sort string.

Functions

parse(sort_string)

@spec parse(String.t() | nil) :: map()

Parses a sort string like "-field,other_field" into Flop format.

Examples

iex> FlopRest.Sorting.parse("-starts_at,name")
%{"order_by" => ["starts_at", "name"], "order_directions" => ["desc", "asc"]}

iex> FlopRest.Sorting.parse(nil)
%{}

reserved_keys()

@spec reserved_keys() :: [String.t()]

Returns the list of reserved sorting keys.

to_rest(flop)

@spec to_rest(Flop.t()) :: map()

Converts a Flop struct's sorting fields back to REST-style sort string.

Examples

iex> FlopRest.Sorting.to_rest(%Flop{order_by: [:name], order_directions: [:asc]})
%{"sort" => "name"}

iex> FlopRest.Sorting.to_rest(%Flop{order_by: [:name], order_directions: [:desc]})
%{"sort" => "-name"}

iex> FlopRest.Sorting.to_rest(%Flop{order_by: [:name, :age], order_directions: [:asc, :desc]})
%{"sort" => "name,-age"}

iex> FlopRest.Sorting.to_rest(%Flop{})
%{}