lib/spear/supported_rpc.ex

defmodule Spear.SupportedRpc do
  @moduledoc """
  A struct representing supported RPC in the currently connected
  EventStoreDB

  This structure is returned by `Spear.get_supported_rpcs/2`.
  """
  @moduledoc since: "0.11.0"

  require Spear.Records.ServerFeatures, as: ServerFeatures

  @typedoc """
  A struct representing a feature implemented by the currently connected
  EventStoreDB version

  See `Spear.get_supported_rpcs/2` for more information.
  """
  @typedoc since: "0.11.0"
  @type t :: %__MODULE__{rpc: String.t(), service: String.t(), features: [String.t()]}

  defstruct [:rpc, :service, features: []]

  @doc false
  def from_proto(
        ServerFeatures.supported_method(
          method_name: rpc,
          service_name: service_name,
          features: features
        )
      ) do
    %__MODULE__{rpc: rpc, service: service_name, features: features}
  end
end