Documentation
¶
Overview ¶
Package search provides GitHub search API functionality.
Index ¶
- Constants
- Variables
- type Client
- func (c *Client) SearchIssues(ctx context.Context, qry Query, opts *github.SearchOptions) (*github.IssuesSearchResult, *github.Response, error)
- func (c *Client) SearchIssuesAll(ctx context.Context, qry Query, opts *github.SearchOptions) (Issues, error)
- func (c *Client) SearchOpenPullRequests(ctx context.Context, username string, opts *github.SearchOptions) (*github.IssuesSearchResult, *github.Response, error)
- type Issue
- type Issues
- type Query
- type QueryBuilder
- func (qb *QueryBuilder) Assignee(username string) *QueryBuilder
- func (qb *QueryBuilder) Author(username string) *QueryBuilder
- func (qb *QueryBuilder) Build() Query
- func (qb *QueryBuilder) Involves(username string) *QueryBuilder
- func (qb *QueryBuilder) Is(value string) *QueryBuilder
- func (qb *QueryBuilder) IsIssue() *QueryBuilder
- func (qb *QueryBuilder) IsPR() *QueryBuilder
- func (qb *QueryBuilder) Label(label string) *QueryBuilder
- func (qb *QueryBuilder) Mentions(username string) *QueryBuilder
- func (qb *QueryBuilder) Org(org string) *QueryBuilder
- func (qb *QueryBuilder) Repo(repo string) *QueryBuilder
- func (qb *QueryBuilder) Set(key, value string) *QueryBuilder
- func (qb *QueryBuilder) State(state string) *QueryBuilder
- func (qb *QueryBuilder) StateClosed() *QueryBuilder
- func (qb *QueryBuilder) StateOpen() *QueryBuilder
- func (qb *QueryBuilder) Type(typ string) *QueryBuilder
- func (qb *QueryBuilder) User(username string) *QueryBuilder
Constants ¶
const ( ParamUser = "user" ParamState = "state" ParamIs = "is" ParamOrg = "org" ParamRepo = "repo" ParamType = "type" )
Query parameter names.
const ( ParamStateValueOpen = "open" ParamStateValueClosed = "closed" ParamIsValuePR = "pr" ParamIsValueIssue = "issue" )
Query parameter values.
const ( ParamPerPageValueMax = 100 ParamPerPageValueDefault = 30 )
Pagination constants.
Variables ¶
var ( ErrIssueIsNotSet = errors.New("issue is not set") ErrUserIsNotSet = errors.New("user is not set") ErrUserLoginIsNotSet = errors.New("user login is not set") ErrIssueCreatedAtIsNotSet = errors.New("issue created at is not set") ErrIssueCreatedAtGetTimeIsNotSet = errors.New("issue created at gettime is not set") )
Issue-related errors.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps the GitHub client for search operations.
func (*Client) SearchIssues ¶
func (c *Client) SearchIssues(ctx context.Context, qry Query, opts *github.SearchOptions) (*github.IssuesSearchResult, *github.Response, error)
SearchIssues is a wrapper for SearchService.Issues().
func (*Client) SearchIssuesAll ¶
func (c *Client) SearchIssuesAll(ctx context.Context, qry Query, opts *github.SearchOptions) (Issues, error)
SearchIssuesAll retrieves all issues matching the query with pagination.
func (*Client) SearchOpenPullRequests ¶
func (c *Client) SearchOpenPullRequests(ctx context.Context, username string, opts *github.SearchOptions) (*github.IssuesSearchResult, *github.Response, error)
SearchOpenPullRequests searches for open pull requests by username.
type Issue ¶
Issue wraps a GitHub issue with helper methods.
func (*Issue) AuthorUserID ¶
AuthorUserID returns the author's user ID.
func (*Issue) AuthorUsername ¶
AuthorUsername returns the author's username.
func (*Issue) CreatedAge ¶
CreatedAge returns the duration since the issue was created.
func (*Issue) CreatedTime ¶
CreatedTime returns the issue creation time.
func (*Issue) MustAuthorUserID ¶
MustAuthorUserID returns the author user ID or -1 on error. Unlike typical Go "Must" functions, this does not panic. Instead, it returns -1 when the author is nil or the user ID cannot be retrieved. Use AuthorUserID() if you need to distinguish between errors and missing values.
func (*Issue) MustAuthorUsername ¶
MustAuthorUsername returns the author username or empty string on error. Unlike typical Go "Must" functions, this does not panic. Instead, it returns an empty string when the author is nil or the username cannot be retrieved. Use AuthorUsername() if you need to distinguish between errors and empty values.
type Issues ¶
Issues is a slice of GitHub issues.
func (Issues) RepositoryIssueCounts ¶
RepositoryIssueCounts returns a map of repository URLs to issue counts.
func (Issues) TableRepos ¶
TableRepos creates a table of repositories with issue counts.
type QueryBuilder ¶ added in v0.5.0
type QueryBuilder struct {
// contains filtered or unexported fields
}
QueryBuilder provides a fluent interface for constructing search queries. It wraps the Query map type, providing type-safe methods for common qualifiers while preserving flexibility through the Set() method for any qualifier.
func NewQuery ¶ added in v0.5.0
func NewQuery() *QueryBuilder
NewQuery creates a new QueryBuilder for constructing search queries.
func (*QueryBuilder) Assignee ¶ added in v0.5.0
func (qb *QueryBuilder) Assignee(username string) *QueryBuilder
Assignee filters by assigned user.
func (*QueryBuilder) Author ¶ added in v0.5.0
func (qb *QueryBuilder) Author(username string) *QueryBuilder
Author filters by item creator.
func (*QueryBuilder) Build ¶ added in v0.5.0
func (qb *QueryBuilder) Build() Query
Build returns the constructed Query map.
func (*QueryBuilder) Involves ¶ added in v0.5.0
func (qb *QueryBuilder) Involves(username string) *QueryBuilder
Involves filters by user involvement (author, assignee, mentions, or commenter).
func (*QueryBuilder) Is ¶ added in v0.5.0
func (qb *QueryBuilder) Is(value string) *QueryBuilder
Is filters by type or state (pr, issue, open, closed, merged, etc.).
func (*QueryBuilder) IsIssue ¶ added in v0.5.0
func (qb *QueryBuilder) IsIssue() *QueryBuilder
IsIssue filters for issues only.
func (*QueryBuilder) IsPR ¶ added in v0.5.0
func (qb *QueryBuilder) IsPR() *QueryBuilder
IsPR filters for pull requests only.
func (*QueryBuilder) Label ¶ added in v0.5.0
func (qb *QueryBuilder) Label(label string) *QueryBuilder
Label filters by label.
func (*QueryBuilder) Mentions ¶ added in v0.5.0
func (qb *QueryBuilder) Mentions(username string) *QueryBuilder
Mentions filters by mentioned user.
func (*QueryBuilder) Org ¶ added in v0.5.0
func (qb *QueryBuilder) Org(org string) *QueryBuilder
Org filters by organization.
func (*QueryBuilder) Repo ¶ added in v0.5.0
func (qb *QueryBuilder) Repo(repo string) *QueryBuilder
Repo filters by specific repository (owner/repo format).
func (*QueryBuilder) Set ¶ added in v0.5.0
func (qb *QueryBuilder) Set(key, value string) *QueryBuilder
Set adds any key-value pair to the query. Use this for qualifiers not covered by the typed methods, or for new GitHub search qualifiers.
func (*QueryBuilder) State ¶ added in v0.5.0
func (qb *QueryBuilder) State(state string) *QueryBuilder
State filters by issue/PR state (open, closed).
func (*QueryBuilder) StateClosed ¶ added in v0.5.0
func (qb *QueryBuilder) StateClosed() *QueryBuilder
StateClosed filters for closed issues/PRs.
func (*QueryBuilder) StateOpen ¶ added in v0.5.0
func (qb *QueryBuilder) StateOpen() *QueryBuilder
StateOpen filters for open issues/PRs.
func (*QueryBuilder) Type ¶ added in v0.5.0
func (qb *QueryBuilder) Type(typ string) *QueryBuilder
Type filters by type (pr, issue).
func (*QueryBuilder) User ¶ added in v0.5.0
func (qb *QueryBuilder) User(username string) *QueryBuilder
User filters by repository owner username.