trubo_ecto v0.1.3 Trubo.Ecto.Hooks.Search

Single Table Search

Link to this section Summary

Functions

Builds a search Ecto.Query.t on top of a given Ecto.Query.t variable with given params

Link to this section Functions

Link to this function run(queryable, search_params)

Builds a search Ecto.Query.t on top of a given Ecto.Query.t variable with given params.

Example

When build params use :like

iex> params = %{"q" => %{"name_like" => "name"}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: like(p.name, ^"%name%")>

When params include :ilike

iex> params = %{"q" => %{"name_ilike" => "name"}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: ilike(p.name, ^"%name%")>

When params include :eq

iex> params = %{"q" => %{"price_eq" => 100}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: p.price == ^100>

When params include :gt

iex> params = %{"q" => %{"price_gt" => 100}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: p.price > ^100>

When params include :lt

iex> params = %{"q" => %{"price_lt" => 100}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: p.price < ^100>

When params include :gteq

iex> params = %{"q" => %{"price_gteq" => 100}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: p.price >= ^100>

When params include :lteq

iex> params = %{"q" => %{"price_lteq" => 100}}
iex> Trubo.Ecto.Hooks.Search.run(Trubo.Ecto.Product, params)
#Ecto.Query<from p in Trubo.Ecto.Product, where: p.price <= ^100>