Current section

Files

Jump to
oban lib oban beat.ex
Raw

lib/oban/beat.ex

defmodule Oban.Beat do
@moduledoc false
use Ecto.Schema
import Ecto.Changeset
@type t :: %__MODULE__{
node: binary(),
queue: binary(),
limit: pos_integer(),
paused: boolean(),
running: list(pos_integer()),
inserted_at: DateTime.t(),
started_at: DateTime.t()
}
@primary_key false
schema "oban_beats" do
field :node, :string
field :queue, :string
field :nonce, :string
field :limit, :integer
field :paused, :boolean, default: false
field :running, {:array, :integer}, default: []
field :inserted_at, :utc_datetime_usec
field :started_at, :utc_datetime_usec
end
@permitted ~w(node queue nonce limit paused running inserted_at started_at)a
@required ~w(node queue nonce limit paused running started_at)a
@spec new(map()) :: Ecto.Changeset.t()
def new(params) when is_map(params) do
%__MODULE__{}
|> cast(params, @permitted)
|> validate_required(@required)
|> validate_length(:node, min: 1, max: 128)
|> validate_length(:nonce, min: 1, max: 16)
|> validate_length(:queue, min: 1, max: 128)
|> validate_number(:limit, greater_than: 0)
end
end