Skip to content

Commit 386a53c

Browse files
committed
Fix metadata resolver query
1 parent 3abc2be commit 386a53c

File tree

4 files changed

+64
-69
lines changed

4 files changed

+64
-69
lines changed

api/queries_repo.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ func RepoResolveMetadataIDs(client *Client, repo ghrepo.Interface, input RepoRes
623623
}
624624

625625
query := &bytes.Buffer{}
626+
fmt.Fprint(query, "{\n")
626627
for i, u := range users {
627628
fmt.Fprintf(query, "u%03d: user(login:%q){id,login}\n", i, u)
628629
}
@@ -640,6 +641,7 @@ func RepoResolveMetadataIDs(client *Client, repo ghrepo.Interface, input RepoRes
640641
}
641642
fmt.Fprint(query, "}\n")
642643
}
644+
fmt.Fprint(query, "}\n")
643645

644646
response := make(map[string]json.RawMessage)
645647
err = client.GraphQL(query.String(), nil, &response)

api/queries_repo_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ func Test_RepoResolveMetadataIDs(t *testing.T) {
188188
Labels: []string{"bug", "help wanted"},
189189
}
190190

191-
expectedQuery := `u000: user(login:"monalisa"){id,login}
191+
expectedQuery := `{
192+
u000: user(login:"monalisa"){id,login}
192193
u001: user(login:"hubot"){id,login}
193194
u002: user(login:"octocat"){id,login}
194195
repository(owner:"OWNER",name:"REPO"){
@@ -199,6 +200,7 @@ organization(login:"OWNER"){
199200
t000: team(slug:"core"){id,slug}
200201
t001: team(slug:"robots"){id,slug}
201202
}
203+
}
202204
`
203205
responseJSON := `
204206
{ "data": {

command/issue.go

Lines changed: 56 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -471,25 +471,9 @@ func issueCreate(cmd *cobra.Command, args []string) error {
471471
"body": body,
472472
}
473473

474-
if tb.HasMetadata() {
475-
if tb.MetadataResult == nil {
476-
resolveInput := api.RepoResolveInput{
477-
Assignees: tb.Assignees,
478-
Labels: tb.Labels,
479-
Projects: tb.Projects,
480-
Milestones: tb.Milestones,
481-
}
482-
483-
tb.MetadataResult, err = api.RepoResolveMetadataIDs(apiClient, baseRepo, resolveInput)
484-
if err != nil {
485-
return err
486-
}
487-
}
488-
489-
err = addMetadataToIssueParams(params, tb.MetadataResult, tb.Assignees, tb.Labels, tb.Projects, tb.Milestones)
490-
if err != nil {
491-
return err
492-
}
474+
err = addMetadataToIssueParams(apiClient, baseRepo, params, &tb)
475+
if err != nil {
476+
return err
493477
}
494478

495479
newIssue, err := api.IssueCreate(apiClient, repo, params)
@@ -505,33 +489,79 @@ func issueCreate(cmd *cobra.Command, args []string) error {
505489
return nil
506490
}
507491

508-
func addMetadataToIssueParams(params map[string]interface{}, metadata *api.RepoMetadataResult, assignees, labelNames, projectNames, milestoneTitles []string) error {
509-
assigneeIDs, err := metadata.MembersToIDs(assignees)
492+
func addMetadataToIssueParams(client *api.Client, baseRepo ghrepo.Interface, params map[string]interface{}, tb *issueMetadataState) error {
493+
if !tb.HasMetadata() {
494+
return nil
495+
}
496+
497+
if tb.MetadataResult == nil {
498+
resolveInput := api.RepoResolveInput{
499+
Reviewers: tb.Reviewers,
500+
Assignees: tb.Assignees,
501+
Labels: tb.Labels,
502+
Projects: tb.Projects,
503+
Milestones: tb.Milestones,
504+
}
505+
506+
var err error
507+
tb.MetadataResult, err = api.RepoResolveMetadataIDs(client, baseRepo, resolveInput)
508+
if err != nil {
509+
return err
510+
}
511+
}
512+
513+
assigneeIDs, err := tb.MetadataResult.MembersToIDs(tb.Assignees)
510514
if err != nil {
511515
return fmt.Errorf("could not assign user: %w", err)
512516
}
513517
params["assigneeIds"] = assigneeIDs
514518

515-
labelIDs, err := metadata.LabelsToIDs(labelNames)
519+
labelIDs, err := tb.MetadataResult.LabelsToIDs(tb.Labels)
516520
if err != nil {
517521
return fmt.Errorf("could not add label: %w", err)
518522
}
519523
params["labelIds"] = labelIDs
520524

521-
projectIDs, err := metadata.ProjectsToIDs(projectNames)
525+
projectIDs, err := tb.MetadataResult.ProjectsToIDs(tb.Projects)
522526
if err != nil {
523527
return fmt.Errorf("could not add to project: %w", err)
524528
}
525529
params["projectIds"] = projectIDs
526530

527-
if len(milestoneTitles) > 0 {
528-
milestoneID, err := metadata.MilestoneToID(milestoneTitles[0])
531+
if len(tb.Milestones) > 0 {
532+
milestoneID, err := tb.MetadataResult.MilestoneToID(tb.Milestones[0])
529533
if err != nil {
530-
return fmt.Errorf("could not add to milestone '%s': %w", milestoneTitles[0], err)
534+
return fmt.Errorf("could not add to milestone '%s': %w", tb.Milestones[0], err)
531535
}
532536
params["milestoneId"] = milestoneID
533537
}
534538

539+
if len(tb.Reviewers) == 0 {
540+
return nil
541+
}
542+
543+
var userReviewers []string
544+
var teamReviewers []string
545+
for _, r := range tb.Reviewers {
546+
if strings.ContainsRune(r, '/') {
547+
teamReviewers = append(teamReviewers, r)
548+
} else {
549+
userReviewers = append(teamReviewers, r)
550+
}
551+
}
552+
553+
userReviewerIDs, err := tb.MetadataResult.MembersToIDs(userReviewers)
554+
if err != nil {
555+
return fmt.Errorf("could not request reviewer: %w", err)
556+
}
557+
params["userReviewerIds"] = userReviewerIDs
558+
559+
teamReviewerIDs, err := tb.MetadataResult.TeamsToIDs(teamReviewers)
560+
if err != nil {
561+
return fmt.Errorf("could not request reviewer: %w", err)
562+
}
563+
params["teamReviewerIds"] = teamReviewerIDs
564+
535565
return nil
536566
}
537567

command/pr_create.go

Lines changed: 3 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -325,48 +325,9 @@ func prCreate(cmd *cobra.Command, _ []string) error {
325325
"headRefName": headBranchLabel,
326326
}
327327

328-
if tb.HasMetadata() {
329-
if tb.MetadataResult == nil {
330-
resolveInput := api.RepoResolveInput{
331-
Reviewers: tb.Reviewers,
332-
Assignees: tb.Assignees,
333-
Labels: tb.Labels,
334-
Projects: tb.Projects,
335-
Milestones: tb.Milestones,
336-
}
337-
338-
tb.MetadataResult, err = api.RepoResolveMetadataIDs(client, baseRepo, resolveInput)
339-
if err != nil {
340-
return err
341-
}
342-
}
343-
344-
err = addMetadataToIssueParams(params, tb.MetadataResult, tb.Assignees, tb.Labels, tb.Projects, tb.Milestones)
345-
if err != nil {
346-
return err
347-
}
348-
349-
var userReviewers []string
350-
var teamReviewers []string
351-
for _, r := range tb.Reviewers {
352-
if strings.ContainsRune(r, '/') {
353-
teamReviewers = append(teamReviewers, r)
354-
} else {
355-
userReviewers = append(teamReviewers, r)
356-
}
357-
}
358-
359-
userReviewerIDs, err := tb.MetadataResult.MembersToIDs(userReviewers)
360-
if err != nil {
361-
return fmt.Errorf("could not request reviewer: %w", err)
362-
}
363-
params["userReviewerIds"] = userReviewerIDs
364-
365-
teamReviewerIDs, err := tb.MetadataResult.TeamsToIDs(teamReviewers)
366-
if err != nil {
367-
return fmt.Errorf("could not request reviewer: %w", err)
368-
}
369-
params["teamReviewerIds"] = teamReviewerIDs
328+
err = addMetadataToIssueParams(client, baseRepo, params, &tb)
329+
if err != nil {
330+
return err
370331
}
371332

372333
pr, err := api.CreatePullRequest(client, baseRepo, params)

0 commit comments

Comments
 (0)