package middleware import ( "fmt" "log" "net/http" "runtime/debug" "github.com/gin-gonic/gin" ) // ErrorHandler middleware handles panics and errors func ErrorHandler() gin.HandlerFunc { return func(c *gin.Context) { defer func() { if err := recover(); err != nil { log.Printf("[PANIC] %v\n%s", err, debug.Stack()) c.JSON(http.StatusInternalServerError, gin.H{ "success": false, "error": fmt.Sprintf("Internal server error: %v", err), }) c.Abort() } }() c.Next() } }