(ctx context.Context, client *github.Client, owner, ownerType string, projectNumber int, itemID int64, fieldValue map[string]any)
| 1075 | } |
| 1076 | |
| 1077 | func updateProjectItem(ctx context.Context, client *github.Client, owner, ownerType string, projectNumber int, itemID int64, fieldValue map[string]any) (*mcp.CallToolResult, any, error) { |
| 1078 | updatePayload, err := buildUpdateProjectItem(fieldValue) |
| 1079 | if err != nil { |
| 1080 | return utils.NewToolResultError(err.Error()), nil, nil |
| 1081 | } |
| 1082 | |
| 1083 | var resp *github.Response |
| 1084 | var updatedItem *github.ProjectV2Item |
| 1085 | |
| 1086 | if ownerType == "org" { |
| 1087 | updatedItem, resp, err = client.Projects.UpdateOrganizationProjectItem(ctx, owner, projectNumber, itemID, updatePayload) |
| 1088 | } else { |
| 1089 | updatedItem, resp, err = client.Projects.UpdateUserProjectItem(ctx, owner, projectNumber, itemID, updatePayload) |
| 1090 | } |
| 1091 | |
| 1092 | if err != nil { |
| 1093 | return ghErrors.NewGitHubAPIErrorResponse(ctx, |
| 1094 | ProjectUpdateFailedError, |
| 1095 | resp, |
| 1096 | err, |
| 1097 | ), nil, nil |
| 1098 | } |
| 1099 | defer func() { _ = resp.Body.Close() }() |
| 1100 | |
| 1101 | if resp.StatusCode != http.StatusOK { |
| 1102 | body, err := io.ReadAll(resp.Body) |
| 1103 | if err != nil { |
| 1104 | return nil, nil, fmt.Errorf("failed to read response body: %w", err) |
| 1105 | } |
| 1106 | return ghErrors.NewGitHubAPIStatusErrorResponse(ctx, ProjectUpdateFailedError, resp, body), nil, nil |
| 1107 | } |
| 1108 | r, err := json.Marshal(convertToMinimalProjectItem(updatedItem)) |
| 1109 | if err != nil { |
| 1110 | return nil, nil, fmt.Errorf("failed to marshal response: %w", err) |
| 1111 | } |
| 1112 | |
| 1113 | return utils.NewToolResultText(string(r)), nil, nil |
| 1114 | } |
| 1115 | |
| 1116 | func deleteProjectItem(ctx context.Context, client *github.Client, owner, ownerType string, projectNumber int, itemID int64) (*mcp.CallToolResult, any, error) { |
| 1117 | var resp *github.Response |
no test coverage detected