sqlx: optmize get index trends info data logic

r/paopao-ce-plus
Michael Li 1 year ago
parent 93a9e2710e
commit 42061ab3ae
No known key found for this signature in database

@ -97,8 +97,8 @@ const (
_ShipIndex_IndexCountBySelf = `SELECT count(*) FROM @post WHERE is_del=0 AND (visibility=90 OR (visibility=0 AND user_id=?) OR (visibility=50 AND user_id IN (?)))`
_SimpleIndex_Index = `SELECT * FROM @post WHERE visibility=90 ORDER BY is_top DESC, latest_replied_on DESC LIMIT ? OFFSET ?`
_SimpleIndex_IndexCount = `SELECT count(*) FROM @post WHERE visibility=90`
_TrendsManager_CountIndexTrends = `SELECT count(*) FROM @contact c JOIN @user u ON c.friend_id=u.id JOIN @user_metric m ON c.friend_id=m.user_id WHERE c.user_id=? AND c.is_del=0 AND u.is_del=0 AND m.is_del=0 AND m.tweets_count>0`
_TrendsManager_GetIndexTrends = `SELECT u.username username, u.nickname nickname, u.avatar avatar FROM @contact c JOIN @user u ON c.friend_id=u.id JOIN @user_metric m ON c.friend_id=m.user_id WHERE c.user_id=? AND c.status=2 AND c.is_del=0 AND u.is_del=0 AND m.is_del=0 AND m.tweets_count>0 LIMIT ? OFFSET ?`
_TrendsManager_CountIndexTrends = `SELECT count(*) FROM @user_relation r JOIN @user u ON r.he_uid=u.id JOIN @user_metric m ON r.he_uid=m.user_id WHERE r.user_id=? AND m.is_del=0 AND m.tweets_count>0`
_TrendsManager_GetIndexTrends = `SELECT u.username username, u.nickname nickname, u.avatar avatar FROM @user_relation r JOIN @user u ON r.he_uid=u.id JOIN @user_metric m ON r.he_uid=m.user_id WHERE r.user_id=? AND m.is_del=0 AND m.tweets_count>0 ORDER BY r.style ASC LIMIT ? OFFSET ?`
_Tweet_CountFollowingTweets = `SELECT count(*) FROM @post WHERE user_id=? AND is_del=0`
_Tweet_CountFollowingTweetsFollow = `SELECT count(*) FROM @post WHERE (user_id=? OR (visibility>=60 AND user_id IN(?))) AND is_del=0`
_Tweet_CountFollowingTweetsFriend = `SELECT count(*) FROM @post WHERE (user_id=? OR (visibility>=50 AND user_id IN(?))) AND is_del=0`

@ -18,7 +18,9 @@ type trendsSrvA struct {
func (s *trendsSrvA) GetIndexTrends(userId int64, limit int, offset int) (res []*cs.TrendsItem, total int64, err error) {
if err = s.q.CountIndexTrends.Get(&total, userId); err == nil && total > 0 {
err = s.q.GetIndexTrends.Select(&res, userId, limit, offset)
if err = s.q.GetIndexTrends.Select(&res, userId, limit, offset); err == nil {
res = cs.DistinctTrends(res)
}
}
return
}

@ -243,30 +243,26 @@ SELECT count(*) FROM @following WHERE follow_id=? AND is_del=0;
SELECT u.username username,
u.nickname nickname,
u.avatar avatar
FROM @contact c
FROM @user_relation r
JOIN @user u
ON c.friend_id=u.id
ON r.he_uid=u.id
JOIN @user_metric m
ON c.friend_id=m.user_id
WHERE c.user_id=?
AND c.status=2
AND c.is_del=0
AND u.is_del=0
ON r.he_uid=m.user_id
WHERE r.user_id=?
AND m.is_del=0
AND m.tweets_count>0
ORDER BY r.style ASC
LIMIT ? OFFSET ?;
-- name: count_index_trends@trends_manager
-- prepare: stmt
SELECT count(*)
FROM @contact c
FROM @user_relation r
JOIN @user u
ON c.friend_id=u.id
ON r.he_uid=u.id
JOIN @user_metric m
ON c.friend_id=m.user_id
WHERE c.user_id=?
AND c.is_del=0
AND u.is_del=0
ON r.he_uid=m.user_id
WHERE r.user_id=?
AND m.is_del=0
AND m.tweets_count>0;

Loading…
Cancel
Save