View Source EctoJuno.Query.Sorting (ecto_juno v0.1.1)
Module for sorting query
Link to this section Summary
Link to this section Functions
@spec sort_query(any(), atom() | list(), map()) :: Ecto.Query.t()
Sorts query
### Parameters
query: a query you want to sortschema_or_allowed_fields: either an ecto schema module either a list of which elements are atomsparams: a map that can havesort_by,sort_directionkeys with string values
### Usage
defmodule Sample.Accounts do
alias EctoJuno.Query.Sorting
alias Sample.Accounts.User
alias Sample.Repo
def sort_users(sort_by, sort_direction) do
User
|> Sorting.sort_query(User, %{"sort_by" => sort_by, "sort_direction" => sort_direction})
|> Repo.all()
end
end You can also pass sort_by and sort_direction as atom keys:
Sorting.sort_query(query, User, %{sort_by: sort_by, sort_direction: sort_direction}) The default sorting is by inserted_at field with ascending order.
For missing sorting parameters the default values will be used. Same applies and for invalid sorting parameters