68 lines
1.6 KiB
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
|
|
}
|