🐛 Fix update current answer bug
This commit is contained in:
parent
a2633e6494
commit
ffb05154f9
@ -1,10 +1,12 @@
|
|||||||
package services
|
package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"git.solsynth.dev/hypernet/interactive/pkg/internal/database"
|
"git.solsynth.dev/hypernet/interactive/pkg/internal/database"
|
||||||
"git.solsynth.dev/hypernet/interactive/pkg/internal/models"
|
"git.solsynth.dev/hypernet/interactive/pkg/internal/models"
|
||||||
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewPoll(poll models.Poll) (models.Poll, error) {
|
func NewPoll(poll models.Poll) (models.Poll, error) {
|
||||||
@ -24,16 +26,21 @@ func UpdatePoll(poll models.Poll) (models.Poll, error) {
|
|||||||
func AddPollAnswer(poll models.Poll, answer models.PollAnswer) (models.PollAnswer, error) {
|
func AddPollAnswer(poll models.Poll, answer models.PollAnswer) (models.PollAnswer, error) {
|
||||||
answer.PollID = poll.ID
|
answer.PollID = poll.ID
|
||||||
|
|
||||||
var count int64
|
var currentAnswer models.PollAnswer
|
||||||
if err := database.C.Model(&models.PollAnswer{}).
|
if err := database.C.Model(&models.PollAnswer{}).
|
||||||
Where("poll_id = ? AND account_id = ?", poll.ID, answer.AccountID).
|
Where("poll_id = ? AND account_id = ?", poll.ID, answer.AccountID).
|
||||||
Count(&count).Error; err != nil {
|
First(¤tAnswer).Error; err == nil {
|
||||||
if err := database.C.Model(&models.PollAnswer{}).Where("poll_id = ? AND account_id = ?", poll.ID, answer.AccountID).Update("answer", answer.Answer).Error; err != nil {
|
if err := database.C.Model(¤tAnswer).
|
||||||
|
Where("id = ?", currentAnswer.ID).
|
||||||
|
Updates(&models.PollAnswer{Answer: answer.Answer}).Error; err != nil {
|
||||||
return answer, fmt.Errorf("failed to update your answer")
|
return answer, fmt.Errorf("failed to update your answer")
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer, nil
|
return answer, nil
|
||||||
|
} else if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return answer, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := database.C.Create(&answer).Error; err != nil {
|
if err := database.C.Create(&answer).Error; err != nil {
|
||||||
return answer, err
|
return answer, err
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user