add stat route for questions

This commit is contained in:
Pavel 2024-03-17 22:44:08 +03:00
parent fdb196b7b4
commit 94add98ea6
4 changed files with 30 additions and 25 deletions

2
go.mod

@ -15,7 +15,7 @@ require (
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf
go.uber.org/zap v1.26.0
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316203002-18b697f52b2f
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240317192828-4199ac7f22f0
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240313171802-7da5fbb4caf3
)

24
go.sum

@ -186,27 +186,7 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240314133622-a34c0e2e5168 h1:KYujnAq8IOdTe9QESIivXKeaBTt+e4jVN0FiWlKyggw=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240314133622-a34c0e2e5168/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315113539-a26dce3bed0e h1:nd9ZkwEq2wPDG/Nc5TDh5EFNckqrUKsI6jU4es84vxU=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315113539-a26dce3bed0e/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315133641-4cc870989184 h1:tiQQbN7OHrCohzPVeA6g9M7/WZDWMTahQmEDmYO20d8=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315133641-4cc870989184/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315174302-9c8724561332 h1:AZDjQxeoDzSpzzcHg0VoX3kiofqwaiHPne9slnr4U/Q=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315174302-9c8724561332/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316193909-666b0782a71d h1:fO/NJhS3XUokE6VPzAzlKcNL1+/6sxqZwJISzZRjXPM=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316193909-666b0782a71d/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316194414-590aeb0e0040 h1:BFOnpGwTCPtNgTgU4URZKEreIQykiLdRi9oGbqa/cTU=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316194414-590aeb0e0040/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316194932-bf7f344d302b h1:CXfSjR85CK/xg7ybgj0JvqqUvedaX8Cln14npbOLGBc=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316194932-bf7f344d302b/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316200433-8f361e4662b7 h1:1PBcGuNwVzdaIuzOD5fP8Q/Cq4d/iMH6l/8In4Jbs+g=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316200433-8f361e4662b7/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316201233-fa2bede7ad66 h1:SoXlfsRGq92ZmVu/gC3XY2uXNX9YmLrB+3hlnZT6r6Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316201233-fa2bede7ad66/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316202317-f86e8ce0dd59 h1:+5EFdjA4TdjEoyPRyzJHyh058gITIvmP9QxSDmbgx2g=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316202317-f86e8ce0dd59/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316203002-18b697f52b2f h1:WNjPA0i54wYb0a2xM5ltHmt6z9rTAgv09MdXrpNOnog=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240316203002-18b697f52b2f/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240317192828-4199ac7f22f0 h1:1mfKWIsUbBisQx7tilN8ee0bI3+4wa7zVYLsHYCbaUI=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240317192828-4199ac7f22f0/go.mod h1:okduDAq0NVVDcM+TMyrd4mVXzBMeTzYI2B2/yi1sL1Y=
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240313171802-7da5fbb4caf3 h1:BLHIUnJAttW9OAW7A63H9ON/HPhXdpBa/YPUQWD4ORA=
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240313171802-7da5fbb4caf3/go.mod h1:/BFcX4F10DRuFuAHlwkKO+1QAXPL4i49x1tsrTwxlqE=

@ -51,4 +51,5 @@ func (s *Service) Register(app *fiber.App) {
// statistics handlers
app.Post("/statistic/:quizID/devices", s.GetDeviceStatistics)
app.Post("/statistic/:quizID/general", s.GetGeneralStatistics)
app.Post("/statistic/:quizID/questions", s.GetQuestionsStatistics)
}

@ -42,7 +42,7 @@ type GeneralStatsResp struct {
func (s *Service) GetGeneralStatistics(ctx *fiber.Ctx) error {
quizIDStr := ctx.Params("quizID")
quizId, err := strconv.ParseInt(quizIDStr, 10, 64)
quizID, err := strconv.ParseInt(quizIDStr, 10, 64)
if err != nil {
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid quiz ID format")
}
@ -53,7 +53,7 @@ func (s *Service) GetGeneralStatistics(ctx *fiber.Ctx) error {
}
generalStats, err := s.dal.StatisticsRepo.GetGeneralStatistics(ctx.Context(), statistics.DeviceStatReq{
QuizId: quizId,
QuizId: quizID,
From: req.From,
To: req.To,
})
@ -63,3 +63,27 @@ func (s *Service) GetGeneralStatistics(ctx *fiber.Ctx) error {
return ctx.Status(fiber.StatusOK).JSON(generalStats)
}
func (s *Service) GetQuestionsStatistics(ctx *fiber.Ctx) error {
quizIDStr := ctx.Params("quizID")
quizID, err := strconv.ParseInt(quizIDStr, 0, 64)
if err != nil {
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid quiz ID format")
}
var req DeviceStatReq
if err := ctx.BodyParser(&req); err != nil {
ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data")
}
questionsStats, err := s.dal.StatisticsRepo.GetQuestionsStatistics(ctx.Context(), statistics.DeviceStatReq{
QuizId: quizID,
From: req.From,
To: req.To,
})
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
}
return ctx.Status(fiber.StatusOK).JSON(questionsStats)
}