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