···
"github.com/bluesky-social/indigo/atproto/syntax"
···
func GetAllStars(e Execer, limit int) ([]Star, error) {
···
"github.com/bluesky-social/indigo/atproto/syntax"
···
+
func GetStars(e Execer, limit int, filters ...filter) ([]Star, error) {
+
var conditions []string
+
for _, filter := range filters {
+
conditions = append(conditions, filter.Condition())
+
args = append(args, filter.Arg()...)
+
whereClause = " where " + strings.Join(conditions, " and ")
+
limitClause = fmt.Sprintf(" limit %d", limit)
+
repoQuery := fmt.Sprintf(
+
`select starred_by_did, repo_at, created, rkey
+
rows, err := e.Query(repoQuery, args...)
+
starMap := make(map[string][]Star)
+
err := rows.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
+
star.Created = time.Now()
+
if t, err := time.Parse(time.RFC3339, created); err == nil {
+
repoAt := string(star.RepoAt)
+
starMap[repoAt] = append(starMap[repoAt], star)
+
// populate *Repo in each star
+
args = make([]any, len(starMap))
+
for r := range starMap {
+
repos, err := GetRepos(e, 0, FilterIn("at_uri", args))
+
for _, r := range repos {
+
if stars, ok := starMap[string(r.RepoAt())]; ok {
+
for _, s := range starMap {
+
stars = append(stars, s...)
func GetAllStars(e Execer, limit int) ([]Star, error) {