user details page

This commit is contained in:
2025-05-14 16:48:52 +08:00
parent cbac071dd2
commit 3b7d52a7a8
20 changed files with 450 additions and 64 deletions

View File

@@ -1,8 +1,9 @@
package dao
import (
"gorm.io/gorm"
"nysoure/server/model"
"gorm.io/gorm"
)
func CreateComment(content string, userID uint, resourceID uint) (model.Comment, error) {
@@ -43,3 +44,21 @@ func GetCommentByResourceID(resourceID uint, page, pageSize int) ([]model.Commen
return comments, totalPages, nil
}
func GetCommentsWithUser(username string, page, pageSize int) ([]model.Comment, int, error) {
var user model.User
if err := db.Where("username = ?", username).First(&user).Error; err != nil {
return nil, 0, err
}
var comments []model.Comment
var total int64
if err := db.Model(&model.Comment{}).Where("user_id = ?", user.ID).Count(&total).Error; err != nil {
return nil, 0, err
}
if err := db.Where("user_id = ?", user.ID).Offset((page - 1) * pageSize).Limit(pageSize).Preload("User").Preload("Resource").Order("created_at DESC").Find(&comments).Error; err != nil {
return nil, 0, err
}
totalPages := (int(total) + pageSize - 1) / pageSize
return comments, totalPages, nil
}

View File

@@ -171,9 +171,8 @@ func searchWithKeyword(keyword string) ([]model.Resource, error) {
func GetResourceByTag(tagID uint, page int, pageSize int) ([]model.Resource, int, error) {
var tag model.Tag
var total int64
total = db.Model(&model.Tag{}).Where("id = ?", tagID).Association("Resources").Count()
total := db.Model(&model.Tag{}).Where("id = ?", tagID).Association("Resources").Count()
if err := db.Model(&model.Tag{}).Where("id = ?", tagID).Preload("Resources", func(tx *gorm.DB) *gorm.DB {
return tx.Offset((page - 1) * pageSize).Limit(pageSize).Preload("Tags").Preload("User").Preload("Images").Order("created_at DESC")
@@ -210,3 +209,27 @@ func AddResourceDownloadCount(id uint) error {
}
return nil
}
func GetResourcesByUsername(username string, page, pageSize int) ([]model.Resource, int, error) {
var user model.User
if err := db.Where("username = ?", username).First(&user).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, 0, model.NewNotFoundError("User not found")
}
return nil, 0, err
}
var resources []model.Resource
var total int64
if err := db.Model(&model.Resource{}).Where("user_id = ?", user.ID).Count(&total).Error; err != nil {
return nil, 0, err
}
if err := db.Model(&model.Resource{}).Where("user_id = ?", user.ID).Offset((page - 1) * pageSize).Limit(pageSize).Preload("User").Preload("Images").Preload("Tags").Order("created_at DESC").Find(&resources).Error; err != nil {
return nil, 0, err
}
totalPages := (total + int64(pageSize) - 1) / int64(pageSize)
return resources, int(totalPages), nil
}