package utils import ( "GoMembership/pkg/errors" "GoMembership/pkg/logger" "net/http" "github.com/gin-gonic/gin" "github.com/go-playground/validator/v10" ) func RespondWithError(c *gin.Context, err error, context string, code int, field string, key string) { logger.Error.Printf("Sending %v Error Response(Field: %v Key: %v) %v: %v", code, field, key, context, err.Error()) c.JSON(code, gin.H{"errors": []gin.H{{ "field": field, "key": key, }}}) } func HandleValidationError(c *gin.Context, err error) { var validationErrors []gin.H logger.Error.Printf("Sending validation error response Error %v", err.Error()) if ve, ok := err.(validator.ValidationErrors); ok { for _, e := range ve { validationErrors = append(validationErrors, gin.H{ "field": e.Field(), "key": "server.validation." + e.Tag(), }) } } else { validationErrors = append(validationErrors, gin.H{ "field": "general", "key": "server.error.invalid_json", }) } c.JSON(http.StatusBadRequest, gin.H{"errors": validationErrors}) } func HandleUpdateError(c *gin.Context, err error) { switch err { case errors.ErrUserNotFound: RespondWithError(c, err, "Error while updating user", http.StatusNotFound, "user", "server.validation.user_not_found") case errors.ErrInvalidUserData: RespondWithError(c, err, "Error while updating user", http.StatusBadRequest, "user", "server.validation.invalid_user_data") case errors.ErrSubscriptionNotFound: RespondWithError(c, err, "Error while updating user", http.StatusBadRequest, "subscription", "server.validation.subscription_data") default: RespondWithError(c, err, "Error while updating user", http.StatusInternalServerError, "user", "server.error.internal_server_error") } }