| 263 | } |
| 264 | |
| 265 | func milestoneByNumber(client *http.Client, repo ghrepo.Interface, number int32) (*api.RepoMilestone, error) { |
| 266 | var query struct { |
| 267 | Repository struct { |
| 268 | Milestone *api.RepoMilestone `graphql:"milestone(number: $number)"` |
| 269 | } `graphql:"repository(owner: $owner, name: $name)"` |
| 270 | } |
| 271 | |
| 272 | variables := map[string]interface{}{ |
| 273 | "owner": githubv4.String(repo.RepoOwner()), |
| 274 | "name": githubv4.String(repo.RepoName()), |
| 275 | "number": githubv4.Int(number), |
| 276 | } |
| 277 | |
| 278 | gql := api.NewClientFromHTTP(client) |
| 279 | if err := gql.Query(repo.RepoHost(), "RepositoryMilestoneByNumber", &query, variables); err != nil { |
| 280 | return nil, err |
| 281 | } |
| 282 | if query.Repository.Milestone == nil { |
| 283 | return nil, fmt.Errorf("no milestone found with number '%d'", number) |
| 284 | } |
| 285 | |
| 286 | return query.Repository.Milestone, nil |
| 287 | } |