refactor(api): add IssueRepoInfo for minimal issue repo queries
Add a new IssueRepoInfo function that fetches only the fields needed for issue creation (id, name, owner, hasIssuesEnabled, viewerPermission), avoiding defaultBranchRef and other fields that require Contents:Read. Also add StubIssueRepoInfoResponse helper to httpmock for testing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
6e49747f49
commit
5e2b2779d1
2 changed files with 52 additions and 0 deletions
|
|
@ -314,6 +314,44 @@ func FetchRepository(client *Client, repo ghrepo.Interface, fields []string) (*R
|
|||
return InitRepoHostname(result.Repository, repo.RepoHost()), nil
|
||||
}
|
||||
|
||||
// IssueRepoInfo fetches only the repository fields needed for issue creation,
|
||||
// avoiding fields like defaultBranchRef that require additional token permissions.
|
||||
func IssueRepoInfo(client *Client, repo ghrepo.Interface) (*Repository, error) {
|
||||
query := `
|
||||
query IssueRepositoryInfo($owner: String!, $name: String!) {
|
||||
repository(owner: $owner, name: $name) {
|
||||
id
|
||||
name
|
||||
owner { login }
|
||||
hasIssuesEnabled
|
||||
viewerPermission
|
||||
}
|
||||
}`
|
||||
variables := map[string]interface{}{
|
||||
"owner": repo.RepoOwner(),
|
||||
"name": repo.RepoName(),
|
||||
}
|
||||
|
||||
var result struct {
|
||||
Repository *Repository
|
||||
}
|
||||
if err := client.GraphQL(repo.RepoHost(), query, variables, &result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Repository == nil {
|
||||
return nil, GraphQLError{
|
||||
GraphQLError: &ghAPI.GraphQLError{
|
||||
Errors: []ghAPI.GraphQLErrorItem{{
|
||||
Type: "NOT_FOUND",
|
||||
Message: fmt.Sprintf("Could not resolve to a Repository with the name '%s/%s'.", repo.RepoOwner(), repo.RepoName()),
|
||||
}},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return InitRepoHostname(result.Repository, repo.RepoHost()), nil
|
||||
}
|
||||
|
||||
func GitHubRepo(client *Client, repo ghrepo.Interface) (*Repository, error) {
|
||||
query := `
|
||||
fragment repo on Repository {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue