diff --git a/handler/quiz/take.go b/handler/quiz/take.go index 530f4f77823001b1a5027b76d610b8c9ccafcaad..06499ed4839bd8e9ce07d009b3122656d311fb9c 100644 --- a/handler/quiz/take.go +++ b/handler/quiz/take.go @@ -138,7 +138,7 @@ func (m QuizHandlerImpl) GetQuizSolution(w http.ResponseWriter, r *http.Request) // @Param data body quiz.FinishQuizPayload true "Quiz Finish payload" // @Param id path string true "Quiz id" Format(uuid) // @Success 200 {object} web.BaseResponse{data=quiz.QuizDetail} -// @Router /quiz/{id}/take [post] +// @Router /quiz/{id}/finish [post] func (m QuizHandlerImpl) FinishQuiz(w http.ResponseWriter, r *http.Request) { payload := quiz.FinishQuizPayload{} diff --git a/provider/storage/manager.go b/provider/storage/manager.go index cfeae57144fe4d23729a2382984360253e5d4659..6cf93f7291323ebb26246670dcafd9978aeda76f 100644 --- a/provider/storage/manager.go +++ b/provider/storage/manager.go @@ -1,7 +1,10 @@ package storage import ( + "bufio" + "bytes" "context" + "io" "github.com/minio/minio-go/v7" ) @@ -18,7 +21,15 @@ func (s S3Storage) Get(ctx context.Context, path string) ([]byte, error) { return result, err } - _, err = obj.Read(result) + var buffer bytes.Buffer + writter := bufio.NewWriter(&buffer) + + _, err = io.Copy(writter, obj) + if err != nil { + return result, err + } + + result = buffer.Bytes() return result, err } diff --git a/repository/quiz/impl.go b/repository/quiz/impl.go index e51495422f1a10911dd47bf00b1764eb541446ab..72ff3800d9dba38ab9285c9bcea6c5f22ed25118 100644 --- a/repository/quiz/impl.go +++ b/repository/quiz/impl.go @@ -42,9 +42,11 @@ func (q *QuizRepositoryImpl) GetQuizDetail(quizId uuid.UUID) (*quiz.Quiz, error) func (q *QuizRepositoryImpl) UpdateScore(takeId uuid.UUID, score int) error { return q.db. Model(&quiz.QuizTake{}). - Update("score", score). - Update("is_finished", true). - Where("id = ?", takeId).Error + Where("id = ?", takeId). + Updates(quiz.QuizTake{ + Score: score, + IsFinished: true, + }).Error } func (q *QuizRepositoryImpl) NewTake(quizId uuid.UUID, userEmail string) (uuid.UUID, error) { @@ -64,18 +66,18 @@ func (q *QuizRepositoryImpl) NewTake(quizId uuid.UUID, userEmail string) (uuid.U } func (q *QuizRepositoryImpl) IsActiveTake(quizId uuid.UUID, userEmail string) (bool, error) { - result := struct{ cnt int }{} + var result int64 = 0 err := q.db. - Select("COUNT(*) as cnt"). + Model(&quiz.QuizTake{}). Where("quiz_id = ? AND email = ? AND is_finished = false", quizId, userEmail). - Find(result). + Count(&result). Error if err != nil { return false, nil } - return result.cnt > 0, nil + return result > 0, nil } func (q *QuizRepositoryImpl) GetAllTake(quizId uuid.UUID, userEmail string) ([]quiz.QuizTake, error) {