diff --git a/frontend/src/network/models.ts b/frontend/src/network/models.ts
index eaab55d..250c738 100644
--- a/frontend/src/network/models.ts
+++ b/frontend/src/network/models.ts
@@ -81,6 +81,7 @@ export interface ResourceDetails {
author: User;
views: number;
downloads: number;
+ comments: number;
related: Resource[];
}
diff --git a/frontend/src/pages/resource_details_page.tsx b/frontend/src/pages/resource_details_page.tsx
index 9b38e63..2a02af5 100644
--- a/frontend/src/pages/resource_details_page.tsx
+++ b/frontend/src/pages/resource_details_page.tsx
@@ -245,6 +245,13 @@ export default function ResourcePage() {
/>
{t("Comments")}
+ {resource.comments ? (
+
+ {resource.comments}
+
+ ) : null}
diff --git a/server/dao/comment.go b/server/dao/comment.go
index fc725fc..4277353 100644
--- a/server/dao/comment.go
+++ b/server/dao/comment.go
@@ -35,6 +35,12 @@ func CreateComment(content string, userID uint, resourceID uint, imageIDs []uint
if err := tx.Model(&model.User{}).Where("id = ?", userID).Update("comments_count", gorm.Expr("comments_count + 1")).Error; err != nil {
return err
}
+
+ // Update resource comments count
+ if err := tx.Model(&model.Resource{}).Where("id = ?", resourceID).Update("comments", gorm.Expr("comments + 1")).Error; err != nil {
+ return err
+ }
+
return nil
})
if err != nil {
@@ -166,6 +172,9 @@ func DeleteCommentByID(commentID uint) error {
if err := tx.Model(&model.User{}).Where("id = ?", comment.UserID).Update("comments_count", gorm.Expr("comments_count - 1")).Error; err != nil {
return err
}
+ if err := tx.Model(&model.Resource{}).Where("id = ?", comment.RefID).Update("comments", gorm.Expr("comments - 1")).Error; err != nil {
+ return err
+ }
if err := tx.
Where("type = ? and ref_id = ?", model.ActivityTypeNewComment, commentID).
Delete(&model.Activity{}).
diff --git a/server/model/resource.go b/server/model/resource.go
index 1cbe708..56346b1 100644
--- a/server/model/resource.go
+++ b/server/model/resource.go
@@ -19,6 +19,7 @@ type Resource struct {
User User
Views uint
Downloads uint
+ Comments uint
}
type Link struct {
@@ -48,6 +49,7 @@ type ResourceDetailView struct {
Author UserView `json:"author"`
Views uint `json:"views"`
Downloads uint `json:"downloads"`
+ Comments uint `json:"comments"`
Related []ResourceView `json:"related"`
}
@@ -100,5 +102,6 @@ func (r *Resource) ToDetailView() ResourceDetailView {
Author: r.User.ToView(),
Views: r.Views,
Downloads: r.Downloads,
+ Comments: r.Comments,
}
}