MCPcopy Create free account
hub / github.com/cli/cli / RepoAssignableActors

Function RepoAssignableActors

api/queries_repo.go:1289–1351  ·  view source on GitHub ↗

RepoAssignableActors fetches all the assignable actors for a repository on GitHub hosts that support Actor assignees.

(client *Client, repo ghrepo.Interface)

Source from the content-addressed store, hash-verified

1287// RepoAssignableActors fetches all the assignable actors for a repository on
1288// GitHub hosts that support Actor assignees.
1289func RepoAssignableActors(client *Client, repo ghrepo.Interface) ([]AssignableActor, error) {
1290 type responseData struct {
1291 Repository struct {
1292 SuggestedActors struct {
1293 Nodes []struct {
1294 User struct {
1295 ID string
1296 Login string
1297 Name string
1298 TypeName string `graphql:"__typename"`
1299 } `graphql:"... on User"`
1300 Bot struct {
1301 ID string
1302 Login string
1303 TypeName string `graphql:"__typename"`
1304 } `graphql:"... on Bot"`
1305 }
1306 PageInfo struct {
1307 HasNextPage bool
1308 EndCursor string
1309 }
1310 } `graphql:"suggestedActors(first: 100, after: $endCursor, capabilities: CAN_BE_ASSIGNED)"`
1311 } `graphql:"repository(owner: $owner, name: $name)"`
1312 }
1313
1314 variables := map[string]any{
1315 "owner": githubv4.String(repo.RepoOwner()),
1316 "name": githubv4.String(repo.RepoName()),
1317 "endCursor": (*githubv4.String)(nil),
1318 }
1319
1320 var actors []AssignableActor
1321 for {
1322 var query responseData
1323 err := client.Query(repo.RepoHost(), "RepositoryAssignableActors", &query, variables)
1324 if err != nil {
1325 return nil, err
1326 }
1327
1328 for _, node := range query.Repository.SuggestedActors.Nodes {
1329 if node.User.TypeName == "User" {
1330 actor := AssignableUser{
1331 id: node.User.ID,
1332 login: node.User.Login,
1333 name: node.User.Name,
1334 }
1335 actors = append(actors, actor)
1336 } else if node.Bot.TypeName == "Bot" {
1337 actor := AssignableBot{
1338 id: node.Bot.ID,
1339 login: node.Bot.Login,
1340 }
1341 actors = append(actors, actor)
1342 }
1343 }
1344
1345 if !query.Repository.SuggestedActors.PageInfo.HasNextPage {
1346 break

Callers 1

RepoMetadataFunction · 0.85

Calls 5

StringMethod · 0.65
RepoOwnerMethod · 0.65
RepoNameMethod · 0.65
QueryMethod · 0.65
RepoHostMethod · 0.65

Tested by

no test coverage detected