appview: db: issues: add method for getting any issues a repo might have #474

merged
opened by ptr.pet targeting master from ptr.pet/core: repo-feed
Changed files
+64 -2
appview
+64 -2
appview/db/issues.go
···
body,
open,
comment_count
-
from
+
from
numbered_issue
-
where
+
where
row_num between ? and ?`,
repoAt, openValue, page.Offset+1, page.Offset+page.Limit)
if err != nil {
···
return issues, nil
}
+
func GetAnyIssues(e Execer, repoAt syntax.ATURI, count int) ([]Issue, error) {
+
issues := make([]Issue, 0, count)
+
+
rows, err := e.Query(
+
`select
+
i.id,
+
i.owner_did,
+
i.repo_at,
+
i.issue_id,
+
i.created,
+
i.title,
+
i.body,
+
i.open
+
from
+
issues i
+
where
+
i.repo_at = ?
+
order by
+
i.created desc`,
+
repoAt)
+
if err != nil {
+
return nil, err
+
}
+
defer rows.Close()
+
+
for rows.Next() {
+
if len(issues) >= count {
+
break
+
}
+
+
var issue Issue
+
var issueCreatedAt string
+
err := rows.Scan(
+
&issue.ID,
+
&issue.OwnerDid,
+
&issue.RepoAt,
+
&issue.IssueId,
+
&issueCreatedAt,
+
&issue.Title,
+
&issue.Body,
+
&issue.Open,
+
)
+
if err != nil {
+
return nil, err
+
}
+
+
issueCreatedTime, err := time.Parse(time.RFC3339, issueCreatedAt)
+
if err != nil {
+
return nil, err
+
}
+
issue.Created = issueCreatedTime
+
+
issues = append(issues, issue)
+
}
+
+
if err := rows.Err(); err != nil {
+
return nil, err
+
}
+
+
return issues, nil
+
}
+
// timeframe here is directly passed into the sql query filter, and any
// timeframe in the past should be negative; e.g.: "-3 months"
func GetIssuesByOwnerDid(e Execer, ownerDid string, timeframe string) ([]Issue, error) {