defmodule EventStoreDashboard.Stream do
@moduledoc false
@behaviour Access
@type status :: :created | :deleted
@type t :: %__MODULE__{
stream_id: non_neg_integer() | nil,
stream_uuid: String.t() | nil,
stream_version: non_neg_integer() | nil,
created_at: DateTime.t() | NaiveDateTime.t() | nil,
deleted_at: DateTime.t() | NaiveDateTime.t() | nil,
status: status() | nil
}
defstruct [
:stream_id,
:stream_uuid,
:stream_version,
:created_at,
:deleted_at,
:status
]
@impl Access
defdelegate fetch(struct, key), to: Map
@impl Access
defdelegate get_and_update(struct, key, fun), to: Map
@impl Access
defdelegate pop(struct, key), to: Map
end