···
func AddStar(e Execer, star *models.Star) error {
17
-
query := `insert or ignore into stars (starred_by_did, repo_at, rkey) values (?, ?, ?)`
17
+
query := `insert or ignore into stars (did, subject_at, rkey) values (?, ?, ?)`
···
28
-
func GetStar(e Execer, starredByDid string, repoAt syntax.ATURI) (*models.Star, error) {
28
+
func GetStar(e Execer, did string, subjectAt syntax.ATURI) (*models.Star, error) {
30
-
select starred_by_did, repo_at, created, rkey
30
+
select did, subject_at, created, rkey
32
-
where starred_by_did = ? and repo_at = ?`
33
-
row := e.QueryRow(query, starredByDid, repoAt)
32
+
where did = ? and subject_at = ?`
33
+
row := e.QueryRow(query, did, subjectAt)
37
-
err := row.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
37
+
err := row.Scan(&star.Did, &star.RepoAt, &created, &star.Rkey)
···
54
-
func DeleteStar(e Execer, starredByDid string, repoAt syntax.ATURI) error {
55
-
_, err := e.Exec(`delete from stars where starred_by_did = ? and repo_at = ?`, starredByDid, repoAt)
54
+
func DeleteStar(e Execer, did string, subjectAt syntax.ATURI) error {
55
+
_, err := e.Exec(`delete from stars where did = ? and subject_at = ?`, did, subjectAt)
60
-
func DeleteStarByRkey(e Execer, starredByDid string, rkey string) error {
61
-
_, err := e.Exec(`delete from stars where starred_by_did = ? and rkey = ?`, starredByDid, rkey)
60
+
func DeleteStarByRkey(e Execer, did string, rkey string) error {
61
+
_, err := e.Exec(`delete from stars where did = ? and rkey = ?`, did, rkey)
65
-
func GetStarCount(e Execer, repoAt syntax.ATURI) (int, error) {
65
+
func GetStarCount(e Execer, subjectAt syntax.ATURI) (int, error) {
68
-
`select count(starred_by_did) from stars where repo_at = ?`, repoAt).Scan(&stars)
68
+
`select count(did) from stars where subject_at = ?`, subjectAt).Scan(&stars)
···
94
-
WHERE starred_by_did = ? AND repo_at IN (%s)
94
+
WHERE did = ? AND subject_at IN (%s)
`, strings.Join(placeholders, ","))
rows, err := e.Query(query, args...)
···
121
-
func GetStarStatus(e Execer, userDid string, repoAt syntax.ATURI) bool {
122
-
statuses, err := getStarStatuses(e, userDid, []syntax.ATURI{repoAt})
121
+
func GetStarStatus(e Execer, userDid string, subjectAt syntax.ATURI) bool {
122
+
statuses, err := getStarStatuses(e, userDid, []syntax.ATURI{subjectAt})
126
-
return statuses[repoAt.String()]
126
+
return statuses[subjectAt.String()]
// GetStarStatuses returns a map of repo URIs to star status for a given user
130
-
func GetStarStatuses(e Execer, userDid string, repoAts []syntax.ATURI) (map[string]bool, error) {
131
-
return getStarStatuses(e, userDid, repoAts)
130
+
func GetStarStatuses(e Execer, userDid string, subjectAts []syntax.ATURI) (map[string]bool, error) {
131
+
return getStarStatuses(e, userDid, subjectAts)
133
-
func GetStars(e Execer, limit int, filters ...filter) ([]models.Star, error) {
134
+
// GetRepoStars return a list of stars each holding target repository.
135
+
// If there isn't known repo with starred at-uri, those stars will be ignored.
136
+
func GetRepoStars(e Execer, limit int, filters ...filter) ([]models.RepoStar, error) {
for _, filter := range filters {
···
repoQuery := fmt.Sprintf(
152
-
`select starred_by_did, repo_at, created, rkey
155
+
`select did, subject_at, created, rkey
···
169
-
err := rows.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
172
+
err := rows.Scan(&star.Did, &star.RepoAt, &created, &star.Rkey)
···
203
+
var repoStars []models.RepoStar
for _, r := range repos {
if stars, ok := starMap[string(r.RepoAt())]; ok {
202
-
for i := range stars {
206
+
for _, star := range stars {
207
+
repoStars = append(repoStars, models.RepoStar{
208
-
var stars []models.Star
209
-
for _, s := range starMap {
210
-
stars = append(stars, s...)
213
-
slices.SortFunc(stars, func(a, b models.Star) int {
215
+
slices.SortFunc(repoStars, func(a, b models.RepoStar) int {
if a.Created.After(b.Created) {
···
225
+
return repoStars, nil
func CountStars(e Execer, filters ...filter) (int64, error) {
···
250
-
func GetAllStars(e Execer, limit int) ([]models.Star, error) {
251
-
var stars []models.Star
253
-
rows, err := e.Query(`
265
-
join repos r on s.repo_at = r.at_uri
274
-
var star models.Star
275
-
var repo models.Repo
276
-
var starCreatedAt, repoCreatedAt string
278
-
if err := rows.Scan(
279
-
&star.StarredByDid,
292
-
star.Created, err = time.Parse(time.RFC3339, starCreatedAt)
294
-
star.Created = time.Now()
296
-
repo.Created, err = time.Parse(time.RFC3339, repoCreatedAt)
298
-
repo.Created = time.Now()
302
-
stars = append(stars, star)
305
-
if err := rows.Err(); err != nil {
// GetTopStarredReposLastWeek returns the top 8 most starred repositories from the last week
func GetTopStarredReposLastWeek(e Execer) ([]models.Repo, error) {
// first, get the top repo URIs by star count from the last week
with recent_starred_repos as (
317
-
select distinct repo_at
257
+
select distinct subject_at
where created >= datetime('now', '-7 days')
count(*) as stars_gained_last_week
326
-
join recent_starred_repos rsr on s.repo_at = rsr.repo_at
266
+
join recent_starred_repos rsr on s.subject_at = rsr.subject_at
where s.created >= datetime('now', '-7 days')
268
+
group by s.subject_at
270
+
select rsc.subject_at
from repo_star_counts rsc
order by rsc.stars_gained_last_week desc