Packages
eventstore
1.4.2
1.4.8
1.4.7
1.4.6
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.3
1.2.2
1.2.1
1.2.0
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.14.0-rc.0
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.11.0-rc.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.0
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Event store using PostgreSQL for persistence.
Current section
Files
Jump to
Current section
Files
lib/event_store/streams/stream_info.ex
defmodule EventStore.Streams.StreamInfo do
alias EventStore.Streams.StreamInfo
@type t :: %StreamInfo{
stream_uuid: String.t(),
stream_id: non_neg_integer() | nil,
stream_version: non_neg_integer(),
created_at: DateTime.t(),
deleted_at: DateTime.t() | nil,
status: :created | :deleted | nil
}
defstruct [:stream_uuid, :stream_id, :created_at, :deleted_at, :status, stream_version: 0]
def new(stream_uuid) do
%StreamInfo{stream_uuid: stream_uuid}
end
def validate_expected_version(%StreamInfo{} = stream, expected_version) do
%StreamInfo{stream_id: stream_id, stream_version: stream_version, status: status} = stream
cond do
status == :deleted ->
{:error, :stream_deleted}
is_nil(stream_id) and expected_version in [0, :any_version, :no_stream] ->
:ok
is_nil(stream_id) and expected_version == :stream_exists ->
{:error, :stream_not_found}
not is_nil(stream_id) and expected_version in [stream_version, :any_version, :stream_exists] ->
:ok
not is_nil(stream_id) and stream_version == 0 and expected_version == :no_stream ->
:ok
not is_nil(stream_id) and stream_version != 0 and expected_version == :no_stream ->
{:error, :stream_exists}
true ->
{:error, :wrong_expected_version}
end
end
end