From 1f5e9852e48144df57a3948e24d5f552b9d3e35b Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 18 Apr 2025 15:49:41 +1000 Subject: [PATCH] Update v3/examples/gin-service/services/gin_service.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../gin-service/services/gin_service.go | 65 +++++++++++++------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/v3/examples/gin-service/services/gin_service.go b/v3/examples/gin-service/services/gin_service.go index 6c3ef9f70..a67a0f575 100644 --- a/v3/examples/gin-service/services/gin_service.go +++ b/v3/examples/gin-service/services/gin_service.go @@ -137,30 +137,57 @@ func (s *GinService) setupRoutes() { c.JSON(http.StatusNotFound, gin.H{"error": "User not found"}) }) - // Create a new user - users.POST("", func(c *gin.Context) { - var newUser User - if err := c.ShouldBindJSON(&newUser); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) - return - } +// import block (ensure this exists in your file) +import ( + "context" + "net/http" + "strconv" + "strings" + "sync" + "time" +) - s.mu.Lock() - defer s.mu.Unlock() +// ... - // Set the ID and creation time - newUser.ID = s.nextID - newUser.CreatedAt = time.Now() - s.nextID++ +// Create a new user +users.POST("", func(c *gin.Context) { + var newUser User + if err := c.ShouldBindJSON(&newUser); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } - // Add to the users slice - s.users = append(s.users, newUser) + // Validate required fields + if newUser.Name == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Name is required"}) + return + } + if newUser.Email == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Email is required"}) + return + } + // Basic email validation (consider using a proper validator library in production) + if !strings.Contains(newUser.Email, "@") { + c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid email format"}) + return + } - c.JSON(http.StatusCreated, newUser) + s.mu.Lock() + defer s.mu.Unlock() - // Emit an event to notify about the new user - s.app.EmitEvent("user-created", newUser) - }) + // Set the ID and creation time + newUser.ID = s.nextID + newUser.CreatedAt = time.Now() + s.nextID++ + + // Add to the users slice + s.users = append(s.users, newUser) + + c.JSON(http.StatusCreated, newUser) + + // Emit an event to notify about the new user + s.app.EmitEvent("user-created", newUser) +}) // Delete a user users.DELETE("/:id", func(c *gin.Context) {