Skip to content
Snippets Groups Projects
Verified Commit 6854c4b9 authored by Bayu Samudra's avatar Bayu Samudra
Browse files

fix: fixing take quiz

parent aec43e3b
Branches
2 merge requests!47Final Updates,!42[Feat] [Release!] [#1] Project Release Commit
Pipeline #57141 passed with stages
in 3 minutes and 17 seconds
...@@ -138,7 +138,7 @@ func (m QuizHandlerImpl) GetQuizSolution(w http.ResponseWriter, r *http.Request) ...@@ -138,7 +138,7 @@ func (m QuizHandlerImpl) GetQuizSolution(w http.ResponseWriter, r *http.Request)
// @Param data body quiz.FinishQuizPayload true "Quiz Finish payload" // @Param data body quiz.FinishQuizPayload true "Quiz Finish payload"
// @Param id path string true "Quiz id" Format(uuid) // @Param id path string true "Quiz id" Format(uuid)
// @Success 200 {object} web.BaseResponse{data=quiz.QuizDetail} // @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) { func (m QuizHandlerImpl) FinishQuiz(w http.ResponseWriter, r *http.Request) {
payload := quiz.FinishQuizPayload{} payload := quiz.FinishQuizPayload{}
......
package storage package storage
import ( import (
"bufio"
"bytes"
"context" "context"
"io"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
) )
...@@ -18,7 +21,15 @@ func (s S3Storage) Get(ctx context.Context, path string) ([]byte, error) { ...@@ -18,7 +21,15 @@ func (s S3Storage) Get(ctx context.Context, path string) ([]byte, error) {
return result, err 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 return result, err
} }
...@@ -42,9 +42,11 @@ func (q *QuizRepositoryImpl) GetQuizDetail(quizId uuid.UUID) (*quiz.Quiz, error) ...@@ -42,9 +42,11 @@ func (q *QuizRepositoryImpl) GetQuizDetail(quizId uuid.UUID) (*quiz.Quiz, error)
func (q *QuizRepositoryImpl) UpdateScore(takeId uuid.UUID, score int) error { func (q *QuizRepositoryImpl) UpdateScore(takeId uuid.UUID, score int) error {
return q.db. return q.db.
Model(&quiz.QuizTake{}). Model(&quiz.QuizTake{}).
Update("score", score). Where("id = ?", takeId).
Update("is_finished", true). Updates(quiz.QuizTake{
Where("id = ?", takeId).Error Score: score,
IsFinished: true,
}).Error
} }
func (q *QuizRepositoryImpl) NewTake(quizId uuid.UUID, userEmail string) (uuid.UUID, 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 ...@@ -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) { func (q *QuizRepositoryImpl) IsActiveTake(quizId uuid.UUID, userEmail string) (bool, error) {
result := struct{ cnt int }{} var result int64 = 0
err := q.db. err := q.db.
Select("COUNT(*) as cnt"). Model(&quiz.QuizTake{}).
Where("quiz_id = ? AND email = ? AND is_finished = false", quizId, userEmail). Where("quiz_id = ? AND email = ? AND is_finished = false", quizId, userEmail).
Find(result). Count(&result).
Error Error
if err != nil { if err != nil {
return false, 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) { func (q *QuizRepositoryImpl) GetAllTake(quizId uuid.UUID, userEmail string) ([]quiz.QuizTake, error) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment