Helios v0.1.0 Helios.EventJournal behaviour View Source
EventJournal
Config Example
use Mix.Config
config :my_app, MyApp.EventJournal,
adapter: Helios.EventJournal.Adapter.Eventstore
adapter_config: [
db_type: :node,
host: "localhost",
port: 1113,
username: "admin",
password: "changeit",
reconnect_delay: 2_000,
connection_name: "my_connection_name",
max_attempts: :infinity
]
Example Code
defmodule MyApp.EventJournal do
use Helios.EventJournal.EventJournal, ot_app: :my_app
end
defmodule MyApp.Events.UserCreated do
defstruct [:id, :email]
end
alias MyApp.EventJournal, as: Journal alias MyApp.Events.UserCreated alias Helios.EventJournal.Messages.EventData
stream = “users-1234” events = [EventData.new(Extreme.Tools.gen_uuid(), MyApp.Events.UserCreated, %UserCreated{id: 1234, email: “example@example.com”})] metadata = %{} expected_version = -2
{:ok, last_event_number} = Journal.append_to_stream(stream, events, expected_version)
Link to this section Summary
Callbacks
Append events to stream if given expected version matches to last written event in journals database
Reads single event from stream
Reads max_events
events from journal from given position backward until max_events or begining of stream is reached
Reads forward max_events
events from journal from given position
Link to this section Types
append_error() :: :wrong_expected_version | :stream_deleted | :access_denied
Link to this section Functions
Link to this section Callbacks
append_to_stream( stream :: stream_name(), events :: [struct()], expexted_version :: event_number() ) :: {:ok, event_number()} | {:error, append_error()}
Append events to stream if given expected version matches to last written event in journals database
delete_stream( stream :: String.t(), expected_version :: integer(), hard_delete? :: boolean() ) :: {:ok, Helios.EventJournal.Messages.Position.t()} | {:error, :wrong_expected_version} | {:error, :stream_deleted} | {:error, :access_denied} | {:error, any()}
get_stream_metadata(stream :: String.t()) :: {:ok, Helios.EventJournal.Messages.StreamMetadataResponse.t()} | {:error, :stream_deleted} | {:error, :no_stream} | {:error, :not_found} | {:error, any()}
read_all_events_backward( position :: {integer(), integer()}, max_events :: integer(), resolve_links :: boolean() ) :: {:ok, [Helios.EventJournal.Messages.ReadAllEventsResponse.t()]} | {:error, Helios.EventJournal.Messages.ReadAllEventsResponse.read_error()}
read_all_events_forward( position :: {integer(), integer()}, max_events :: integer(), resolve_links :: boolean() ) :: {:ok, [Helios.EventJournal.Messages.ReadAllEventsResponse.t()]} | {:error, Helios.EventJournal.Messages.ReadAllEventsResponse.read_error()}
read_event( stream :: stream_name(), event_number :: event_number(), resolve_links :: boolean() ) :: {:ok, Helios.EventJournal.Messages.PersistedEvent.t()} | {:error, Helios.EventJournal.Messages.PersistedEvent.read_error()}
Reads single event from stream
read_stream_events_backward( stream :: stream_name(), event_number :: event_number(), max_events :: integer(), resolve_links :: boolean() ) :: {:ok, [Helios.EventJournal.Messages.ReadStreamEventsResponse.t()]} | {:error, Helios.EventJournal.Messages.ReadStreamEventsResponse.read_error()}
Reads max_events
events from journal from given position backward until max_events or begining of stream is reached
read_stream_events_forward( stream :: stream_name(), event_number :: event_number(), max_events :: integer(), resolve_links :: boolean() ) :: {:ok, [Helios.EventJournal.Messages.ReadStreamEventsResponse.t()]} | {:error, Helios.EventJournal.Messages.ReadStreamEventsResponse.read_error()}
Reads forward max_events
events from journal from given position
set_stream_metadata( stream :: String.t(), expected_version :: event_number(), metadata :: map() ) :: {:ok, event_number()} | {:error, :stream_deleted} | {:error, :no_stream} | {:error, :not_found} | {:error, :access_denied} | {:ettot, any()}