Rummage.Ecto v2.0.0 Rummage.Ecto.Schema.Sort View Source

Usage:

defmodule MyApp.Rummage.MyModel.Sort do
  use Rummage.Schema.Sort,
    default_name: "inserted_at",
    handlers: [
      category_name: %{field: :name, assoc: [inner: :category], ci: true},
      name: %{ci: true},
      price: %{},
    ]

  # Custom handlers...
  def sort(query, "inserted_at", order) do
    order = String.to_atom(order)

    from p in query,
      order_by: [
        {^order, p.inserted_at},
        {^order, p.id}
      ]
  end

  # Because we're overriding sort we need to call super...
  def sort(query, name, order) do
    super(query, name, order)
  end
end