feat: IssueQuery builder with fluent filtering API #28
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Implements a comprehensive query builder for GitHub issues with a fluent, chainable API. This closes #20.
Features
State Filtering
whereOpen()- Filter for open issueswhereClosed()- Filter for closed issueswhereState(string $state)- Filter by custom stateLabel Filtering
whereLabel(string $label)- Filter by single labelwhereLabels(array $labels)- Filter by multiple labelsAssignee Filtering
assignedTo(string $username)- Filter by assigneewhereUnassigned()- Filter for unassigned issuesAuthor Filtering
createdBy(string $username)- Filter by issue creatormentioning(string $username)- Filter by mentioned userTime-Based Filtering
createdAfter(string|DateTime $date)- Filter by creation dateupdatedBefore(string|DateTime $date)- Filter by update dateolder(int $days)- Convenience method for stale issuesSorting
orderBy(string $field, string $direction)- Sort by any fieldorderByCreated(string $direction = 'desc')- Sort by creation dateorderByUpdated(string $direction = 'desc')- Sort by update datePagination
perPage(int $perPage)- Set results per pagepage(int $page)- Set page numberTerminal Methods
get(): Collection- Execute and get all resultsfirst(): ?Issue- Get first resultcount(): int- Count resultsexists(): bool- Check if any results existUsage Example
Test Coverage
Architecture Notes
$thisupdatedBefore(not supported by GitHub API)