From d78703efaaf3f35062fd2bd7c325e12199f3c1c0 Mon Sep 17 00:00:00 2001 From: "Babak K. Shandiz" Date: Fri, 1 May 2026 09:12:15 +0100 Subject: [PATCH] fix(discussion/client): polish Create implementation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- pkg/cmd/discussion/client/client_impl.go | 28 +++++++----------------- pkg/cmd/discussion/client/types.go | 7 +++--- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/pkg/cmd/discussion/client/client_impl.go b/pkg/cmd/discussion/client/client_impl.go index ead75da6e..8b56948c9 100644 --- a/pkg/cmd/discussion/client/client_impl.go +++ b/pkg/cmd/discussion/client/client_impl.go @@ -805,25 +805,13 @@ func (c *discussionClient) getRepositoryMeta(repo ghrepo.Interface) (*repository }, nil } -// createDiscussionGQLInput is the typed input for the createDiscussion GraphQL mutation. -type createDiscussionGQLInput struct { - RepositoryID githubv4.ID `json:"repositoryId"` - CategoryID githubv4.ID `json:"categoryId"` - Title githubv4.String `json:"title"` - Body githubv4.String `json:"body"` -} - func (c *discussionClient) Create(repo ghrepo.Interface, input CreateDiscussionInput) (*Discussion, error) { - repoID := input.RepositoryID - if repoID == "" { - meta, err := c.getRepositoryMeta(repo) - if err != nil { - return nil, err - } - if !meta.HasDiscussionsEnabled { - return nil, fmt.Errorf("the '%s/%s' repository has discussions disabled", repo.RepoOwner(), repo.RepoName()) - } - repoID = meta.ID + meta, err := c.getRepositoryMeta(repo) + if err != nil { + return nil, err + } + if !meta.HasDiscussionsEnabled { + return nil, fmt.Errorf("the '%s/%s' repository has discussions disabled", repo.RepoOwner(), repo.RepoName()) } var mutation struct { @@ -838,8 +826,8 @@ func (c *discussionClient) Create(repo ghrepo.Interface, input CreateDiscussionI } variables := map[string]interface{}{ - "input": createDiscussionGQLInput{ - RepositoryID: githubv4.ID(repoID), + "input": githubv4.CreateDiscussionInput{ + RepositoryID: githubv4.ID(meta.ID), CategoryID: githubv4.ID(input.CategoryID), Title: githubv4.String(input.Title), Body: githubv4.String(input.Body), diff --git a/pkg/cmd/discussion/client/types.go b/pkg/cmd/discussion/client/types.go index 1eaab5329..6e964bc9c 100644 --- a/pkg/cmd/discussion/client/types.go +++ b/pkg/cmd/discussion/client/types.go @@ -327,10 +327,9 @@ type SearchFilters struct { // CreateDiscussionInput holds the parameters for creating a discussion. type CreateDiscussionInput struct { - RepositoryID string - CategoryID string - Title string - Body string + CategoryID string + Title string + Body string } // UpdateDiscussionInput holds optional parameters for updating a discussion.