github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/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 }