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 }