Packages

generic library for assigning things using various strategies (e.g. round robin, cached round robin)

Current section

Files

Jump to
assignment lib assignment.ex
Raw

lib/assignment.ex

defmodule Assignment do
@type destination :: any()
@type assignee :: any()
@type assignments :: %{destination => list(assignee)}
@type assignment :: {destination, assignee}
@type assignment_config :: [destination] | {:state, any()}
@spec round_robin(list(assignee()), assignment_config(), opts :: map) :: Assignment.Result.t
def round_robin(unassigned, config, opts \\ []) do
Assignment.RoundRobin.assign(unassigned, config, opts)
end
@spec cached_round_robin(list(assignee()), assignment_config(), opts :: map) :: Assignment.Result.t
def cached_round_robin(unassigned, config, opts \\ []) do
Assignment.CachedRoundRobin.assign(unassigned, config, opts)
end
end