github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/get_revisions_command.go (about) 1 package ravendb 2 3 import ( 4 "net/http" 5 "strconv" 6 ) 7 8 var ( 9 _ RavenCommand = &GetRevisionsCommand{} 10 ) 11 12 type GetRevisionsCommand struct { 13 RavenCommandBase 14 15 id string 16 start int 17 pageSize int 18 metadataOnly bool 19 changeVector string 20 changeVectors []string 21 22 Result *JSONArrayResult 23 } 24 25 func NewGetRevisionsCommand(changeVectors []string, metadataOnly bool) *GetRevisionsCommand { 26 cmd := &GetRevisionsCommand{ 27 RavenCommandBase: NewRavenCommandBase(), 28 29 changeVectors: changeVectors, 30 metadataOnly: metadataOnly, 31 } 32 cmd.IsReadRequest = true 33 return cmd 34 } 35 36 func NewGetRevisionsCommandRange(id string, start int, pageSize int, metadataOnly bool) *GetRevisionsCommand { 37 cmd := &GetRevisionsCommand{ 38 RavenCommandBase: NewRavenCommandBase(), 39 40 id: id, 41 start: start, 42 pageSize: pageSize, 43 metadataOnly: metadataOnly, 44 } 45 cmd.IsReadRequest = true 46 return cmd 47 } 48 49 func (c *GetRevisionsCommand) GetChangeVectors() []string { 50 return c.changeVectors 51 } 52 53 func (c *GetRevisionsCommand) CreateRequest(node *ServerNode) (*http.Request, error) { 54 url := node.URL + "/databases/" + node.Database + "/revisions?" 55 56 if c.id != "" { 57 url += "&id=" + urlUtilsEscapeDataString(c.id) 58 } else if c.changeVector != "" { 59 url += "&changeVector=" + urlUtilsEscapeDataString(c.changeVector) 60 } else if c.changeVectors != nil { 61 for _, changeVector := range c.changeVectors { 62 url += "&changeVector=" + urlUtilsEscapeDataString(changeVector) 63 } 64 } 65 66 if c.start > 0 { 67 url += "&start=" + strconv.Itoa(c.start) 68 } 69 70 if c.pageSize > 0 { 71 url += "&pageSize=" + strconv.Itoa(c.pageSize) 72 } 73 74 if c.metadataOnly { 75 url += "&metadataOnly=true" 76 } 77 78 return newHttpGet(url) 79 } 80 81 func (c *GetRevisionsCommand) SetResponse(response []byte, fromCache bool) error { 82 var res JSONArrayResult 83 err := jsonUnmarshal(response, &res) 84 if err != nil { 85 return err 86 } 87 if res.Results == nil { 88 return throwInvalidResponse() 89 } 90 c.Result = &res 91 return nil 92 }