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

     1  package ravendb
     2  
     3  import (
     4  	"net/http"
     5  )
     6  
     7  var _ IMaintenanceOperation = &IndexHasChangedOperation{}
     8  
     9  type IndexHasChangedOperation struct {
    10  	definition *IndexDefinition
    11  
    12  	Command *IndexHasChangedCommand
    13  }
    14  
    15  func NewIndexHasChangedOperation(definition *IndexDefinition) *IndexHasChangedOperation {
    16  	return &IndexHasChangedOperation{
    17  		definition: definition,
    18  	}
    19  }
    20  
    21  func (o *IndexHasChangedOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) {
    22  	var err error
    23  	o.Command, err = NewIndexHasChangedCommand(conventions, o.definition)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  	return o.Command, nil
    28  }
    29  
    30  var (
    31  	_ RavenCommand = &IndexHasChangedCommand{}
    32  )
    33  
    34  type IndexHasChangedCommand struct {
    35  	RavenCommandBase
    36  
    37  	definition []byte
    38  
    39  	Result bool
    40  }
    41  
    42  func NewIndexHasChangedCommand(conventions *DocumentConventions, definition *IndexDefinition) (*IndexHasChangedCommand, error) {
    43  	d, err := jsonMarshal(definition)
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  	res := &IndexHasChangedCommand{
    48  		RavenCommandBase: NewRavenCommandBase(),
    49  
    50  		definition: d,
    51  	}
    52  	return res, nil
    53  }
    54  
    55  func (c *IndexHasChangedCommand) createRequest(node *ServerNode) (*http.Request, error) {
    56  	url := node.URL + "/databases/" + node.Database + "/indexes/has-changed"
    57  	return newHttpPost(url, c.definition)
    58  }
    59  
    60  func (c *IndexHasChangedCommand) setResponse(response []byte, fromCache bool) error {
    61  	if response == nil {
    62  		return throwInvalidResponse()
    63  	}
    64  
    65  	var res struct {
    66  		Changed bool `json:"Changed"`
    67  	}
    68  	err := jsonUnmarshalFirst(response, &res)
    69  	if err != nil {
    70  		return err
    71  	}
    72  	c.Result = res.Changed
    73  	return nil
    74  }