From 34055cf3e61a1f4fcbd25ea8d8ba1c9b82ac7306 Mon Sep 17 00:00:00 2001
From: bayusamudra5502 <bayusamudra.55.02.com@gmail.com>
Date: Tue, 4 Apr 2023 16:38:25 +0700
Subject: [PATCH] fix: bugs when id not found

---
 handler/quiz/get.go     |  6 +-----
 repository/quiz/impl.go | 12 ++++++++++--
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/handler/quiz/get.go b/handler/quiz/get.go
index 989720b..799ca82 100644
--- a/handler/quiz/get.go
+++ b/handler/quiz/get.go
@@ -43,11 +43,7 @@ func (m QuizHandlerImpl) GetQuizDetail(w http.ResponseWriter, r *http.Request) {
 		if ok {
 			payload := m.WrapperUtil.ErrorResponseWrap(respErr.Error(), respErr)
 
-			if respErr.Code != "NOT_OWNER" {
-				m.HttpUtil.WriteJson(w, http.StatusBadRequest, payload)
-			} else {
-				m.HttpUtil.WriteJson(w, http.StatusForbidden, payload)
-			}
+			m.HttpUtil.WriteJson(w, http.StatusBadRequest, payload)
 		} else {
 			payload := m.WrapperUtil.ErrorResponseWrap("internal server error", nil)
 			m.HttpUtil.WriteJson(w, http.StatusInternalServerError, payload)
diff --git a/repository/quiz/impl.go b/repository/quiz/impl.go
index ddf2fe7..03665df 100644
--- a/repository/quiz/impl.go
+++ b/repository/quiz/impl.go
@@ -1,10 +1,12 @@
 package quiz
 
 import (
+	"errors"
 	"time"
 
 	"github.com/google/uuid"
 	"gitlab.informatika.org/ocw/ocw-backend/model/domain/quiz"
+	"gitlab.informatika.org/ocw/ocw-backend/model/web"
 	"gitlab.informatika.org/ocw/ocw-backend/provider/db"
 	"gorm.io/gorm"
 )
@@ -22,13 +24,19 @@ func New(
 func (q *QuizRepositoryImpl) GetQuizes(courseId string) ([]quiz.Quiz, error) {
 	result := &[]quiz.Quiz{}
 	err := q.db.Where("course_id = ?", courseId).Find(result).Error
+
 	return *result, err
 }
 
 func (q *QuizRepositoryImpl) GetQuizDetail(quizId uuid.UUID) (*quiz.Quiz, error) {
 	result := &quiz.Quiz{}
-	err := q.db.Where("id = ?", quizId).Find(result).Error
-	return result, err
+	err := q.db.Where("id = ?", quizId).First(result).Error
+
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return nil, web.NewResponseError("Record not found", "ERR_NOT_FOUND")
+	}
+
+	return result, nil
 }
 
 func (q *QuizRepositoryImpl) UpdateScore(takeId uuid.UUID, score int) error {
-- 
GitLab