github.com/altipla-consulting/ravendb-go-client@v0.1.3/put_connection_string_operation.go (about) 1 package ravendb 2 3 import ( 4 "net/http" 5 ) 6 7 var ( 8 _ IMaintenanceOperation = &PutConnectionStringOperation{} 9 ) 10 11 type PutConnectionStringOperation struct { 12 connectionString interface{} 13 14 Command *PutConnectionStringCommand 15 } 16 17 func NewPutConnectionStringOperation(connectionString interface{}) *PutConnectionStringOperation { 18 return &PutConnectionStringOperation{ 19 connectionString: connectionString, 20 } 21 } 22 23 func (o *PutConnectionStringOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) { 24 o.Command = NewPutConnectionStringCommand(o.connectionString) 25 return o.Command, nil 26 } 27 28 var _ RavenCommand = &PutConnectionStringCommand{} 29 30 type PutConnectionStringCommand struct { 31 RavenCommandBase 32 33 connectionString interface{} 34 35 Result *PutConnectionStringResult 36 } 37 38 // connectionString should be ConnectionString or RavenConnectionString 39 func NewPutConnectionStringCommand(connectionString interface{}) *PutConnectionStringCommand { 40 return &PutConnectionStringCommand{ 41 RavenCommandBase: NewRavenCommandBase(), 42 43 connectionString: connectionString, 44 } 45 } 46 47 func (c *PutConnectionStringCommand) createRequest(node *ServerNode) (*http.Request, error) { 48 url := node.URL + "/databases/" + node.Database + "/admin/connection-strings" 49 50 d, err := jsonMarshal(c.connectionString) 51 if err != nil { 52 // TODO: change err into RuntimeError() ? 53 return nil, err 54 } 55 return newHttpPut(url, d) 56 } 57 58 func (c *PutConnectionStringCommand) setResponse(response []byte, fromCache bool) error { 59 if len(response) == 0 { 60 return throwInvalidResponse() 61 } 62 63 return jsonUnmarshal(response, &c.Result) 64 }