From b3ab98f9a202a200ed10813e5af313746a3c85d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20P=C3=A9rez?= Date: Tue, 28 Oct 2025 22:06:32 +0100 Subject: [PATCH] add ParamToInt method --- service_a/internal/domains/handlers.go | 20 +++++++++++++++ service_a/internal/domains/meteo/handlers.go | 26 ++------------------ 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/service_a/internal/domains/handlers.go b/service_a/internal/domains/handlers.go index 4278011..41f19c2 100644 --- a/service_a/internal/domains/handlers.go +++ b/service_a/internal/domains/handlers.go @@ -3,6 +3,7 @@ package domains import ( "encoding/json" "net/http" + "strconv" ) type ( @@ -14,3 +15,22 @@ func (bh *BaseHandler) ToJSON(w http.ResponseWriter, statusCode int, data any) { w.WriteHeader(statusCode) json.NewEncoder(w).Encode(data) } + +func (bh *BaseHandler) ParamToInt(param string, defaultValue ...int) int { + if param == "" { + if len(defaultValue) > 0 { + return defaultValue[0] + } + return 0 + } + + value, err := strconv.Atoi(param) + if err != nil { + if len(defaultValue) > 0 { + return defaultValue[0] + } + return 0 + } + + return value +} diff --git a/service_a/internal/domains/meteo/handlers.go b/service_a/internal/domains/meteo/handlers.go index 5336b93..2593ba2 100644 --- a/service_a/internal/domains/meteo/handlers.go +++ b/service_a/internal/domains/meteo/handlers.go @@ -10,7 +10,6 @@ import ( "net/http" "servicea/internal/app" "servicea/internal/domains" - "strconv" "time" ) @@ -80,34 +79,13 @@ func (h *Handler) IngestExcel(w http.ResponseWriter, r *http.Request) { func (h *Handler) GetMeteoData(w http.ResponseWriter, r *http.Request) { queryParams := r.URL.Query() - pageInt := int(1) - limitInt := int(10) - - page := queryParams.Get("page") - limit := queryParams.Get("limit") - - if page != "" { - p, err := strconv.Atoi(page) - if err == nil { - pageInt = p - } - } - - if limit != "" { - l, err := strconv.Atoi(limit) - if err == nil { - limitInt = l - } else { - limitInt = 10 - } - } params := GetMeteoData{ Location: queryParams.Get("city"), From: queryParams.Get("from"), To: queryParams.Get("to"), - Page: pageInt, - Limit: limitInt, + Page: h.ParamToInt(queryParams.Get("page"), 1), + Limit: h.ParamToInt(queryParams.Get("limit"), 10), } if err := params.Validate(); err != nil {