Commanded v1.1.0 Commanded.Middleware behaviour View Source
Middleware provides an extension point to add functions that you want to be called for every command the router dispatches.
Examples include command validation, authorization, and logging.
Implement the Commanded.Middleware behaviour in your module and define the
before_dispatch/1, after_dispatch/1, and after_failure/1 callback
functions.
Example middleware
defmodule NoOpMiddleware do
@behaviour Commanded.Middleware
alias Commanded.Middleware.Pipeline
import Pipeline
def before_dispatch(%Pipeline{command: command} = pipeline) do
pipeline
end
def after_dispatch(%Pipeline{command: command} = pipeline) do
pipeline
end
def after_failure(%Pipeline{command: command} = pipeline) do
pipeline
end
endImport the Commanded.Middleware.Pipeline module to access convenience
functions.
assign/3- puts a key and value into theassignsmaphalt/1- stops execution of further middleware downstream and prevents dispatch of the command when used in abefore_dispatchcallback