From e81b33d5e0b991d250259e7a3700c4c656b656f9 Mon Sep 17 00:00:00 2001 From: dusk Date: Tue, 12 Aug 2025 18:02:21 +0300 Subject: [PATCH] appview: db: issues: add method for getting any issues a repo might have Change-Id: osynrqqtylxwnomxuxmlktnsmztzwzrs Signed-off-by: dusk --- appview/db/issues.go | 66 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/appview/db/issues.go b/appview/db/issues.go index 5d28656..f3033ea 100644 --- a/appview/db/issues.go +++ b/appview/db/issues.go @@ -142,9 +142,9 @@ func GetIssues(e Execer, repoAt syntax.ATURI, isOpen bool, page pagination.Page) 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 { @@ -178,6 +178,68 @@ func GetIssues(e Execer, repoAt syntax.ATURI, isOpen bool, page pagination.Page) 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) { -- 2.43.0