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 + } +}