Files
gerald/repo/pg/feedback.go
aspasskiy 16a03ca5a1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
upvote and feedback list
2024-04-22 19:39:41 +03:00

66 lines
1.2 KiB
Go

package pg
import (
"gerald/internal/models"
"gorm.io/gorm"
)
type Feedback struct {
db *gorm.DB
}
func NewFeedback(db *gorm.DB) *Feedback {
return &Feedback{
db: db,
}
}
func (t *Feedback) Create(ticket *models.Feedback) error {
return t.db.Create(ticket).Error
}
func (t *Feedback) GetBySessionID(sessionID string) ([]*models.Feedback, error) {
var tickets []*models.Feedback
res := t.db.
Where("session_uuid = ?", sessionID).
Find(&tickets)
if res.Error != nil {
return nil, res.Error
}
return tickets, nil
}
func (t *Feedback) GetByUUID(uuid string) (*models.Feedback, error) {
var ticket models.Feedback
res := t.db.
Preload("Upvote").
Where("uuid = ?", uuid).
First(&ticket)
if res.Error != nil {
return nil, res.Error
}
return &ticket, nil
}
func (t *Feedback) GetByProjectID(projectID models.FeedbackType) ([]*models.Feedback, error) {
var tickets []*models.Feedback
res := t.db.
Where("project_id = ?", projectID).
Where("type = ?", models.FeedbackTypeFeature).
Find(&tickets)
if res.Error != nil {
return nil, res.Error
}
return tickets, nil
}
func (t *Feedback) CreateUpvote(upvote *models.Upvote) error {
return t.db.Create(upvote).Error
}