···
"github.com/bluesky-social/indigo/atproto/syntax"
···
98
+
func GetStars(e Execer, limit int, filters ...filter) ([]Star, error) {
99
+
var conditions []string
101
+
for _, filter := range filters {
102
+
conditions = append(conditions, filter.Condition())
103
+
args = append(args, filter.Arg()...)
107
+
if conditions != nil {
108
+
whereClause = " where " + strings.Join(conditions, " and ")
113
+
limitClause = fmt.Sprintf(" limit %d", limit)
116
+
repoQuery := fmt.Sprintf(
117
+
`select starred_by_did, repo_at, created, rkey
120
+
order by created desc
125
+
rows, err := e.Query(repoQuery, args...)
130
+
starMap := make(map[string][]Star)
134
+
err := rows.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
139
+
star.Created = time.Now()
140
+
if t, err := time.Parse(time.RFC3339, created); err == nil {
144
+
repoAt := string(star.RepoAt)
145
+
starMap[repoAt] = append(starMap[repoAt], star)
148
+
// populate *Repo in each star
149
+
args = make([]any, len(starMap))
151
+
for r := range starMap {
156
+
if len(args) == 0 {
160
+
repos, err := GetRepos(e, 0, FilterIn("at_uri", args))
165
+
for _, r := range repos {
166
+
if stars, ok := starMap[string(r.RepoAt())]; ok {
167
+
for i := range stars {
174
+
for _, s := range starMap {
175
+
stars = append(stars, s...)
func GetAllStars(e Execer, limit int) ([]Star, error) {