defmodule Ravix.Connection.Commands.GetTopology do
@moduledoc """
Command to fetch the topology data from RavenDB
## Fields
- database_name: The name of the database
- force_url: Forces the informed url to the new topology
"""
use Ravix.Documents.Commands.RavenCommand,
database_name: nil,
force_url: nil
import Ravix.Helpers.UrlBuilder
import Ravix.Documents.Commands.RavenCommand
alias Ravix.Connection.Commands.GetTopology
alias Ravix.Connection.ServerNode
alias Ravix.Documents.Protocols.CreateRequest
command_type(%{
database_name: String.t(),
force_url: String.t() | nil
})
defimpl CreateRequest, for: GetTopology do
@spec create_request(GetTopology.t(), ServerNode.t()) :: GetTopology.t()
def create_request(%GetTopology{} = command, _) do
%GetTopology{
command
| url:
"/topology?"
|> append_param("name", command.database_name)
|> append_param("url", command.force_url),
method: :get,
is_read_request: true
}
end
end
end