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.