diff --git a/server/model/comment.go b/server/model/comment.go index e44d844..fc9ac76 100644 --- a/server/model/comment.go +++ b/server/model/comment.go @@ -25,13 +25,14 @@ const ( ) type CommentView struct { - ID uint `json:"id"` - Content string `json:"content"` - CreatedAt time.Time `json:"created_at"` - User UserView `json:"user"` - Images []ImageView `json:"images"` - ReplyCount uint `json:"reply_count"` - ContentTruncated bool `json:"content_truncated"` + ID uint `json:"id"` + Content string `json:"content"` + CreatedAt time.Time `json:"created_at"` + User UserView `json:"user"` + Images []ImageView `json:"images"` + ReplyCount uint `json:"reply_count"` + ContentTruncated bool `json:"content_truncated"` + Replies []CommentView `json:"replies,omitempty"` } func (c *Comment) ToView() *CommentView { diff --git a/server/service/comment.go b/server/service/comment.go index 994465e..86b4150 100644 --- a/server/service/comment.go +++ b/server/service/comment.go @@ -122,9 +122,18 @@ func ListResourceComments(resourceID uint, page int) ([]model.CommentView, int, res := make([]model.CommentView, 0, len(comments)) for _, c := range comments { v := *c.ToView() - var truncated bool - v.Content, truncated = restrictCommentLength(v.Content) - v.ContentTruncated = truncated + v.Content, v.ContentTruncated = restrictCommentLength(v.Content) + replies, _, err := dao.GetCommentReplies(c.ID, 1, 3) + if err != nil { + log.Error("Error getting replies for comment:", err) + return nil, 0, model.NewInternalServerError("Error getting replies for comment") + } + v.Replies = make([]model.CommentView, 0, len(replies)) + for _, r := range replies { + rv := *r.ToView() + rv.Content, rv.ContentTruncated = restrictCommentLength(rv.Content) + v.Replies = append(v.Replies, rv) + } res = append(res, v) } return res, totalPages, nil