pejhancctv/repositories/Comment.go

68 lines
1.6 KiB
Go

package repositories
import (
"app/models"
"gorm.io/gorm"
)
type Comment interface {
Create(c *models.Comment) error
GetUserComments(id uint) ([]models.Comment, error)
GetProductComments(id uint) ([]models.Comment, error)
UpdateContent(id uint, content string) error
Delete(id uint) error
}
type Comment_repository struct {
DB *gorm.DB
}
func newCommentRepository(db *gorm.DB) Comment {
return &Comment_repository{DB: db}
}
func (r *Comment_repository) Create(comment *models.Comment) error {
if err := r.DB.Create(&comment).Error; err != nil {
return err
}
return nil
}
func (r *Comment_repository) GetUserComments(id uint) ([]models.Comment, error) {
var comments []models.Comment
if err := r.DB.Where("is_removed = ?", false).Where("user_id = ?", id).Find(&comments).Error; err != nil {
return nil, err
}
return comments, nil
}
func (r *Comment_repository) GetProductComments(id uint) ([]models.Comment, error) {
var comments []models.Comment
if err := r.DB.Where("is_removed = ?", false).Where("product_id = ?", id).Find(&comments).Error; err != nil {
return nil, err
}
return comments, nil
}
func (r *Comment_repository) UpdateContent(id uint, content string) error {
var comments models.Comment
if err := r.DB.Where("is_removed = ? ", false).Where("comment_id = ?", id).Model(comments).Update("content", content).Error; err != nil {
return err
}
return nil
}
func (r *Comment_repository) Delete(id uint) error {
var comments models.Comment
if err := r.DB.Where("comment_id = ?", id).Model(&comments).Update("is_removed", true).Error; err != nil {
return err
}
return nil
}