github.com/altipla-consulting/ravendb-go-client@v0.1.3/configure_revisions_operation.go (about)

     1  package ravendb
     2  
     3  import (
     4  	"net/http"
     5  )
     6  
     7  var (
     8  	_ IMaintenanceOperation = &ConfigureRevisionsOperation{}
     9  )
    10  
    11  // ConfigureRevisionsOperation represents configure revisions operation
    12  type ConfigureRevisionsOperation struct {
    13  	configuration *RevisionsConfiguration
    14  	Command       *ConfigureRevisionsCommand
    15  }
    16  
    17  // NewConfigureRevisionsOperation returns new ConfigureRevisionsOperation
    18  func NewConfigureRevisionsOperation(configuration *RevisionsConfiguration) *ConfigureRevisionsOperation {
    19  	return &ConfigureRevisionsOperation{
    20  		configuration: configuration,
    21  	}
    22  }
    23  
    24  // GetCommand returns new RavenCommand for this operation
    25  func (o *ConfigureRevisionsOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) {
    26  	o.Command = NewConfigureRevisionsCommand(o.configuration)
    27  	return o.Command, nil
    28  }
    29  
    30  var _ RavenCommand = &ConfigureRevisionsCommand{}
    31  
    32  // ConfigureRevisionsCommand represents configure revisions command
    33  type ConfigureRevisionsCommand struct {
    34  	RavenCommandBase
    35  
    36  	configuration *RevisionsConfiguration
    37  
    38  	Result *ConfigureRevisionsOperationResult
    39  }
    40  
    41  // NewConfigureRevisionsCommand returns new ConfigureRevisionsCommand
    42  func NewConfigureRevisionsCommand(configuration *RevisionsConfiguration) *ConfigureRevisionsCommand {
    43  	cmd := &ConfigureRevisionsCommand{
    44  		RavenCommandBase: NewRavenCommandBase(),
    45  
    46  		configuration: configuration,
    47  	}
    48  	return cmd
    49  }
    50  
    51  func (c *ConfigureRevisionsCommand) createRequest(node *ServerNode) (*http.Request, error) {
    52  	url := node.URL + "/databases/" + node.Database + "/admin/revisions/config"
    53  
    54  	d, err := jsonMarshal(c.configuration)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  	return newHttpPost(url, d)
    59  }
    60  
    61  func (c *ConfigureRevisionsCommand) setResponse(response []byte, fromCache bool) error {
    62  	return jsonUnmarshal(response, &c.Result)
    63  }
    64  
    65  // ConfigureRevisionsOperationResult represents result of configure revisions operation
    66  type ConfigureRevisionsOperationResult struct {
    67  	RaftCommandIndex int64 `json:"RaftCommandIndex"`
    68  }