defmodule OPQ.Options do
@moduledoc """
Options for configuring OPQ.
"""
@worker OPQ.Worker
@workers 10
@interval 0
@timeout 5_000
@doc """
## Examples
iex> Options.assign_defaults([]) |> Keyword.get(:workers)
10
iex> Options.assign_defaults([workers: 4]) |> Keyword.get(:workers)
4
"""
def assign_defaults(opts) do
Keyword.merge(
[
worker: worker(),
workers: workers(),
interval: interval(),
timeout: timeout()
],
opts
)
end
defp worker(), do: Application.get_env(:opq, :worker, @worker)
defp workers(), do: Application.get_env(:opq, :workers, @workers)
defp interval(), do: Application.get_env(:opq, :interval, @interval)
defp timeout(), do: Application.get_env(:opq, :timeout, @timeout)
end