diff --git a/appview/db/issues.go b/appview/db/issues.go --- a/appview/db/issues.go +++ b/appview/db/issues.go @@ -391,165 +391,8 @@ return issues, nil } -func GetIssuesWithLimit(e Execer, limit int, filters ...filter) ([]Issue, error) { - issues := make([]Issue, 0, limit) - - var conditions []string - var args []any - for _, filter := range filters { - conditions = append(conditions, filter.Condition()) - args = append(args, filter.Arg()...) - } - - whereClause := "" - if conditions != nil { - whereClause = " where " + strings.Join(conditions, " and ") - } - limitClause := "" - if limit != 0 { - limitClause = fmt.Sprintf(" limit %d ", limit) - } - - query := fmt.Sprintf( - `select - i.id, - i.owner_did, - i.repo_at, - i.issue_id, - i.created, - i.title, - i.body, - i.open - from - issues i - %s - order by - i.created desc - %s`, - whereClause, limitClause) - - rows, err := e.Query(query, args...) - if err != nil { - return nil, err - } - defer rows.Close() - - for rows.Next() { - var issue Issue - var issueCreatedAt string - err := rows.Scan( - &issue.Id, - &issue.Did, - &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 -} - func GetIssues(e Execer, filters ...filter) ([]Issue, error) { return GetIssuesPaginated(e, pagination.FirstPage(), filters...) -} - -// 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) { - var issues []Issue - - rows, err := e.Query( - `select - i.id, - i.owner_did, - i.rkey, - i.repo_at, - i.issue_id, - i.created, - i.title, - i.body, - i.open, - r.did, - r.name, - r.knot, - r.rkey, - r.created - from - issues i - join - repos r on i.repo_at = r.at_uri - where - i.owner_did = ? and i.created >= date ('now', ?) - order by - i.created desc`, - ownerDid, timeframe) - if err != nil { - return nil, err - } - defer rows.Close() - - for rows.Next() { - var issue Issue - var issueCreatedAt, repoCreatedAt string - var repo Repo - err := rows.Scan( - &issue.Id, - &issue.Did, - &issue.Rkey, - &issue.RepoAt, - &issue.IssueId, - &issueCreatedAt, - &issue.Title, - &issue.Body, - &issue.Open, - &repo.Did, - &repo.Name, - &repo.Knot, - &repo.Rkey, - &repoCreatedAt, - ) - if err != nil { - return nil, err - } - - issueCreatedTime, err := time.Parse(time.RFC3339, issueCreatedAt) - if err != nil { - return nil, err - } - issue.Created = issueCreatedTime - - repoCreatedTime, err := time.Parse(time.RFC3339, repoCreatedAt) - if err != nil { - return nil, err - } - repo.Created = repoCreatedTime - - issues = append(issues, issue) - } - - if err := rows.Err(); err != nil { - return nil, err - } - - return issues, nil } func GetIssue(e Execer, repoAt syntax.ATURI, issueId int) (*Issue, error) { diff --git a/appview/db/profile.go b/appview/db/profile.go --- a/appview/db/profile.go +++ b/appview/db/profile.go @@ -132,7 +132,11 @@ *items = append(*items, &pull) } - issues, err := GetIssuesByOwnerDid(e, forDid, timeframe) + issues, err := GetIssues( + e, + FilterEq("did", forDid), + FilterGte("created", time.Now().AddDate(0, -TimeframeMonths, 0)), + ) if err != nil { return nil, fmt.Errorf("error getting issues by owner did: %w", err) } diff --git a/appview/repo/feed.go b/appview/repo/feed.go --- a/appview/repo/feed.go +++ b/appview/repo/feed.go @@ -9,6 +9,7 @@ "time" "tangled.sh/tangled.sh/core/appview/db" + "tangled.sh/tangled.sh/core/appview/pagination" "tangled.sh/tangled.sh/core/appview/reporesolver" "github.com/bluesky-social/indigo/atproto/syntax" @@ -23,7 +24,11 @@ return nil, err } - issues, err := db.GetIssuesWithLimit(rp.db, feedLimitPerType, db.FilterEq("repo_at", f.RepoAt())) + issues, err := db.GetIssuesPaginated( + rp.db, + pagination.Page{Limit: feedLimitPerType}, + db.FilterEq("repo_at", f.RepoAt()), + ) if err != nil { return nil, err } diff --git a/appview/pages/templates/user/overview.html b/appview/pages/templates/user/overview.html --- a/appview/pages/templates/user/overview.html +++ b/appview/pages/templates/user/overview.html @@ -115,8 +115,8 @@