defmodule EventStoreDashboard.Subscription do
@moduledoc false
@behaviour Access
@type t :: %__MODULE__{
subscription_id: integer() | nil,
stream_uuid: String.t() | nil,
subscription_name: String.t() | nil,
last_seen: non_neg_integer() | nil,
stream_version: non_neg_integer(),
lag: non_neg_integer(),
created_at: DateTime.t() | NaiveDateTime.t() | nil,
trend: :catching_up | :falling_behind | :stable | :unknown
}
defstruct [
:subscription_id,
:stream_uuid,
:subscription_name,
:last_seen,
:created_at,
stream_version: 0,
lag: 0,
trend: :unknown
]
@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