package main
import (
"github.com/gin-gonic/gin"
"github.com/kthehatter/go-validator/validator"
"github.com/kthehatter/go-validator/validator/ginadapter"
)
func main() {
// Create a new Gin router
r := gin.New()
// Define validation rules
validationOptions := []validator.ValidationOption{
{
Key: "username",
IsOptional: false,
Validators: []validator.Validator{
validator.CreateValidator(validator.IsNotEmpty, "Username is required"),
validator.CreateValidator(validator.IsAlphanumeric, "Username must be alphanumeric"),
},
},
{
Key: "email",
IsOptional: false,
Validators: []validator.Validator{
validator.CreateValidator(validator.IsNotEmpty, "Email is required"),
validator.CreateValidator(validator.IsEmail, "Invalid email address"),
},
},
{
Key: "password",
IsOptional: false,
Validators: []validator.Validator{
validator.CreateValidator(validator.IsNotEmpty, "Password is required"),
validator.CreateValidator(validator.MinLength(6), "Password must be at least 6 characters"),
},
},
}
// Apply the validation middleware to the POST /user endpoint
r.POST("/user", ginadapter.Middleware(validationOptions), func(c *gin.Context) {
// Retrieve the validated body from the context
body := c.MustGet("validatedBody").(gin.H)
// Process the data (for demonstration, just return it)
c.JSON(200, gin.H{
"message": "User created successfully",
"data": body,
})
})
// Start the Gin server
r.Run(":8080")
}