From a7edae9113e815f4b626457144187fa095027430 Mon Sep 17 00:00:00 2001 From: nquidox Date: Mon, 2 Mar 2026 17:30:17 +0300 Subject: [PATCH] gin context util + doc fix --- pkg/utils/ginContext.go | 32 ++++++++++++++++++++++++++++++++ pkg/utils/interface.go | 1 + pkg/utils/time.go | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 pkg/utils/ginContext.go diff --git a/pkg/utils/ginContext.go b/pkg/utils/ginContext.go new file mode 100644 index 0000000..d0cc03f --- /dev/null +++ b/pkg/utils/ginContext.go @@ -0,0 +1,32 @@ +package utils + +import ( + "errors" + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +type contextUtil interface { + GetUserUuidFromContext(c *gin.Context) (string, error) +} + +func (h *Handler) GetUserUuidFromContext(c *gin.Context) (string, error) { + if c == nil { + return "", errors.New("context is nil") + } + + uuidRaw, exists := c.Get("userUuid") + if !exists { + return "", errors.New("user uuid not found in context") + } + + userUuidStr, ok := uuidRaw.(string) + if !ok { + return "", errors.New("user uuid is not a string") + } + + if err := uuid.Validate(userUuidStr); err != nil { + return "", errors.New("error validating user uuid") + } + return userUuidStr, nil +} diff --git a/pkg/utils/interface.go b/pkg/utils/interface.go index 159ca57..5d52a72 100644 --- a/pkg/utils/interface.go +++ b/pkg/utils/interface.go @@ -3,4 +3,5 @@ package utils type Utils interface { timeUtil cpuUtil + contextUtil } diff --git a/pkg/utils/time.go b/pkg/utils/time.go index 231e930..de48858 100644 --- a/pkg/utils/time.go +++ b/pkg/utils/time.go @@ -9,7 +9,7 @@ type timeUtil interface { // TimeNowUTC Use it everywhere, when you need current time. TimeNowUTC() time.Time - // DeletedNullTime returns empty sql.NullTime struct. + // DeletedNullTime returns empty sql.NullTime struct with valid = false. DeletedNullTime() sql.NullTime // NullTimeNowUTC returns valid sql.NullTime struct with current time in UTC.