From 9517c32cdcbc7e19f2e516e29c5f4da59c07ffa8 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 16 Apr 2024 17:07:02 +0300 Subject: [PATCH 1/2] add new slice to sort in GetResultAnswers --- repository/result/result.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/repository/result/result.go b/repository/result/result.go index e71aea0..f38d39a 100644 --- a/repository/result/result.go +++ b/repository/result/result.go @@ -220,13 +220,14 @@ func (r *ResultRepository) GetQuestions(ctx context.Context, quizID uint64) ([]m } // test + -func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64) ([]model.Answer, error) { +func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64) ([]model.Answer, []model.ResultAnswer, error) { rows, err := r.queries.GetResultAnswers(ctx, int64(answerID)) if err != nil { - return nil, err + return nil, nil, err } var answers []model.Answer + var toSortAnswer []model.ResultAnswer for _, row := range rows { answer := model.Answer{ @@ -240,17 +241,22 @@ func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64 CreatedAt: row.CreatedAt.Time, New: row.New.Bool, Deleted: row.Deleted.Bool, - Device: row.Device, - DeviceType: row.DeviceType, - OS: row.Os, - IP: row.Ip, - Browser: row.Browser, + Device: row.Device, + DeviceType: row.DeviceType, + OS: row.Os, + IP: row.Ip, + Browser: row.Browser, } + toSortAnswer = append(toSortAnswer, model.ResultAnswer{ + QuestionID: uint64(row.QuestionID), + AnswerID: uint64(row.ID), + }) + answers = append(answers, answer) } - return answers, nil + return answers, toSortAnswer, nil } // test + From 77c4797a218b2165670ca0fa992c39b3ced267b0 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 16 Apr 2024 17:25:44 +0300 Subject: [PATCH 2/2] add new method for sort results --- repository/question/question.go | 29 +++++++++++++++++++++++++++++ repository/result/result.go | 12 +++--------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/repository/question/question.go b/repository/question/question.go index 5fa0485..a029723 100644 --- a/repository/question/question.go +++ b/repository/question/question.go @@ -415,3 +415,32 @@ func (r *QuestionRepository) GetQuestionTitleByID(ctx context.Context, questionI return resp, nil } + +func (r *QuestionRepository) ForSortingResults(ctx context.Context, allAnswers []model.Answer) ([]model.Answer, error) { + var questions []QueTitleResp + + for _, answer := range allAnswers { + questionData, err := r.GetQuestionTitleByID(ctx, answer.QuestionId) + if err != nil { + return nil, err + } + questionData.AnswerID = answer.Id + questions = append(questions, questionData) + + } + sort.Slice(questions, func(i, j int) bool { + return questions[i].Page < questions[j].Page + }) + + // TODO O2 REFACTOR + var sortedAllAnswers []model.Answer + for _, que := range questions { + for _, answer := range allAnswers { + if que.AnswerID == answer.Id { + sortedAllAnswers = append(sortedAllAnswers, answer) + } + } + } + + return sortedAllAnswers, nil +} diff --git a/repository/result/result.go b/repository/result/result.go index f38d39a..52c1010 100644 --- a/repository/result/result.go +++ b/repository/result/result.go @@ -220,14 +220,13 @@ func (r *ResultRepository) GetQuestions(ctx context.Context, quizID uint64) ([]m } // test + -func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64) ([]model.Answer, []model.ResultAnswer, error) { +func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64) ([]model.Answer, error) { rows, err := r.queries.GetResultAnswers(ctx, int64(answerID)) if err != nil { - return nil, nil, err + return nil, err } var answers []model.Answer - var toSortAnswer []model.ResultAnswer for _, row := range rows { answer := model.Answer{ @@ -248,15 +247,10 @@ func (r *ResultRepository) GetResultAnswers(ctx context.Context, answerID uint64 Browser: row.Browser, } - toSortAnswer = append(toSortAnswer, model.ResultAnswer{ - QuestionID: uint64(row.QuestionID), - AnswerID: uint64(row.ID), - }) - answers = append(answers, answer) } - return answers, toSortAnswer, nil + return answers, nil } // test +