upvote and feedback list
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
apiModels "gerald/internal/interfaces/rest/models"
|
||||
"gerald/internal/models"
|
||||
"gerald/repo/pg"
|
||||
@@ -17,9 +18,41 @@ func NewFeedbackService(db *pg.DB) *FeedbackService {
|
||||
}
|
||||
|
||||
func (f *FeedbackService) Create(sessionID string, feedback *apiModels.Feedback) error {
|
||||
return f.db.Ticket.Create(models.NewFeedback(feedback.UserID, sessionID, feedback.Type, feedback.Text, feedback.ProjectID))
|
||||
return f.db.Feedback.Create(
|
||||
models.NewFeedback(
|
||||
feedback.UserID,
|
||||
sessionID,
|
||||
feedback.Type,
|
||||
feedback.Text,
|
||||
models.FeedbackType(feedback.ProjectID)),
|
||||
)
|
||||
}
|
||||
|
||||
func (f *FeedbackService) GetBySessionID(sessionID string) ([]*models.Feedback, error) {
|
||||
return f.db.Ticket.GetBySessionID(sessionID)
|
||||
return f.db.Feedback.GetBySessionID(sessionID)
|
||||
}
|
||||
|
||||
func (f *FeedbackService) GetByProjectID(projectID string) ([]*models.Feedback, error) {
|
||||
return f.db.Feedback.GetByProjectID(models.FeedbackType(projectID))
|
||||
}
|
||||
|
||||
func (f *FeedbackService) Upvote(sessionID, feedbackUUID string) error {
|
||||
feedback, err := f.db.Feedback.GetByUUID(feedbackUUID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// check if project type is feature
|
||||
if feedback.Type != models.FeedbackTypeFeature {
|
||||
return errors.New("only feature tickets can be upvoted")
|
||||
}
|
||||
|
||||
// check if user has already upvoted
|
||||
for _, upvote := range feedback.Upvote {
|
||||
if upvote.SessionUUID == sessionID {
|
||||
return errors.New("user has already upvoted")
|
||||
}
|
||||
}
|
||||
|
||||
return f.db.Feedback.CreateUpvote(models.NewUpvote(sessionID, feedbackUUID))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user