Documentation
¶
Overview ¶
Package discussions provides client-side interfaces for working with GitLab discussions.
This package offers a set of type-safe, idiomatic Go wrappers around GitLab's Discussions API endpoints, allowing for the creation, retrieval, modification, and deletion of discussion threads and notes across different GitLab resources: issues, merge requests, epics, snippets, and commits.
Each resource type has its own specialized manager type (IssueDiscussion, MergeRequestDiscussion, etc.) that implements common methods for working with discussions, while also providing resource-specific functionality where applicable (such as resolving merge request discussions).
Example usage:
// Create a new discussion on an issue issueDiscussions, err := discussions.NewIssueDiscussion(client, "mygroup/myproject", 123) if err != nil { log.Fatal(err) } // Create a new discussion thread discussion, err := issueDiscussions.NewDiscussion(ctx, "This is a new comment") if err != nil { log.Fatal(err) } // Add a note to the discussion n, err := issueDiscussions.AddNote(ctx, discussion.ID, "This is a reply") if err != nil { log.Fatal(err) }
All methods accept a context.Context parameter to support timeouts, cancellation, and other context-driven behaviors.
Index ¶
- Variables
- type CommitDiscussion
- func (d *CommitDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
- func (d *CommitDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
- func (d *CommitDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
- func (d *CommitDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
- func (d *CommitDiscussion) NewDiffDiscussion(ctx context.Context, body string, position *gitlab.NotePosition) (*gitlab.Discussion, error)
- func (d *CommitDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
- func (d *CommitDiscussion) NewPositionDiscussion(ctx context.Context, body string, pos *gitlab.PositionOptions, commitID string) (*gitlab.Discussion, error)
- type EpicDiscussion
- func (d *EpicDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
- func (d *EpicDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
- func (d *EpicDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
- func (d *EpicDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
- func (d *EpicDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
- type IssueDiscussion
- func (d *IssueDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
- func (d *IssueDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
- func (d *IssueDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
- func (d *IssueDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
- func (d *IssueDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
- type Manager
- type MergeRequestDiscussion
- func (d *MergeRequestDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
- func (d *MergeRequestDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
- func (d *MergeRequestDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
- func (d *MergeRequestDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
- func (d *MergeRequestDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
- func (d *MergeRequestDiscussion) NewPositionDiscussion(ctx context.Context, body string, pos *gitlab.PositionOptions, commitID string) (*gitlab.Discussion, error)
- func (d *MergeRequestDiscussion) ResolveDiscussion(ctx context.Context, discussionID string, resolved bool) (*gitlab.Discussion, error)
- type PositionedManager
- type ResolvableManager
- type SnippetDiscussion
- func (d *SnippetDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
- func (d *SnippetDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
- func (d *SnippetDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
- func (d *SnippetDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
- func (d *SnippetDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidArgument = errors.New("invalid argument")
Functions ¶
This section is empty.
Types ¶
type CommitDiscussion ¶
type CommitDiscussion struct {
// contains filtered or unexported fields
}
CommitDiscussion provides methods for managing discussions on GitLab commits.
func NewCommitDiscussion ¶
func NewCommitDiscussion(client *gitlab.Client, projectID mcpargs.ID, commitID string) (*CommitDiscussion, error)
NewCommitDiscussion creates a new instance for managing discussions on a specific GitLab commit.
func (*CommitDiscussion) AddNote ¶
func (d *CommitDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
AddNote adds a new note to an existing discussion thread.
func (*CommitDiscussion) DeleteNote ¶
DeleteNote removes a note from a discussion thread.
func (*CommitDiscussion) List ¶
func (d *CommitDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
List returns all discussions for the commit.
func (*CommitDiscussion) ModifyNote ¶
func (d *CommitDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
ModifyNote updates an existing note in a discussion thread.
func (*CommitDiscussion) NewDiffDiscussion ¶
func (d *CommitDiscussion) NewDiffDiscussion(ctx context.Context, body string, position *gitlab.NotePosition) (*gitlab.Discussion, error)
NewDiffDiscussion creates a new discussion on a specific position in the commit diff.
func (*CommitDiscussion) NewDiscussion ¶
func (d *CommitDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
NewDiscussion creates a new discussion thread on the commit.
func (*CommitDiscussion) NewPositionDiscussion ¶
func (d *CommitDiscussion) NewPositionDiscussion(ctx context.Context, body string, pos *gitlab.PositionOptions, commitID string) (*gitlab.Discussion, error)
NewPositionDiscussion creates a new discussion on a specific position in the merge request diff.
type EpicDiscussion ¶
type EpicDiscussion struct {
// contains filtered or unexported fields
}
EpicDiscussion provides methods for managing discussions on GitLab epics.
func NewEpicDiscussion ¶
func NewEpicDiscussion(client *gitlab.Client, groupID mcpargs.ID, epicID int) (*EpicDiscussion, error)
NewEpicDiscussion creates a new instance for managing discussions on a specific GitLab epic.
func (*EpicDiscussion) AddNote ¶
func (d *EpicDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
AddNote adds a new note to an existing discussion thread.
func (*EpicDiscussion) DeleteNote ¶
DeleteNote removes a note from a discussion thread.
func (*EpicDiscussion) List ¶
func (d *EpicDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
List returns all discussions for the epic.
func (*EpicDiscussion) ModifyNote ¶
func (d *EpicDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
ModifyNote updates an existing note in a discussion thread.
func (*EpicDiscussion) NewDiscussion ¶
func (d *EpicDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
NewDiscussion creates a new discussion thread on the epic.
type IssueDiscussion ¶
type IssueDiscussion struct {
// contains filtered or unexported fields
}
IssueDiscussion provides methods for managing discussions on GitLab issues.
func NewIssueDiscussion ¶
func NewIssueDiscussion(client *gitlab.Client, projectID mcpargs.ID, issueIID int) (*IssueDiscussion, error)
NewIssueDiscussion creates a new instance for managing discussions on a specific GitLab issue.
func (*IssueDiscussion) AddNote ¶
func (d *IssueDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
AddNote adds a new note to an existing discussion thread.
func (*IssueDiscussion) DeleteNote ¶
DeleteNote removes a note from a discussion thread.
func (*IssueDiscussion) List ¶
func (d *IssueDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
List returns all discussions for the issue.
func (*IssueDiscussion) ModifyNote ¶
func (d *IssueDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
ModifyNote updates an existing note in a discussion thread.
func (*IssueDiscussion) NewDiscussion ¶
func (d *IssueDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
NewDiscussion creates a new discussion thread on the issue.
type Manager ¶
type Manager interface { // List returns all discussions for a specific resource. List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error) // NewDiscussion creates a new discussion thread on a resource. NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error) // AddNote adds a new note to an existing discussion thread. AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error) // ModifyNote updates an existing note in a discussion thread. ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error) // DeleteNote removes a note from a discussion thread. DeleteNote(ctx context.Context, discussionID string, noteID int) error }
Manager is an interface that defines common methods for managing discussions across different GitLab resources (issues, merge requests, epics, snippets, commits). This interface allows for consistent handling of discussions regardless of the resource type.
type MergeRequestDiscussion ¶
type MergeRequestDiscussion struct {
// contains filtered or unexported fields
}
MergeRequestDiscussion provides methods for managing discussions on GitLab merge requests.
func NewMergeRequestDiscussion ¶
func NewMergeRequestDiscussion(client *gitlab.Client, projectID mcpargs.ID, mergeRequestIID int) (*MergeRequestDiscussion, error)
NewMergeRequestDiscussion creates a new instance for managing discussions on a specific GitLab merge request.
func (*MergeRequestDiscussion) AddNote ¶
func (d *MergeRequestDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
AddNote adds a new note to an existing discussion thread.
func (*MergeRequestDiscussion) DeleteNote ¶
func (d *MergeRequestDiscussion) DeleteNote(ctx context.Context, discussionID string, noteID int) error
DeleteNote removes a note from a discussion thread.
func (*MergeRequestDiscussion) List ¶
func (d *MergeRequestDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
List returns all discussions for the merge request.
func (*MergeRequestDiscussion) ModifyNote ¶
func (d *MergeRequestDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
ModifyNote updates an existing note in a discussion thread.
func (*MergeRequestDiscussion) NewDiscussion ¶
func (d *MergeRequestDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
NewDiscussion creates a new discussion thread on the merge request.
func (*MergeRequestDiscussion) NewPositionDiscussion ¶
func (d *MergeRequestDiscussion) NewPositionDiscussion(ctx context.Context, body string, pos *gitlab.PositionOptions, commitID string) (*gitlab.Discussion, error)
NewPositionDiscussion creates a new discussion on a specific position in the merge request diff.
func (*MergeRequestDiscussion) ResolveDiscussion ¶
func (d *MergeRequestDiscussion) ResolveDiscussion(ctx context.Context, discussionID string, resolved bool) (*gitlab.Discussion, error)
ResolveDiscussion resolves or unresolves a thread of discussion in a merge request.
type PositionedManager ¶
type PositionedManager interface { Manager NewPositionDiscussion(ctx context.Context, body string, position *gitlab.PositionOptions, commitID string) (*gitlab.Discussion, error) }
PositionedManager extends Manager with methods for working with discussion threads that have a specific position reference, such as diff discussions on merge requests.
type ResolvableManager ¶
type ResolvableManager interface { Manager // ResolveDiscussion resolves or unresolves a thread of discussion. ResolveDiscussion(ctx context.Context, discussionID string, resolved bool) (*gitlab.Discussion, error) }
ResolvableManager extends Manager with methods for resolving discussions, which is only applicable to merge request discussions.
type SnippetDiscussion ¶
type SnippetDiscussion struct {
// contains filtered or unexported fields
}
SnippetDiscussion provides methods for managing discussions on GitLab snippets.
func NewSnippetDiscussion ¶
func NewSnippetDiscussion(client *gitlab.Client, projectID mcpargs.ID, snippetID int) (*SnippetDiscussion, error)
NewSnippetDiscussion creates a new instance for managing discussions on a specific GitLab snippet.
func (*SnippetDiscussion) AddNote ¶
func (d *SnippetDiscussion) AddNote(ctx context.Context, discussionID string, body string) (*gitlab.Note, error)
AddNote adds a new note to an existing discussion thread.
func (*SnippetDiscussion) DeleteNote ¶
DeleteNote removes a note from a discussion thread.
func (*SnippetDiscussion) List ¶
func (d *SnippetDiscussion) List(ctx context.Context, confidential bool) ([]*gitlab.Discussion, error)
List returns all discussions for the snippet.
func (*SnippetDiscussion) ModifyNote ¶
func (d *SnippetDiscussion) ModifyNote(ctx context.Context, discussionID string, noteID int, body string) (*gitlab.Note, error)
ModifyNote updates an existing note in a discussion thread.
func (*SnippetDiscussion) NewDiscussion ¶
func (d *SnippetDiscussion) NewDiscussion(ctx context.Context, body string) (*gitlab.Discussion, error)
NewDiscussion creates a new discussion thread on the snippet.