RepoAssignableUsers fetches all the assignable users for a repository
(client *Client, repo ghrepo.Interface)
| 1227 | |
| 1228 | // RepoAssignableUsers fetches all the assignable users for a repository |
| 1229 | func RepoAssignableUsers(client *Client, repo ghrepo.Interface) ([]AssignableUser, error) { |
| 1230 | type responseData struct { |
| 1231 | Repository struct { |
| 1232 | AssignableUsers struct { |
| 1233 | Nodes []struct { |
| 1234 | ID string |
| 1235 | Login string |
| 1236 | Name string |
| 1237 | } |
| 1238 | PageInfo struct { |
| 1239 | HasNextPage bool |
| 1240 | EndCursor string |
| 1241 | } |
| 1242 | } `graphql:"assignableUsers(first: 100, after: $endCursor)"` |
| 1243 | } `graphql:"repository(owner: $owner, name: $name)"` |
| 1244 | } |
| 1245 | |
| 1246 | variables := map[string]interface{}{ |
| 1247 | "owner": githubv4.String(repo.RepoOwner()), |
| 1248 | "name": githubv4.String(repo.RepoName()), |
| 1249 | "endCursor": (*githubv4.String)(nil), |
| 1250 | } |
| 1251 | |
| 1252 | var users []AssignableUser |
| 1253 | for { |
| 1254 | var query responseData |
| 1255 | err := client.Query(repo.RepoHost(), "RepositoryAssignableUsers", &query, variables) |
| 1256 | if err != nil { |
| 1257 | return nil, err |
| 1258 | } |
| 1259 | |
| 1260 | for _, node := range query.Repository.AssignableUsers.Nodes { |
| 1261 | user := AssignableUser{ |
| 1262 | id: node.ID, |
| 1263 | login: node.Login, |
| 1264 | name: node.Name, |
| 1265 | } |
| 1266 | |
| 1267 | users = append(users, user) |
| 1268 | } |
| 1269 | if !query.Repository.AssignableUsers.PageInfo.HasNextPage { |
| 1270 | break |
| 1271 | } |
| 1272 | variables["endCursor"] = githubv4.String(query.Repository.AssignableUsers.PageInfo.EndCursor) |
| 1273 | } |
| 1274 | |
| 1275 | return users, nil |
| 1276 | } |
| 1277 | |
| 1278 | // RepoAssignableActors fetches all the assignable actors for a repository on |
| 1279 | // GitHub hosts that support Actor assignees. |