From bd9cdfd7d7bfd7ee4ed4f1384b1562242346cf69 Mon Sep 17 00:00:00 2001 From: Pavel Date: Fri, 15 Mar 2024 20:44:37 +0300 Subject: [PATCH] add new route to general statistics --- go.mod | 2 +- go.sum | 2 ++ service/service.go | 1 + service/statistic_svc.go | 28 ++++++++++++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bd9fbd1..36cbf73 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-20240315133641-4cc870989184 + penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315174302-9c8724561332 penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240313171802-7da5fbb4caf3 ) diff --git a/go.sum b/go.sum index 1d3dbeb..efab57f 100644 --- a/go.sum +++ b/go.sum @@ -192,5 +192,7 @@ penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240315113539-a26 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/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 19222ac..45454af 100644 --- a/service/service.go +++ b/service/service.go @@ -50,4 +50,5 @@ func (s *Service) Register(app *fiber.App) { // statistics handlers app.Post("/statistic/:quizID/devices", s.GetDeviceStatistics) + app.Post("/statistic/:quizID/general", s.GetGeneralStatistics) } diff --git a/service/statistic_svc.go b/service/statistic_svc.go index 276a165..c968d69 100644 --- a/service/statistic_svc.go +++ b/service/statistic_svc.go @@ -35,3 +35,31 @@ func (s *Service) GetDeviceStatistics(ctx *fiber.Ctx) error { return ctx.Status(fiber.StatusOK).JSON(deviceStats) } + +type GeneralStatsResp struct { + Open, Result, AvTime, Conversion map[uint64]uint64 +} + +func (s *Service) GetGeneralStatistics(ctx *fiber.Ctx) error { + quizIDStr := ctx.Params("quizID") + quizId, err := strconv.ParseInt(quizIDStr, 10, 64) + if err != nil { + return ctx.Status(fiber.StatusBadRequest).SendString("Invalid quiz ID format") + } + + var req DeviceStatReq + if err := ctx.BodyParser(&req); err != nil { + return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data") + } + + generalStats, err := s.dal.StatisticsRepo.GetGeneralStatistics(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(generalStats) +}