···
···
func GetFollowerFollowingCount(e Execer, did string) (int, int, error) {
followers, following := 0, 0
COUNT(CASE WHEN subject_did = ? THEN 1 END) AS followers,
COUNT(CASE WHEN user_did = ? THEN 1 END) AS following
FROM follows;`, did, did).Scan(&followers, &following)
···
return followers, following, nil
71
+
func GetFollows(e Execer, limit int, filters ...filter) ([]Follow, error) {
72
+
var follows []Follow
74
+
var conditions []string
76
+
for _, filter := range filters {
77
+
conditions = append(conditions, filter.Condition())
78
+
args = append(args, filter.Arg()...)
82
+
if conditions != nil {
83
+
whereClause = " where " + strings.Join(conditions, " and ")
87
+
limitClause = " limit ?"
88
+
args = append(args, limit)
91
+
query := fmt.Sprintf(
92
+
`select user_did, subject_did, followed_at, rkey
95
+
order by followed_at desc
97
+
`, whereClause, limitClause)
99
+
rows, err := e.Query(query, args...)
105
+
var followedAt string
108
+
&follow.SubjectDid,
115
+
followedAtTime, err := time.Parse(time.RFC3339, followedAt)
117
+
log.Println("unable to determine followed at time")
118
+
follow.FollowedAt = time.Now()
120
+
follow.FollowedAt = followedAtTime
122
+
follows = append(follows, follow)
124
+
return follows, nil
127
+
func GetFollowers(e Execer, did string) ([]Follow, error) {
128
+
return GetFollows(e, 0, FilterEq("subject_did", did))
131
+
func GetFollowing(e Execer, did string) ([]Follow, error) {
132
+
return GetFollows(e, 0, FilterEq("user_did", did))
···
100
-
func GetAllFollows(e Execer, limit int) ([]Follow, error) {
101
-
var follows []Follow
103
-
rows, err := e.Query(`
104
-
select user_did, subject_did, followed_at, rkey
106
-
order by followed_at desc
116
-
var followedAt string
117
-
if err := rows.Scan(&follow.UserDid, &follow.SubjectDid, &followedAt, &follow.Rkey); err != nil {
121
-
followedAtTime, err := time.Parse(time.RFC3339, followedAt)
123
-
log.Println("unable to determine followed at time")
124
-
follow.FollowedAt = time.Now()
126
-
follow.FollowedAt = followedAtTime
129
-
follows = append(follows, follow)
132
-
if err := rows.Err(); err != nil {
136
-
return follows, nil