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