github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/serverwide/operations/operation_add_database_to_node.go (about)

     1  package operations
     2  
     3  import (
     4  	"encoding/json"
     5  	"github.com/ravendb/ravendb-go-client"
     6  	"net/http"
     7  	"net/url"
     8  )
     9  
    10  type OperationAddDatabaseNode struct {
    11  	Name string `json:"Name"`
    12  	Node string `json:"Node"`
    13  }
    14  
    15  func (operation *OperationAddDatabaseNode) GetCommand(conventions *ravendb.DocumentConventions) (ravendb.RavenCommand, error) {
    16  	return &addDatabaseOperation{
    17  		RaftCommandBase: ravendb.RaftCommandBase{
    18  			RavenCommandBase: ravendb.RavenCommandBase{
    19  				ResponseType: ravendb.RavenCommandResponseTypeObject,
    20  			},
    21  		},
    22  		parent: operation,
    23  	}, nil
    24  }
    25  
    26  type addDatabaseOperation struct {
    27  	ravendb.RaftCommandBase
    28  	parent *OperationAddDatabaseNode
    29  }
    30  
    31  func (o *addDatabaseOperation) CreateRequest(node *ravendb.ServerNode) (*http.Request, error) {
    32  	base, err := url.Parse(node.URL + "/admin/databases/node?name=")
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	params := url.Values{}
    37  	params.Add("name", o.parent.Name)
    38  	params.Add("node", o.parent.Node)
    39  	base.RawQuery = params.Encode()
    40  
    41  	return http.NewRequest(http.MethodPut, base.String(), nil)
    42  }
    43  
    44  func (c *addDatabaseOperation) SetResponse(response []byte, fromCache bool) error {
    45  	return json.Unmarshal(response, c.parent)
    46  }