Add Issue query
This commit is contained in:
parent
9ad41cf31f
commit
d658a8f407
1 changed files with 103 additions and 0 deletions
103
api/queries.go
103
api/queries.go
|
|
@ -2,6 +2,7 @@ package api
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PullRequestsPayload struct {
|
||||
|
|
@ -22,6 +23,108 @@ type Repo interface {
|
|||
RepoOwner() string
|
||||
}
|
||||
|
||||
type IssuesPayload struct {
|
||||
Assigned []Issue
|
||||
Mentioned []Issue
|
||||
Recent []Issue
|
||||
}
|
||||
|
||||
type Issue struct {
|
||||
Number int
|
||||
Title string
|
||||
}
|
||||
|
||||
func Issues(client *Client, ghRepo Repo, currentUsername string) (*IssuesPayload, error) {
|
||||
type issues struct {
|
||||
Issues struct {
|
||||
Edges []struct {
|
||||
Node Issue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type response struct {
|
||||
Assigned issues
|
||||
Mentioned issues
|
||||
Recent issues
|
||||
}
|
||||
|
||||
query := `
|
||||
fragment issue on Issue {
|
||||
number
|
||||
title
|
||||
}
|
||||
query($owner: String!, $repo: String!, $since: DateTime!, $viewer: String!, $per_page: Int = 10) {
|
||||
assigned: repository(owner: $owner, name: $repo) {
|
||||
issues(filterBy: {assignee: $viewer}, first: $per_page) {
|
||||
edges {
|
||||
node {
|
||||
...issue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mentioned: repository(owner: $owner, name: $repo) {
|
||||
issues(filterBy: {mentioned: $viewer}, first: $per_page) {
|
||||
edges {
|
||||
node {
|
||||
...issue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
recent: repository(owner: $owner, name: $repo) {
|
||||
issues(filterBy: {since: $since, orderBy: {field: CREATED_AT, direction: DESC}}, first: $per_page) {
|
||||
edges {
|
||||
node {
|
||||
...issue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
owner := ghRepo.RepoOwner()
|
||||
repo := ghRepo.RepoName()
|
||||
since := time.Now().UTC().Add(time.Hour * -24).Format("2006-01-02T15:04:05-0700")
|
||||
variables := map[string]interface{}{
|
||||
"owner": owner,
|
||||
"repo": repo,
|
||||
"viewer": currentUsername,
|
||||
"since": since,
|
||||
}
|
||||
|
||||
var resp response
|
||||
err := client.GraphQL(query, variables, &resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var assigned []Issue
|
||||
for _, edge := range resp.Assigned.Issues.Edges {
|
||||
assigned = append(assigned, edge.Node)
|
||||
}
|
||||
|
||||
var mentioned []Issue
|
||||
for _, edge := range resp.Mentioned.Issues.Edges {
|
||||
mentioned = append(mentioned, edge.Node)
|
||||
}
|
||||
|
||||
var recent []Issue
|
||||
for _, edge := range resp.Recent.Issues.Edges {
|
||||
recent = append(recent, edge.Node)
|
||||
}
|
||||
|
||||
payload := IssuesPayload{
|
||||
assigned,
|
||||
mentioned,
|
||||
recent,
|
||||
}
|
||||
|
||||
return &payload, nil
|
||||
}
|
||||
|
||||
func PullRequests(client *Client, ghRepo Repo, currentBranch, currentUsername string) (*PullRequestsPayload, error) {
|
||||
type edges struct {
|
||||
Edges []struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue