update repo method

This commit is contained in:
Pavel 2024-03-17 18:17:57 +03:00
parent df74226004
commit d3c21151d3

@ -3,6 +3,7 @@ package statistics
import (
"context"
"database/sql"
"fmt"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
"time"
)
@ -98,6 +99,7 @@ func (r *StatisticsRepository) GetGeneralStatistics(ctx context.Context, req Dev
}
type QuestionsStatsResp struct {
// PS это / не или а делить а то я спустя пару часов только догнал
//Funnel 3 отдельных метрики
// 0 - количество сессий с любым ответом кроме start == true / количество сессий с ответом start == true
// 1 - количество сессий с result == false, но тип вопроса, на который ответ == result / количество сессий с ответом start == true
@ -112,5 +114,34 @@ type QuestionsStatsResp struct {
}
func (r *StatisticsRepository) GetQuestionsStatistics(ctx context.Context, req DeviceStatReq) (QuestionsStatsResp, error) {
resp := QuestionsStatsResp{
Funnel: [3]float64{},
Results: make(map[string]float64),
Questions: make(map[string]map[string]float64),
}
queStatistics, err := r.queries.QuestionsStatistics(ctx, sqlcgen.QuestionsStatisticsParams{
QuizID: req.QuizId,
ToTimestamp: float64(req.From),
ToTimestamp_2: float64(req.To),
})
if err != nil {
return resp, err
}
for _, row := range queStatistics {
resp.Funnel[0] = float64(row.CountStartFalse) / float64(row.CountStartTrue)
resp.Funnel[1] = float64(row.CountFResultWithTQuestion) / float64(row.CountStartTrue)
resp.Funnel[2] = float64(row.CountTResult) / float64(row.CountStartTrue)
fmt.Println(resp.Funnel)
resp.Results[row.ResultsTitle] = float64(row.ResultsPercentage)
if resp.Questions[row.QuestionsTitle] == nil {
resp.Questions[row.QuestionsTitle] = make(map[string]float64)
}
resp.Questions[row.QuestionsTitle][row.AnswerContent.String] = float64(row.QuestionsPercentage)
}
return resp, nil
}