From 5d1b234b86bd7c3142fa7201929f36f4d7736868 Mon Sep 17 00:00:00 2001 From: Andrey Chervyakov Date: Mon, 15 Mar 2021 01:22:41 +0600 Subject: [PATCH] Add error package --- err/err.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 err/err.go diff --git a/err/err.go b/err/err.go new file mode 100644 index 0000000..3d61cb7 --- /dev/null +++ b/err/err.go @@ -0,0 +1,47 @@ +package err + +import ( + "github.com/labstack/echo/v4" + "net/http" +) + +type NotFoundError struct { + Message string +} + +func (err NotFoundError) Error() string { + return err.Message +} + +type UnknownError struct { + Message string +} + +func (err UnknownError) Error() string { + return err.Message +} + +type AlreadyExistsError struct { + Message string +} + +func (err AlreadyExistsError) Error() string { + return err.Message +} + +func MapErrToHTTPErr(err interface{}) *echo.HTTPError { + switch v := err.(type) { + case NotFoundError: + return echo.NewHTTPError(http.StatusNotFound, v.Message) + case UnknownError: + if v.Message != "" { + return echo.NewHTTPError(http.StatusInternalServerError, v.Message) + } else { + return echo.NewHTTPError(http.StatusInternalServerError) + } + case AlreadyExistsError: + return echo.NewHTTPError(http.StatusBadRequest, v.Message) + default: + return nil + } +}