From 185f859ee357663496d1745c43f5eb8f5497c2cb Mon Sep 17 00:00:00 2001 From: Kirillkriv Date: Tue, 6 Oct 2026 13:45:17 +0300 Subject: [PATCH] feat: added panic handler middleware --- v1/middleware/middleware.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/v1/middleware/middleware.go b/v1/middleware/middleware.go index 213d15c..38a6ea3 100644 --- a/v1/middleware/middleware.go +++ b/v1/middleware/middleware.go @@ -8,10 +8,24 @@ import ( "github.com/rs/zerolog/log" ) +func MwPanicHandler() core.Middleware { + return func(next core.HandlerFunc) core.HandlerFunc { + return func(c *mcontext.Context) error { + defer func() { + p := recover() + if p != nil { + log.Fatal().Any("panic", p) + } + }() + return next(c) + } + } +} + func MwErrorResponder(defaultMsg string) core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { - err := next.HandleUpdate(c) + err := next(c) var maxErr *merrors.GomaxError if errors.As(err, &maxErr) { @@ -32,7 +46,7 @@ func MwLoggerInjector() core.Middleware { ctx := log.Logger.With().Int64("user_id", c.Update().UserID). Logger().WithContext(c.Context()) c.SetContext(ctx) - return next.HandleUpdate(c) + return next(c) } } } @@ -41,7 +55,7 @@ func MwDebugState() core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { log.Debug().Any("state", c.State()).Any("update", c.Update()).Send() - return next.HandleUpdate(c) + return next(c) } } } @@ -49,7 +63,7 @@ func MwDebugState() core.Middleware { func MwErrorLogger() core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { - if err := next.HandleUpdate(c); err != nil { + if err := next(c); err != nil { log.Ctx(c).Err(err).Send() return err }