Packages
json_api_ecto_builder
0.1.1
Library for building an ecto query from some JSON API parameters.
Current section
Files
Jump to
Current section
Files
lib/param_parsers/sort.ex
defmodule JsonApiEctoBuilder.ParamParser.Sort do
alias JsonApiEctoBuilder.ParamParser.Utilities
def parse(params, base_alias) do
params
|> Map.get("sort")
|> Utilities.maybe_string()
|> String.split(",")
|> Utilities.handle_empty_list()
|> Enum.map(parse_from_param_closure(base_alias))
end
def parse_from_param_closure(base_alias) do
fn param ->
{direction, param} = Utilities.get_sort_direction(param)
{field, associations} = Utilities.parse_field_and_associations_from_param(param, base_alias)
nested_association = Utilities.associations_list_to_named_binding(associations)
{String.to_existing_atom(field), direction, String.to_existing_atom(nested_association)}
end
end
end