@@ -17,61 +17,33 @@ const DefaultGraphQLPageSize = 30
1717
1818// Common interface for all discussion query types
1919type DiscussionQueryResult interface {
20- GetDiscussionNodes () []DiscussionFragment
21- GetPageInfo () PageInfoFragment
22- GetTotalCount () githubv4.Int
20+ GetDiscussionFragment () DiscussionFragment
2321}
2422
2523// Implement the interface for all query types
26- func (q * BasicNoOrder ) GetDiscussionNodes () [] DiscussionFragment {
27- return q .Repository .Discussions . Nodes
24+ func (q * BasicNoOrder ) GetDiscussionFragment () DiscussionFragment {
25+ return q .Repository .Discussions
2826}
2927
30- func (q * BasicNoOrder ) GetPageInfo () PageInfoFragment {
31- return q .Repository .Discussions . PageInfo
28+ func (q * BasicWithOrder ) GetDiscussionFragment () DiscussionFragment {
29+ return q .Repository .Discussions
3230}
3331
34- func (q * BasicNoOrder ) GetTotalCount () githubv4. Int {
35- return q .Repository .Discussions . TotalCount
32+ func (q * WithCategoryAndOrder ) GetDiscussionFragment () DiscussionFragment {
33+ return q .Repository .Discussions
3634}
3735
38- func (q * BasicWithOrder ) GetDiscussionNodes () [] DiscussionFragment {
39- return q .Repository .Discussions . Nodes
36+ func (q * WithCategoryNoOrder ) GetDiscussionFragment () DiscussionFragment {
37+ return q .Repository .Discussions
4038}
4139
42- func (q * BasicWithOrder ) GetPageInfo () PageInfoFragment {
43- return q .Repository .Discussions .PageInfo
44- }
45-
46- func (q * BasicWithOrder ) GetTotalCount () githubv4.Int {
47- return q .Repository .Discussions .TotalCount
48- }
49-
50- func (q * WithCategoryAndOrder ) GetDiscussionNodes () []DiscussionFragment {
51- return q .Repository .Discussions .Nodes
52- }
53-
54- func (q * WithCategoryAndOrder ) GetPageInfo () PageInfoFragment {
55- return q .Repository .Discussions .PageInfo
56- }
57-
58- func (q * WithCategoryAndOrder ) GetTotalCount () githubv4.Int {
59- return q .Repository .Discussions .TotalCount
60- }
61-
62- func (q * WithCategoryNoOrder ) GetDiscussionNodes () []DiscussionFragment {
63- return q .Repository .Discussions .Nodes
64- }
65-
66- func (q * WithCategoryNoOrder ) GetPageInfo () PageInfoFragment {
67- return q .Repository .Discussions .PageInfo
68- }
69-
70- func (q * WithCategoryNoOrder ) GetTotalCount () githubv4.Int {
71- return q .Repository .Discussions .TotalCount
40+ type DiscussionFragment struct {
41+ Nodes []NodeFragment
42+ PageInfo PageInfoFragment
43+ TotalCount githubv4.Int
7244}
7345
74- type DiscussionFragment struct {
46+ type NodeFragment struct {
7547 Number githubv4.Int
7648 Title githubv4.String
7749 CreatedAt githubv4.DateTime
@@ -94,45 +66,29 @@ type PageInfoFragment struct {
9466
9567type BasicNoOrder struct {
9668 Repository struct {
97- Discussions struct {
98- Nodes []DiscussionFragment
99- PageInfo PageInfoFragment
100- TotalCount githubv4.Int
101- } `graphql:"discussions(first: $first, after: $after)"`
69+ Discussions DiscussionFragment `graphql:"discussions(first: $first, after: $after)"`
10270 } `graphql:"repository(owner: $owner, name: $repo)"`
10371}
10472
10573type BasicWithOrder struct {
10674 Repository struct {
107- Discussions struct {
108- Nodes []DiscussionFragment
109- PageInfo PageInfoFragment
110- TotalCount githubv4.Int
111- } `graphql:"discussions(first: $first, after: $after, orderBy: { field: $orderByField, direction: $orderByDirection })"`
75+ Discussions DiscussionFragment `graphql:"discussions(first: $first, after: $after, orderBy: { field: $orderByField, direction: $orderByDirection })"`
11276 } `graphql:"repository(owner: $owner, name: $repo)"`
11377}
11478
11579type WithCategoryAndOrder struct {
11680 Repository struct {
117- Discussions struct {
118- Nodes []DiscussionFragment
119- PageInfo PageInfoFragment
120- TotalCount githubv4.Int
121- } `graphql:"discussions(first: $first, after: $after, categoryId: $categoryId, orderBy: { field: $orderByField, direction: $orderByDirection })"`
81+ Discussions DiscussionFragment `graphql:"discussions(first: $first, after: $after, categoryId: $categoryId, orderBy: { field: $orderByField, direction: $orderByDirection })"`
12282 } `graphql:"repository(owner: $owner, name: $repo)"`
12383}
12484
12585type WithCategoryNoOrder struct {
12686 Repository struct {
127- Discussions struct {
128- Nodes []DiscussionFragment
129- PageInfo PageInfoFragment
130- TotalCount githubv4.Int
131- } `graphql:"discussions(first: $first, after: $after, categoryId: $categoryId)"`
87+ Discussions DiscussionFragment `graphql:"discussions(first: $first, after: $after, categoryId: $categoryId)"`
13288 } `graphql:"repository(owner: $owner, name: $repo)"`
13389}
13490
135- func fragmentToDiscussion (fragment DiscussionFragment ) * github.Discussion {
91+ func fragmentToDiscussion (fragment NodeFragment ) * github.Discussion {
13692 return & github.Discussion {
13793 Number : github .Ptr (int (fragment .Number )),
13894 Title : github .Ptr (string (fragment .Title )),
@@ -268,11 +224,12 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
268224 var pageInfo PageInfoFragment
269225 var totalCount githubv4.Int
270226 if queryResult , ok := discussionQuery .(DiscussionQueryResult ); ok {
271- for _ , node := range queryResult .GetDiscussionNodes () {
227+ fragment := queryResult .GetDiscussionFragment ()
228+ for _ , node := range fragment .Nodes {
272229 discussions = append (discussions , fragmentToDiscussion (node ))
273230 }
274- pageInfo = queryResult . GetPageInfo ()
275- totalCount = queryResult . GetTotalCount ()
231+ pageInfo = fragment . PageInfo
232+ totalCount = fragment . TotalCount
276233 }
277234
278235 // Create response with pagination info
0 commit comments