defmodule Ravix.Operations.Database.Commands.DeleteDatabaseCommand do @moduledoc """ Command to delete a RavenDB database """ @derive {Jason.Encoder, only: [:DatabaseNames, :HardDelete, :TimeToWaitForConfirmation]} use Ravix.Documents.Commands.RavenCommand, DatabaseNames: [], HardDelete: false, TimeToWaitForConfirmation: nil import Ravix.Documents.Commands.RavenCommand alias Ravix.Operations.Database.Commands.DeleteDatabaseCommand alias Ravix.Documents.Protocols.{ToJson, CreateRequest} alias Ravix.Connection.ServerNode command_type(%{ DatabaseNames: list(String.t()), HardDelete: boolean(), TimeToWaitForConfirmation: non_neg_integer() }) defimpl CreateRequest, for: DeleteDatabaseCommand do @spec create_request(DeleteDatabaseCommand.t(), ServerNode.t()) :: DeleteDatabaseCommand.t() def create_request(%DeleteDatabaseCommand{} = command, %ServerNode{} = _server_node) do %DeleteDatabaseCommand{ command | url: "/admin/databases", method: "DELETE", data: command |> ToJson.to_json() } end end end