From 94add98ea676335ccfa8590f4dc7b22507412bf0 Mon Sep 17 00:00:00 2001 From: Pavel Date: Sun, 17 Mar 2024 22:44:08 +0300 Subject: [PATCH] add stat route for questions --- go.mod | 2 +- go.sum | 24 ++---------------------- service/service.go | 1 + service/statistic_svc.go | 28 ++++++++++++++++++++++++++-- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index ed2a624..d147af0 100644 --- a/go.mod +++ b/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 ) diff --git a/go.sum b/go.sum index c536099..88d71fa 100644 --- a/go.sum +++ b/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= diff --git a/service/service.go b/service/service.go index 45454af..4c10932 100644 --- a/service/service.go +++ b/service/service.go @@ -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) } diff --git a/service/statistic_svc.go b/service/statistic_svc.go index c968d69..ef738be 100644 --- a/service/statistic_svc.go +++ b/service/statistic_svc.go @@ -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) +}