turbo_ecto v0.1.4 Turbo.Ecto
A rich ecto component, including search sort and paginate. https://hexdocs.pm/turbo_ecto
Link to this section Summary
Functions
Gets paginate info
Returns Paginate result
Returns Paginate queryable
Returns searching result
Returns searching queryable
Returns sorting result
Returns sorting queryable
Returns a result and pageinate info
Returns processed queryable
Link to this section Functions
Link to this function
get_paginate(queryable, params, opts \\ [])
Gets paginate info.
Example
iex> params = %{"per_page" => 5, "page" => 2}
iex> Turbo.Ecto.get_paginate(Turbo.Ecto.Product, params)
%{per_page: 5, current_page: 2, next_page: nil, prev_page: nil, total_count: 0, total_pages: 0}
Link to this function
paginate(queryable, params, opts \\ [])
paginate(Ecto.Query.t(), Map.t(), Keyword.t()) :: Map.t()
Returns Paginate result.
Example
iex> params = %{"per_page" => 5, "page" => 2}
iex> Turbo.Ecto.paginate(Turbo.Ecto.Product, params)
%{dates: [], paginate: %{current_page: 2, next_page: nil, per_page: 5, prev_page: nil, total_count: 0, total_pages: 0}}
Link to this function
paginateq(queryable, params)
paginateq(Ecto.Query.t(), Map.t()) :: Ecto.Query.t()
Returns Paginate queryable.
Example
iex> params = %{"per_page" => 5, "page" => 2}
iex> Turbo.Ecto.paginateq(Turbo.Ecto.Product, params)
#Ecto.Query<from p in Turbo.Ecto.Product, limit: ^5, offset: ^5>
Link to this function
search(queryable, params, opts \\ [])
search(Ecto.Query.t(), Map.t(), Keyword.t()) :: any()
Returns searching result.
Example
iex> params = %{"q" => %{"name_like" => "q"}}
iex> Turbo.Ecto.search(Turbo.Ecto.Product, params)
[]
Link to this function
searchq(queryable, params)
Returns searching queryable.
Example
iex> Turbo.Ecto.searchq(Turbo.Ecto.Product, %{"q" => %{"name_like" => "q"}})
#Ecto.Query<from p in Turbo.Ecto.Product, where: like(p.name, ^"%q%")>
Link to this function
sort(queryable, params, opts \\ [])
sort(Ecto.Query.t(), Map.t(), Keyword.t()) :: any()
Returns sorting result.
Example
iex> params = %{"s" => "updated_at+desc"}
iex> Turbo.Ecto.sort(Turbo.Ecto.Product, params)
[]
Returns sorting queryable.
Example
iex> params = %{"s" => "updated_at+desc"}
iex> Turbo.Ecto.sortq(Turbo.Ecto.Product, params)
#Ecto.Query<from p in Turbo.Ecto.Product, order_by: [desc: p.updated_at]>
Link to this function
turbo(queryable, params, opts \\ [])
turbo(Ecto.Query.t(), Map.t(), Keyword.t()) :: Map.t()
Returns a result and pageinate info.
Example
iex> params = %{"q" => %{"name_like" => "q"}, "s" => "updated_at+asc", "per_page" => 5, "page" => 1}
iex> Turbo.Ecto.turbo(Turbo.Ecto.Product, params)
%{
paginate: %{current_page: 1, per_page: 5, next_page: nil, prev_page: nil, total_count: 0, total_pages: 0},
datas: []
}
Returns processed queryable.
Example
iex> params = %{"q" => %{"name_like" => "name", "body_like" => "body"}, "s" => "updated_at+asc", "per_page" => 5, "page" => 1}
iex> Turbo.Ecto.turboq(Turbo.Ecto.Product, params)
#Ecto.Query<from p in Turbo.Ecto.Product, where: like(p.body, ^"%body%"), where: like(p.name, ^"%name%"), order_by: [asc: p.updated_at], limit: ^5, offset: ^0>