subway v0.1.0 Subway
Adds the ability to create contexts and define events inside of it.
### Example
defmodule UserEvents do
use Subway, subscribers: [GenSubscriber]
defevent MessageSent do
field(:user_id, :string)
field(:content, :string, required: true)
end
end
The MessageSent event will be triggered like so:
UserEvents.MessageSent.broadcast(%{user_id: 1, content: "Message content"})
# OR
UserEvents.broadcast("message_sent", %{user_id: 1, content: "Message content"})
If the payload is valid it will broadcast to predefined subscribers, this is an example of a subscriber:
defmodule GenSubscriber do
alias Subway.Subscriber
@behaviour Subscriber
@impl Subscriber
def handle_event?(event_name) do
# Check inside a list of events or with a Regex.
end
@impl Subscriber
def handle(event_name, %{payload: payload, changeset: changeset}) do
# do your logic here...
end
end