github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/serverwide/operations/operation_promote_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 OperationPromoteClusterNode struct {
    10  	Node string `json:"Node"`
    11  }
    12  
    13  func NewOperationPromoteClusterNode(node string) *OperationPromoteClusterNode {
    14  	return &OperationPromoteClusterNode{
    15  		Node: node,
    16  	}
    17  }
    18  func (operation *OperationPromoteClusterNode) GetCommand(conventions *ravendb.DocumentConventions) (ravendb.RavenCommand, error) {
    19  	return &promoteNodeCommand{
    20  		RaftCommandBase: ravendb.RaftCommandBase{
    21  			RavenCommandBase: ravendb.RavenCommandBase{
    22  				ResponseType: ravendb.RavenCommandResponseTypeObject,
    23  			},
    24  		},
    25  		parent: operation,
    26  	}, nil
    27  }
    28  
    29  type promoteNodeCommand struct {
    30  	ravendb.RaftCommandBase
    31  	parent *OperationPromoteClusterNode
    32  }
    33  
    34  func (c *promoteNodeCommand) CreateRequest(node *ravendb.ServerNode) (*http.Request, error) {
    35  	url := node.URL + "/admin/cluster/promote?nodeTag=" + c.parent.Node
    36  	return http.NewRequest(http.MethodPost, url, nil)
    37  }
    38  
    39  func (c *promoteNodeCommand) SetResponse(response []byte, fromCache bool) error {
    40  	return json.Unmarshal(response, c.parent)
    41  }