DoubleDown.Contract.Dispatch.StatelessHandler behaviour
(double_down v0.56.1)
Copy Markdown
View Source
Behaviour for stateless stub handler modules.
Implement this behaviour to make a stateless stub usable by module
name in DoubleDown.Double.fallback/2..4:
# Instead of:
Double.fallback(Repo, Repo.Stub.new())
# Write:
Double.fallback(Repo, Repo.Stub)
# With a fallback function:
Double.fallback(Repo, Repo.Stub, fn _contract, :all, [User] -> [] end)Callbacks
new/2— build a 3-arity dispatch function from a fallback function and options. The returned function has the signaturefn contract, operation, args -> result end.
Example
defmodule MyApp.TestStore do
@behaviour DoubleDown.Contract.Dispatch.StatelessHandler
@impl true
def new(fallback_fn, _opts) do
fn contract, operation, args ->
case {operation, args} do
{:get, [id]} -> %{id: id}
_ when is_function(fallback_fn) -> fallback_fn.(contract, operation, args)
_ -> raise "unhandled"
end
end
end
end
Summary
Callbacks
Build a 3-arity dispatch function from a fallback function and options.
Callbacks
@callback new( fallback_fn :: DoubleDown.Contract.Dispatch.Types.stateless_fun() | nil, opts :: keyword() ) :: DoubleDown.Contract.Dispatch.Types.stateless_fun()
Build a 3-arity dispatch function from a fallback function and options.
fallback_fn— an optional 3-arity function(contract, operation, args) -> resultfor operations the stub doesn't handle directly.nilif not provided.opts— additional options for configuring the stub.
Returns a 3-arity function fn contract, operation, args -> result end suitable
for use as a Double.fallback function fallback.