lib/spear/position.ex

defmodule Spear.Position do
  @moduledoc """
  A data structure representing a position in the `$all` stream
  """
  @moduledoc since: "0.10.0"

  require Spear.Records.Shared, as: Shared

  @typedoc """
  A struct representing the prepare and commit positions for an event in the
  `$all` stream
  """
  @typedoc since: "0.10.0"
  @type t :: %__MODULE__{commit: integer(), prepare: integer()}

  defstruct [:commit, :prepare]

  @doc false
  def from_record(Shared.all_stream_position(commit_position: commit, prepare_position: prepare)) do
    %__MODULE__{commit: commit, prepare: prepare}
  end
end