MCPcopy Create free account
hub / github.com/cli/cli / Code

Method Code

pkg/search/searcher.go:66–104  ·  view source on GitHub ↗
(query Query)

Source from the content-addressed store, hash-verified

64}
65
66func (s searcher) Code(query Query) (CodeResult, error) {
67 result := CodeResult{}
68
69 // We will request either the query limit if it's less than 1 page, or our max page size.
70 // This number doesn't change to keep a valid offset.
71 //
72 // For example, say we want 150 items out of 500.
73 // We request page #1 for 100 items and get items 0 to 99.
74 // Then we request page #2 for 100 items, we get items 100 to 199 and only keep 100 to 149.
75 // If we were to request page #2 for 50 items, we would instead get items 50 to 99.
76 numItemsToRetrieve := query.Limit
77 query.Limit = min(numItemsToRetrieve, maxPerPage)
78 query.Page = 1
79
80 for numItemsToRetrieve > 0 {
81 page := CodeResult{}
82 link, err := s.search(query, &page)
83 if err != nil {
84 return result, err
85 }
86
87 // If we're going to reach the requested limit, only add that many items,
88 // otherwise add all the results.
89 numItemsToAdd := min(len(page.Items), numItemsToRetrieve)
90 result.IncompleteResults = page.IncompleteResults
91 // The API returns how many items match the query in every response.
92 // With the example above, this would be 500.
93 result.Total = page.Total
94 result.Items = append(result.Items, page.Items[:numItemsToAdd]...)
95 numItemsToRetrieve = numItemsToRetrieve - numItemsToAdd
96
97 query.Page = nextPage(link)
98 if query.Page == 0 {
99 break
100 }
101 }
102
103 return result, nil
104}
105
106func (s searcher) Commits(query Query) (CommitsResult, error) {
107 result := CommitsResult{}

Callers

nothing calls this directly

Calls 3

searchMethod · 0.95
nextPageFunction · 0.85
minFunction · 0.70

Tested by

no test coverage detected