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 }