EctoOrderable.Order behaviour (ecto_orderable v0.1.0)

defmodule TaskOrder do
  use EctoOrderable.Order,
    repo: MyApp.Repo,
    order_field: :order_index,
    order_increment: 1000.0

  def set_query(organization, opts) do
    ...
  end

  def set_query_for_item(task, opts) do
    ...
  end

  def item_query(task, opts) do
    ...
  end
end

TaskOrder.set(organization) |> EctoOrderable.first_order()

TaskOrder.set(organization) |> EctoOrderable.last_order()

TaskOrder.set(organization) |> EctoOrderable.next_order()

TaskOrder.item(task) |> EctoOrderable.move(:up)

TaskOrder.item(task) |> EctoOrderable.current_order()

TaskOrder.item(task) |> EctoOrderable.insert(:up)

TaskOrder.item(task) |> EctoOrderable.reposition(1000.0)

TaskOrder.item(task) |> EctoOrderable.reposition(1000.0)

Summary

Callbacks

Given a struct that represents an item in an OrderableSet, must return a query that filters for this specific item in the set.

Given a struct that represents a container for the set of all items in an OrderableSet, must return a query that filters for all the items in the set.

Given a struct that represents an item in an OrderableSet, must return a query that filters for all the items in the set.

Types

order()

@type order() :: %{
  context: {:set, struct() | atom()} | {:item, struct()},
  opts: Keyword.t(),
  repo: module(),
  order_field: atom(),
  order_increment: float()
}

Callbacks

item_query(struct, t)

@callback item_query(
  struct(),
  Keyword.t()
) :: Ecto.Query.t()

Given a struct that represents an item in an OrderableSet, must return a query that filters for this specific item in the set.

set_query(arg1, t)

@callback set_query(struct() | atom(), Keyword.t()) :: Ecto.Query.t()

Given a struct that represents a container for the set of all items in an OrderableSet, must return a query that filters for all the items in the set.

set_query_for_item(struct, t)

@callback set_query_for_item(
  struct(),
  Keyword.t()
) :: Ecto.Query.t()

Given a struct that represents an item in an OrderableSet, must return a query that filters for all the items in the set.