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  }