Docket.Backend.ClaimPolicyAdmin behaviour (docket v0.1.0-dev)

Copy Markdown View Source

Optional backend capability for max-active-run policy administration.

Backends expose this capability through Docket.Backend.claim_policy_admin/0. The public Docket facade owns argument validation and return-value normalization; implementations perform only the delegated current-state operation against their already-resolved backend context.

Summary

Types

cap()

@type cap() :: 1..2_147_483_647

effective_policy()

@type effective_policy() :: %{
  :owner_scope => owner_scope(),
  :max_active_runs => cap(),
  :source => :default | :override,
  :default_version => non_neg_integer(),
  :override_version => non_neg_integer(),
  :queued => non_neg_integer(),
  :admitted_ready => non_neg_integer(),
  :admitted_claimed => non_neg_integer(),
  :debt => non_neg_integer(),
  optional(atom()) => term()
}

owner_scope()

@type owner_scope() :: Docket.Backend.owner_scope()

policy()

@type policy() :: %{
  :max_active_runs => cap() | nil,
  :version => non_neg_integer(),
  :updated_at => DateTime.t(),
  optional(atom()) => term()
}

Callbacks

get_default(ctx)

@callback get_default(Docket.Backend.ctx()) :: {:ok, policy()} | {:error, term()}

get_effective(ctx, owner_scope)

@callback get_effective(Docket.Backend.ctx(), owner_scope()) ::
  {:ok, effective_policy()} | {:error, term()}

put_default(ctx, cap, keyword)

@callback put_default(Docket.Backend.ctx(), cap(), keyword()) ::
  {:ok, policy()} | {:error, term()}

put_override(ctx, owner_scope, cap, keyword)

@callback put_override(Docket.Backend.ctx(), owner_scope(), cap(), keyword()) ::
  {:ok, policy()} | {:error, term()}

reset_override(ctx, owner_scope, keyword)

@callback reset_override(Docket.Backend.ctx(), owner_scope(), keyword()) ::
  {:ok, policy()} | {:error, term()}