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  }