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  }