Skip to content

Commit

Permalink
change error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
kaitoyama committed May 2, 2024
1 parent eb083bd commit 8062e5d
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
2 changes: 2 additions & 0 deletions model/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,6 @@ var (
ErrInvalidTx = errors.New("invalid tx")
// ErrDeadlineExceeded deadline exceeded
ErrDeadlineExceeded = errors.New("deadline exceeded")
// ErrDuplicatedAnswered
ErrDuplicatedAnswered = errors.New("duplicated answered is not allowed")
)
14 changes: 6 additions & 8 deletions model/respondents_impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,15 @@ func (*Respondent) InsertRespondent(ctx context.Context, userID string, question
}
}

if !questionnaire.IsDuplicateAnswerAllowed && submittedAt.Valid {
// delete old answers
if !questionnaire.IsDuplicateAnswerAllowed {
err = db.
Where("questionnaire_id = ? AND user_traqid = ?", questionnaireID, userID).
Delete(&Respondents{}).Error
// 既存の回答がなかった場合はそのまま進む
if errors.Is(err, ErrNoRecordDeleted) {
err = nil
First(&Respondents{}).Error
if err == nil {
return 0, ErrDuplicatedAnswered
}
if err != nil {
return 0, fmt.Errorf("failed to delete old answers: %w", err)
if !errors.Is(err, gorm.ErrRecordNotFound) {
return 0, fmt.Errorf("failed to check duplicate answer: %w", err)
}

}
Expand Down
3 changes: 3 additions & 0 deletions router/responses.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@ func (r *Response) PostResponse(c echo.Context) error {
}

responseID, err := r.InsertRespondent(c.Request().Context(), userID, req.ID, null.NewTime(submittedAt, !req.Temporarily))
if errors.Is(err, model.ErrDuplicatedAnswered) {
return echo.NewHTTPError(http.StatusConflict, err)
}
if err != nil {
c.Logger().Errorf("failed to insert respondent: %+v", err)
return echo.NewHTTPError(http.StatusInternalServerError, err)
Expand Down

0 comments on commit 8062e5d

Please sign in to comment.