Filter
Cizen.Filter
is a module to filter events for subscriptions.
All Events
The following filter matches with all events.
require Cizen.Filter
filter = Cizen.Filter.new(fn _ -> true end)
Specific Type of Events
When you want to create a filter which matches only YourEvent
, you can write:
require Cizen.Filter
filter = Cizen.Filter.new(
fn %Event{body: %YourEvent{}} -> true end
)
Compose Filters
Compose filters by using Cizen.Filter.match?/2
in the Cizen.Filter.new/1
like this:
require Cizen.Filter
source_saga_filter = Cizen.Filter.new(fn %YourSaga{} -> true end)
body_filter = Cizen.Filter.new(fn %YourEvent{some_field: value} ->
value == "some value"
end)
composed_filter = Cizen.Filter.new(
fn %Event{source_saga: source_saga, body: body} ->
Cizen.Filter.match?(
source_saga_filter, source_saga
) and Cizen.Filter.match?(
body_filter, body
)
end
)