(ctx context.Context, client *githubv4.Client, args map[string]any)
| 932 | } |
| 933 | |
| 934 | func markDiscussionCommentAsAnswer(ctx context.Context, client *githubv4.Client, args map[string]any) (*mcp.CallToolResult, any, error) { |
| 935 | commentNodeID, err := requiredCommentNodeID(args) |
| 936 | if err != nil { |
| 937 | return utils.NewToolResultError(err.Error()), nil, nil |
| 938 | } |
| 939 | |
| 940 | input := githubv4.MarkDiscussionCommentAsAnswerInput{ |
| 941 | ID: githubv4.ID(commentNodeID), |
| 942 | } |
| 943 | var mutation struct { |
| 944 | MarkDiscussionCommentAsAnswer struct { |
| 945 | Discussion struct { |
| 946 | ID githubv4.ID |
| 947 | URL githubv4.String `graphql:"url"` |
| 948 | } |
| 949 | } `graphql:"markDiscussionCommentAsAnswer(input: $input)"` |
| 950 | } |
| 951 | if err := client.Mutate(ctx, &mutation, input, nil); err != nil { |
| 952 | return utils.NewToolResultError(err.Error()), nil, nil |
| 953 | } |
| 954 | |
| 955 | out, err := json.Marshal(struct { |
| 956 | DiscussionID string `json:"discussionID"` |
| 957 | DiscussionURL string `json:"discussionURL"` |
| 958 | }{ |
| 959 | DiscussionID: fmt.Sprintf("%v", mutation.MarkDiscussionCommentAsAnswer.Discussion.ID), |
| 960 | DiscussionURL: string(mutation.MarkDiscussionCommentAsAnswer.Discussion.URL), |
| 961 | }) |
| 962 | if err != nil { |
| 963 | return nil, nil, fmt.Errorf("failed to marshal discussion: %w", err) |
| 964 | } |
| 965 | |
| 966 | return utils.NewToolResultText(string(out)), nil, nil |
| 967 | } |
| 968 | |
| 969 | func unmarkDiscussionCommentAsAnswer(ctx context.Context, client *githubv4.Client, args map[string]any) (*mcp.CallToolResult, any, error) { |
| 970 | commentNodeID, err := requiredCommentNodeID(args) |
no test coverage detected