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