github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/serverwide/operations/operation_remove_cluster_node.go (about) 1 package operations 2 3 import ( 4 "encoding/json" 5 "github.com/ravendb/ravendb-go-client" 6 "net/http" 7 ) 8 9 type RemoveClusterNode struct { 10 Node string `json:"Node"` 11 Tag string `json:"Tag"` 12 } 13 14 func NewRemovePromoteClusterNode(node string) *OperationPromoteClusterNode { 15 return &OperationPromoteClusterNode{ 16 Node: node, 17 } 18 } 19 20 func (operation *RemoveClusterNode) GetCommand(conventions *ravendb.DocumentConventions) (ravendb.RavenCommand, error) { 21 return &removeNodeCommand{ 22 RaftCommandBase: ravendb.RaftCommandBase{ 23 RavenCommandBase: ravendb.RavenCommandBase{ 24 ResponseType: ravendb.RavenCommandResponseTypeObject, 25 }, 26 }, 27 parent: operation, 28 }, nil 29 } 30 31 type removeNodeCommand struct { 32 ravendb.RaftCommandBase 33 parent *RemoveClusterNode 34 } 35 36 func (c *removeNodeCommand) CreateRequest(node *ravendb.ServerNode) (*http.Request, error) { 37 url := node.URL + "/admin/cluster/node?nodeTag=" + c.parent.Tag 38 return http.NewRequest(http.MethodDelete, url, nil) 39 } 40 func (c *removeNodeCommand) SetResponse(response []byte, fromCache bool) error { 41 return json.Unmarshal(response, c.parent) 42 }