🐛 Fix list posts have no reply count
This commit is contained in:
parent
fe8c5d2821
commit
890148d580
@ -3,6 +3,8 @@ package services
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.solsynth.dev/hydrogen/interactive/pkg/database"
|
"git.solsynth.dev/hydrogen/interactive/pkg/database"
|
||||||
"git.solsynth.dev/hydrogen/interactive/pkg/models"
|
"git.solsynth.dev/hydrogen/interactive/pkg/models"
|
||||||
"git.solsynth.dev/hydrogen/passport/pkg/grpc/proto"
|
"git.solsynth.dev/hydrogen/passport/pkg/grpc/proto"
|
||||||
@ -10,7 +12,6 @@ import (
|
|||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func FilterPostWithCategory(tx *gorm.DB, alias string) *gorm.DB {
|
func FilterPostWithCategory(tx *gorm.DB, alias string) *gorm.DB {
|
||||||
@ -197,6 +198,36 @@ func ListPost(tx *gorm.DB, take int, offset int, noReact ...bool) ([]*models.Pos
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(noReact) <= 0 || !noReact[0] {
|
||||||
|
var replies []struct {
|
||||||
|
PostID uint
|
||||||
|
Count int64
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := database.C.Model(&models.Post{}).
|
||||||
|
Select("id as post_id, COUNT(id) as count").
|
||||||
|
Where("reply_id IN (?)", idx).
|
||||||
|
Group("post_id").
|
||||||
|
Scan(&replies).Error; err != nil {
|
||||||
|
return items, err
|
||||||
|
}
|
||||||
|
|
||||||
|
itemMap := lo.SliceToMap(items, func(item *models.Post) (uint, *models.Post) {
|
||||||
|
return item.ID, item
|
||||||
|
})
|
||||||
|
|
||||||
|
list := map[uint]int64{}
|
||||||
|
for _, info := range replies {
|
||||||
|
list[info.PostID] = info.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range list {
|
||||||
|
if post, ok := itemMap[k]; ok {
|
||||||
|
post.ReplyCount = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return items, nil
|
return items, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user