···51 return &star, nil
52}
53000000000000000000000000000000054// Remove a star
55func DeleteStar(e Execer, did string, subjectAt syntax.ATURI) error {
56 _, err := e.Exec(`delete from stars where did = ? and subject_at = ?`, did, subjectAt)
···51 return &star, nil
52}
5354+func GetStars(e Execer, subjectAt syntax.ATURI) ([]models.Star, error) {
55+ query := `
56+ select did, subject_at, created, rkey
57+ from stars
58+ where subject_at = ?
59+ order by created desc
60+ `
61+ rows, err := e.Query(query, subjectAt)
62+ if err != nil {
63+ return nil, err
64+ }
65+ defer rows.Close()
66+67+ var stars []models.Star
68+ for rows.Next() {
69+ var star models.Star
70+ var created string
71+ if err := rows.Scan(&star.Did, &star.RepoAt, &created, &star.Rkey); err != nil {
72+ return nil, err
73+ }
74+75+ star.Created = time.Now()
76+ if t, err := time.Parse(time.RFC3339, created); err == nil {
77+ star.Created = t
78+ }
79+ stars = append(stars, star)
80+ }
81+82+ return stars, rows.Err()
83+}
84+85// Remove a star
86func DeleteStar(e Execer, did string, subjectAt syntax.ATURI) error {
87 _, err := e.Exec(`delete from stars where did = ? and subject_at = ?`, did, subjectAt)