Skip to content

Commit 98fd144

Browse files
committed
unified params for rest andn graphql and rennamed to be uniform for golang
1 parent b454926 commit 98fd144

File tree

10 files changed

+63
-86
lines changed

10 files changed

+63
-86
lines changed

pkg/github/actions.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ func ListWorkflows(getClient GetClientFn, t translations.TranslationHelperFunc)
6262

6363
// Set up list options
6464
opts := &github.ListOptions{
65-
PerPage: pagination.perPage,
66-
Page: pagination.page,
65+
PerPage: pagination.PerPage,
66+
Page: pagination.Page,
6767
}
6868

6969
workflows, resp, err := client.Actions.ListWorkflows(ctx, owner, repo, opts)
@@ -200,8 +200,8 @@ func ListWorkflowRuns(getClient GetClientFn, t translations.TranslationHelperFun
200200
Event: event,
201201
Status: status,
202202
ListOptions: github.ListOptions{
203-
PerPage: pagination.perPage,
204-
Page: pagination.page,
203+
PerPage: pagination.PerPage,
204+
Page: pagination.Page,
205205
},
206206
}
207207

@@ -503,8 +503,8 @@ func ListWorkflowJobs(getClient GetClientFn, t translations.TranslationHelperFun
503503
opts := &github.ListWorkflowJobsOptions{
504504
Filter: filter,
505505
ListOptions: github.ListOptions{
506-
PerPage: pagination.perPage,
507-
Page: pagination.page,
506+
PerPage: pagination.PerPage,
507+
Page: pagination.Page,
508508
},
509509
}
510510

@@ -1025,8 +1025,8 @@ func ListWorkflowRunArtifacts(getClient GetClientFn, t translations.TranslationH
10251025

10261026
// Set up list options
10271027
opts := &github.ListOptions{
1028-
PerPage: pagination.perPage,
1029-
Page: pagination.page,
1028+
PerPage: pagination.PerPage,
1029+
Page: pagination.Page,
10301030
}
10311031

10321032
artifacts, resp, err := client.Actions.ListWorkflowRunArtifacts(ctx, owner, repo, runID, opts)

pkg/github/discussions.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
5151
}
5252

5353
// Get pagination parameters and convert to GraphQL format
54-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
54+
pagination, err := OptionalPaginationParams(request)
5555
if err != nil {
5656
return nil, err
5757
}
58-
pagination, err := unifiedPagination.ToGraphQLParams()
58+
paginationParams, err := pagination.ToGraphQLParams()
5959
if err != nil {
6060
return nil, err
6161
}
@@ -100,7 +100,7 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
100100
"owner": githubv4.String(owner),
101101
"repo": githubv4.String(repo),
102102
"categoryId": *categoryID,
103-
"first": githubv4.Int(*pagination.First),
103+
"first": githubv4.Int(*paginationParams.First),
104104
}
105105
if err := client.Query(ctx, &query, vars); err != nil {
106106
return mcp.NewToolResultError(err.Error()), nil
@@ -148,7 +148,7 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
148148
vars := map[string]interface{}{
149149
"owner": githubv4.String(owner),
150150
"repo": githubv4.String(repo),
151-
"first": githubv4.Int(*pagination.First),
151+
"first": githubv4.Int(*paginationParams.First),
152152
}
153153
if err := client.Query(ctx, &query, vars); err != nil {
154154
return mcp.NewToolResultError(err.Error()), nil
@@ -276,8 +276,8 @@ func GetDiscussionComments(getGQLClient GetGQLClientFn, t translations.Translati
276276
return mcp.NewToolResultError(err.Error()), nil
277277
}
278278

279-
// Get unified pagination parameters and convert to GraphQL format
280-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
279+
// Get pagination parameters and convert to GraphQL format
280+
pagination, err := OptionalPaginationParams(request)
281281
if err != nil {
282282
return nil, err
283283
}
@@ -287,7 +287,7 @@ func GetDiscussionComments(getGQLClient GetGQLClientFn, t translations.Translati
287287
_, perPageProvided := request.GetArguments()["perPage"]
288288
paginationExplicit := pageProvided || perPageProvided
289289

290-
paginationParams, err := unifiedPagination.ToGraphQLParams()
290+
paginationParams, err := pagination.ToGraphQLParams()
291291
if err != nil {
292292
return nil, err
293293
}
@@ -369,8 +369,8 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
369369
return mcp.NewToolResultError(err.Error()), nil
370370
}
371371

372-
// Get unified pagination parameters and convert to GraphQL format
373-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
372+
// Get pagination parameters and convert to GraphQL format
373+
pagination, err := OptionalPaginationParams(request)
374374
if err != nil {
375375
return nil, err
376376
}
@@ -380,15 +380,15 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
380380
_, perPageProvided := request.GetArguments()["perPage"]
381381
paginationExplicit := pageProvided || perPageProvided
382382

383-
pagination, err := unifiedPagination.ToGraphQLParams()
383+
paginationParams, err := pagination.ToGraphQLParams()
384384
if err != nil {
385385
return nil, err
386386
}
387387

388388
// Use default of 100 if pagination was not explicitly provided
389389
if !paginationExplicit {
390390
defaultFirst := int32(100)
391-
pagination.First = &defaultFirst
391+
paginationParams.First = &defaultFirst
392392
}
393393

394394
client, err := getGQLClient(ctx)
@@ -413,7 +413,7 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
413413
vars := map[string]interface{}{
414414
"owner": githubv4.String(params.Owner),
415415
"repo": githubv4.String(params.Repo),
416-
"first": githubv4.Int(*pagination.First),
416+
"first": githubv4.Int(*paginationParams.First),
417417
}
418418
if err := client.Query(ctx, &q, vars); err != nil {
419419
return mcp.NewToolResultError(err.Error()), nil

pkg/github/issues.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,8 +630,8 @@ func GetIssueComments(getClient GetClientFn, t translations.TranslationHelperFun
630630

631631
opts := &github.IssueListCommentsOptions{
632632
ListOptions: github.ListOptions{
633-
Page: pagination.page,
634-
PerPage: pagination.perPage,
633+
Page: pagination.Page,
634+
PerPage: pagination.PerPage,
635635
},
636636
}
637637

pkg/github/notifications.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ func ListNotifications(getClient GetClientFn, t translations.TranslationHelperFu
8888
All: filter == FilterIncludeRead,
8989
Participating: filter == FilterOnlyParticipating,
9090
ListOptions: github.ListOptions{
91-
Page: paginationParams.page,
92-
PerPage: paginationParams.perPage,
91+
Page: paginationParams.Page,
92+
PerPage: paginationParams.PerPage,
9393
},
9494
}
9595

pkg/github/pullrequests.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ func ListPullRequests(getClient GetClientFn, t translations.TranslationHelperFun
403403
Sort: sort,
404404
Direction: direction,
405405
ListOptions: github.ListOptions{
406-
PerPage: pagination.perPage,
407-
Page: pagination.page,
406+
PerPage: pagination.PerPage,
407+
Page: pagination.Page,
408408
},
409409
}
410410

@@ -622,8 +622,8 @@ func GetPullRequestFiles(getClient GetClientFn, t translations.TranslationHelper
622622
return nil, fmt.Errorf("failed to get GitHub client: %w", err)
623623
}
624624
opts := &github.ListOptions{
625-
PerPage: pagination.perPage,
626-
Page: pagination.page,
625+
PerPage: pagination.PerPage,
626+
Page: pagination.Page,
627627
}
628628
files, resp, err := client.PullRequests.ListFiles(ctx, owner, repo, pullNumber, opts)
629629
if err != nil {

pkg/github/repositories.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func GetCommit(getClient GetClientFn, t translations.TranslationHelperFunc) (too
5858
}
5959

6060
opts := &github.ListOptions{
61-
Page: pagination.page,
62-
PerPage: pagination.perPage,
61+
Page: pagination.Page,
62+
PerPage: pagination.PerPage,
6363
}
6464

6565
client, err := getClient(ctx)
@@ -139,15 +139,15 @@ func ListCommits(getClient GetClientFn, t translations.TranslationHelperFunc) (t
139139
return mcp.NewToolResultError(err.Error()), nil
140140
}
141141
// Set default perPage to 30 if not provided
142-
perPage := pagination.perPage
142+
perPage := pagination.PerPage
143143
if perPage == 0 {
144144
perPage = 30
145145
}
146146
opts := &github.CommitsListOptions{
147147
SHA: sha,
148148
Author: author,
149149
ListOptions: github.ListOptions{
150-
Page: pagination.page,
150+
Page: pagination.Page,
151151
PerPage: perPage,
152152
},
153153
}
@@ -217,8 +217,8 @@ func ListBranches(getClient GetClientFn, t translations.TranslationHelperFunc) (
217217

218218
opts := &github.BranchListOptions{
219219
ListOptions: github.ListOptions{
220-
Page: pagination.page,
221-
PerPage: pagination.perPage,
220+
Page: pagination.Page,
221+
PerPage: pagination.PerPage,
222222
},
223223
}
224224

@@ -1170,8 +1170,8 @@ func ListTags(getClient GetClientFn, t translations.TranslationHelperFunc) (tool
11701170
}
11711171

11721172
opts := &github.ListOptions{
1173-
Page: pagination.page,
1174-
PerPage: pagination.perPage,
1173+
Page: pagination.Page,
1174+
PerPage: pagination.PerPage,
11751175
}
11761176

11771177
client, err := getClient(ctx)

pkg/github/search.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ func SearchRepositories(getClient GetClientFn, t translations.TranslationHelperF
3939

4040
opts := &github.SearchOptions{
4141
ListOptions: github.ListOptions{
42-
Page: pagination.page,
43-
PerPage: pagination.perPage,
42+
Page: pagination.Page,
43+
PerPage: pagination.PerPage,
4444
},
4545
}
4646

@@ -118,8 +118,8 @@ func SearchCode(getClient GetClientFn, t translations.TranslationHelperFunc) (to
118118
Sort: sort,
119119
Order: order,
120120
ListOptions: github.ListOptions{
121-
PerPage: pagination.perPage,
122-
Page: pagination.page,
121+
PerPage: pagination.PerPage,
122+
Page: pagination.Page,
123123
},
124124
}
125125

@@ -193,8 +193,8 @@ func userOrOrgHandler(accountType string, getClient GetClientFn) server.ToolHand
193193
Sort: sort,
194194
Order: order,
195195
ListOptions: github.ListOptions{
196-
PerPage: pagination.perPage,
197-
Page: pagination.page,
196+
PerPage: pagination.PerPage,
197+
Page: pagination.Page,
198198
},
199199
}
200200

pkg/github/search_utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ func searchHandler(
5656
Sort: sort,
5757
Order: order,
5858
ListOptions: github.ListOptions{
59-
Page: pagination.page,
60-
PerPage: pagination.perPage,
59+
Page: pagination.Page,
60+
PerPage: pagination.PerPage,
6161
},
6262
}
6363

pkg/github/server.go

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ func WithUnifiedPagination() mcp.ToolOption {
209209
}
210210

211211
type PaginationParams struct {
212-
page int
213-
perPage int
212+
Page int
213+
PerPage int
214214
}
215215

216216
// OptionalPaginationParams returns the "page" and "perPage" parameters from the request,
@@ -228,53 +228,30 @@ func OptionalPaginationParams(r mcp.CallToolRequest) (PaginationParams, error) {
228228
return PaginationParams{}, err
229229
}
230230
return PaginationParams{
231-
page: page,
232-
perPage: perPage,
231+
Page: page,
232+
PerPage: perPage,
233233
}, nil
234234
}
235235

236236
type GraphQLPaginationParams struct {
237237
First *int32
238238
}
239239

240-
// UnifiedPaginationParams contains REST API pagination parameters that can be converted to GraphQL internally
241-
type UnifiedPaginationParams struct {
242-
Page int
243-
PerPage int
244-
}
245-
246240
// ToGraphQLParams converts REST API pagination parameters to GraphQL-specific parameters.
247241
// This converts page/perPage to first parameter for GraphQL queries.
248-
func (u UnifiedPaginationParams) ToGraphQLParams() (GraphQLPaginationParams, error) {
249-
if u.PerPage > 100 {
250-
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d exceeds maximum of 100", u.PerPage)
242+
func (p PaginationParams) ToGraphQLParams() (GraphQLPaginationParams, error) {
243+
if p.PerPage > 100 {
244+
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d exceeds maximum of 100", p.PerPage)
245+
}
246+
if p.PerPage < 0 {
247+
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d cannot be negative", p.PerPage)
251248
}
252-
first := int32(u.PerPage)
249+
first := int32(p.PerPage)
253250
return GraphQLPaginationParams{
254251
First: &first,
255252
}, nil
256253
}
257254

258-
// OptionalUnifiedPaginationParams returns pagination parameters from the request.
259-
// It accepts REST API (page/perPage) parameters only.
260-
func OptionalUnifiedPaginationParams(r mcp.CallToolRequest) (UnifiedPaginationParams, error) {
261-
// Get REST API pagination parameters with defaults
262-
page, err := OptionalIntParamWithDefault(r, "page", 1)
263-
if err != nil {
264-
return UnifiedPaginationParams{}, err
265-
}
266-
267-
perPage, err := OptionalIntParamWithDefault(r, "perPage", 30)
268-
if err != nil {
269-
return UnifiedPaginationParams{}, err
270-
}
271-
272-
return UnifiedPaginationParams{
273-
Page: page,
274-
PerPage: perPage,
275-
}, nil
276-
}
277-
278255
func MarshalledTextResult(v any) *mcp.CallToolResult {
279256
data, err := json.Marshal(v)
280257
if err != nil {

pkg/github/server_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,8 @@ func TestOptionalPaginationParams(t *testing.T) {
489489
name: "no pagination parameters, default values",
490490
params: map[string]any{},
491491
expected: PaginationParams{
492-
page: 1,
493-
perPage: 30,
492+
Page: 1,
493+
PerPage: 30,
494494
},
495495
expectError: false,
496496
},
@@ -500,8 +500,8 @@ func TestOptionalPaginationParams(t *testing.T) {
500500
"page": float64(2),
501501
},
502502
expected: PaginationParams{
503-
page: 2,
504-
perPage: 30,
503+
Page: 2,
504+
PerPage: 30,
505505
},
506506
expectError: false,
507507
},
@@ -511,8 +511,8 @@ func TestOptionalPaginationParams(t *testing.T) {
511511
"perPage": float64(50),
512512
},
513513
expected: PaginationParams{
514-
page: 1,
515-
perPage: 50,
514+
Page: 1,
515+
PerPage: 50,
516516
},
517517
expectError: false,
518518
},
@@ -523,8 +523,8 @@ func TestOptionalPaginationParams(t *testing.T) {
523523
"perPage": float64(50),
524524
},
525525
expected: PaginationParams{
526-
page: 2,
527-
perPage: 50,
526+
Page: 2,
527+
PerPage: 50,
528528
},
529529
expectError: false,
530530
},

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy