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