appview: db: pulls: add method for getting any pulls on a repo #475

merged
opened by ptr.pet targeting master from ptr.pet/core: repo-feed
Changed files
+54
appview
+54
appview/db/pulls.go
···
return &pull, nil
}
+
func GetAnyPulls(e Execer, repoAt syntax.ATURI, count int) ([]Pull, error) {
+
pulls := make([]Pull, 0, count)
+
+
rows, err := e.Query(`
+
select
+
p.owner_did,
+
p.repo_at,
+
p.pull_id,
+
p.created,
+
p.title,
+
p.state
+
from
+
pulls p
+
where
+
p.repo_at = ?
+
order by
+
p.created desc`,
+
repoAt)
+
if err != nil {
+
return nil, err
+
}
+
defer rows.Close()
+
+
for rows.Next() {
+
var pull Pull
+
var pullCreatedAt string
+
err := rows.Scan(
+
&pull.OwnerDid,
+
&pull.RepoAt,
+
&pull.PullId,
+
&pullCreatedAt,
+
&pull.Title,
+
&pull.State,
+
)
+
if err != nil {
+
return nil, err
+
}
+
+
pullCreatedTime, err := time.Parse(time.RFC3339, pullCreatedAt)
+
if err != nil {
+
return nil, err
+
}
+
pull.Created = pullCreatedTime
+
+
pulls = append(pulls, pull)
+
}
+
+
if err := rows.Err(); err != nil {
+
return nil, err
+
}
+
+
return pulls, 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 GetPullsByOwnerDid(e Execer, did, timeframe string) ([]Pull, error) {