Skip to content

Commit 58dc124

Browse files
committed
Adding a method to resolve params resolveItemIDFromIssueArgs
1 parent 7c3f8c7 commit 58dc124

2 files changed

Lines changed: 13 additions & 13 deletions

File tree

pkg/github/projects.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -699,19 +699,7 @@ func ProjectsWrite(t translations.TranslationHelperFunc) inventory.ServerTool {
699699
itemID = id
700700
} else {
701701
// Resolve the item by (item_owner, item_repo, issue_number).
702-
issueOwner, ownerErr := RequiredParam[string](args, "item_owner")
703-
if ownerErr != nil {
704-
return utils.NewToolResultError("update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue"), nil, nil
705-
}
706-
issueRepo, repoErr := RequiredParam[string](args, "item_repo")
707-
if repoErr != nil {
708-
return utils.NewToolResultError("update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue"), nil, nil
709-
}
710-
issueNumber, numErr := RequiredInt(args, "issue_number")
711-
if numErr != nil {
712-
return utils.NewToolResultError("update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue"), nil, nil
713-
}
714-
resolvedItemID, resolveErr := resolveProjectItemIDByIssueNumber(ctx, gqlClient, owner, ownerType, projectNumber, issueOwner, issueRepo, issueNumber)
702+
resolvedItemID, resolveErr := resolveItemIDFromIssueArgs(ctx, gqlClient, owner, ownerType, projectNumber, args)
715703
if resolveErr != nil {
716704
var structured *ghErrors.StructuredResolutionError
717705
if errors.As(resolveErr, &structured) {

pkg/github/projects_resolver.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,18 @@ func resolveProjectItemIDByIssueNumber(ctx context.Context, gqlClient *githubv4.
310310
)
311311
}
312312

313+
// resolveItemIDFromIssueArgs reads (item_owner, item_repo, issue_number) from args
314+
// and resolves them to a project item ID. Returns a single friendly error if any input is missing.
315+
func resolveItemIDFromIssueArgs(ctx context.Context, gqlClient *githubv4.Client, owner, ownerType string, projectNumber int, args map[string]any) (int64, error) {
316+
issueOwner, ownerErr := RequiredParam[string](args, "item_owner")
317+
issueRepo, repoErr := RequiredParam[string](args, "item_repo")
318+
issueNumber, numErr := RequiredInt(args, "issue_number")
319+
if ownerErr != nil || repoErr != nil || numErr != nil {
320+
return 0, fmt.Errorf("update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue")
321+
}
322+
return resolveProjectItemIDByIssueNumber(ctx, gqlClient, owner, ownerType, projectNumber, issueOwner, issueRepo, issueNumber)
323+
}
324+
313325
// parseInt64 parses a decimal string into int64.
314326
func parseInt64(s string) (int64, error) {
315327
var n int64

0 commit comments

Comments
 (0)