Torch v1.0.0-rc.1 Torch.Controller

Provides helper functions for Torch-generated controllers.

Summary

Functions

Paginates a given Ecto.Queryable using Scrivener

Determines how the query for an index action should be sorted

Types

params :: map

Functions

paginate(query, repo, params, settings \\ [page_size: 10])

Specs

paginate(Ecto.Queryable.t, Ecto.Repo.t, params, Keyword.t) :: %Scrivener.Page{entries: term, page_number: term, page_size: term, total_entries: term, total_pages: term}

Paginates a given Ecto.Queryable using Scrivener.

This is a very thin wrapper around Scrivener.paginate/2, so see the Scrivener Ecto documentation for more details.

Parameters

  • query: An Ecto.Queryable to paginate.
  • repo: Your Repo module.
  • params: Parameters from your conn. For example %{"page" => 1}.
  • settings: A list of settings for Scrivener, including :page_size.

Examples

paginate(query, Repo, params, [page_size: 15])
# => %Scrivener.Page{...}
sort(params)

Specs

sort(params) :: {atom, atom} | {:asc, :id}

Determines how the query for an index action should be sorted.

Relies on the "sort_field" and "sort_direction" parameters to be passed. By default, it sorts by :id in ascending order.

Examples

iex> sort(%{"sort_field" => "name", "sort_direction" => "desc"})
{:desc, :name}

iex> sort(%{})
{:asc, :id}

In a query pipeline, use in conjunction with Ecto.Query.order_by/3:

order_by(query, ^sort(params))