From 778ade8b6cece2fc46688c76dce1e0c5704f311b Mon Sep 17 00:00:00 2001 From: nyne Date: Thu, 26 Jun 2025 21:12:53 +0800 Subject: [PATCH] Add comments count to Resource model and update logic for comment creation and deletion --- frontend/src/network/models.ts | 1 + frontend/src/pages/resource_details_page.tsx | 7 +++++++ server/dao/comment.go | 9 +++++++++ server/model/resource.go | 3 +++ 4 files changed, 20 insertions(+) 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, } }