github.com/altipla-consulting/ravendb-go-client@v0.1.3/get_indexes_operation.go (about) 1 package ravendb 2 3 import ( 4 "net/http" 5 "strconv" 6 ) 7 8 var _ IMaintenanceOperation = &GetIndexesOperation{} 9 10 type GetIndexesOperation struct { 11 _start int 12 _pageSize int 13 14 Command *GetIndexesCommand 15 } 16 17 func NewGetIndexesOperation(_start int, _pageSize int) *GetIndexesOperation { 18 return &GetIndexesOperation{ 19 _start: _start, 20 _pageSize: _pageSize, 21 } 22 } 23 24 func (o *GetIndexesOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) { 25 o.Command = NewGetIndexesCommand(o._start, o._pageSize) 26 return o.Command, nil 27 } 28 29 var ( 30 _ RavenCommand = &GetIndexesCommand{} 31 ) 32 33 type GetIndexesCommand struct { 34 RavenCommandBase 35 36 _start int 37 _pageSize int 38 39 Result []*IndexDefinition 40 } 41 42 func NewGetIndexesCommand(_start int, _pageSize int) *GetIndexesCommand { 43 res := &GetIndexesCommand{ 44 RavenCommandBase: NewRavenCommandBase(), 45 46 _start: _start, 47 _pageSize: _pageSize, 48 } 49 res.IsReadRequest = true 50 return res 51 } 52 53 func (c *GetIndexesCommand) createRequest(node *ServerNode) (*http.Request, error) { 54 start := strconv.Itoa(c._start) 55 pageSize := strconv.Itoa(c._pageSize) 56 57 url := node.URL + "/databases/" + node.Database + "/indexes?start=" + start + "&pageSize=" + pageSize 58 59 return newHttpGet(url) 60 } 61 62 func (c *GetIndexesCommand) setResponse(response []byte, fromCache bool) error { 63 if response == nil { 64 return throwInvalidResponse() 65 } 66 67 var res struct { 68 Results []*IndexDefinition `json:"Results"` 69 } 70 71 err := jsonUnmarshal(response, &res) 72 if err != nil { 73 return err 74 } 75 c.Result = res.Results 76 return nil 77 }