From f151c38414aac5d027e7c1225745ff3c404ea375 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Thu, 18 Jun 2026 13:31:37 +0100 Subject: [PATCH] appview/db: add query to get most followed users Signed-off-by: oppiliappan --- appview/db/follow.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/appview/db/follow.go b/appview/db/follow.go index 86012dee..e4d44efc 100644 --- a/appview/db/follow.go +++ b/appview/db/follow.go @@ -57,6 +57,33 @@ func DeleteFollowByRkey(e Execer, userDid, rkey string) error { return err } +// GetMostFollowed returns the DIDs with the most followers, most-followed first. +func GetMostFollowed(e Execer, limit int) ([]string, error) { + query := ` + select subject_did, count(*) as followers + from follows + group by subject_did + order by followers desc + limit ?` + + rows, err := e.Query(query, limit) + if err != nil { + return nil, err + } + defer rows.Close() + + var dids []string + for rows.Next() { + var did string + var followers int64 + if err := rows.Scan(&did, &followers); err != nil { + return nil, err + } + dids = append(dids, did) + } + return dids, rows.Err() +} + func GetFollowerFollowingCount(e Execer, did string) (models.FollowStats, error) { var followers, following int64 err := e.QueryRow( -- 2.51.2