"unicode"
"github.com/gin-gonic/gin"
+ "github.com/jloup/utils"
)
var CONFIG Config
}
type Error struct {
- Code ErrorCode
+ Code utils.Flag
UserMessage string
err error
}
+func (e Error) FlagString() string {
+ return e.Code.String()
+}
+
+func (e Error) Flag() utils.Flag {
+ return e.Code
+}
+
+func (e Error) Msg() string {
+ return e.UserMessage
+}
+
+func (e Error) ErrorWithCode(f utils.Flag) utils.ErrorFlagged {
+ if utils.Intersect(e.Code, f) {
+ return e
+ }
+
+ return nil
+}
func (e Error) Err() error {
if e.err != nil {
return e
return ""
}
-func ErrorIs(err error, code ErrorCode) bool {
+func ErrorIs(err error, code utils.Flag) bool {
if err == nil {
return false
}
if apiError, ok := err.(*Error); !ok {
return false
} else {
- return apiError.Code == code
+ return utils.Intersect(apiError.Code, code) && apiError.Code.String() == code.String()
}
}
}
type Response struct {
- StatusCode Status `json:"-"`
- ErrorCode ErrorCode `json:"-"`
+ StatusCode Status `json:"-"`
+ ErrorCode utils.Flag `json:"-"`
Status string `json:"status"`
Code string `json:"code,omitempty"`
func (r Response) populateStatus() Response {
r.Status = ToSnake(r.StatusCode.String())
-
- if r.ErrorCode != 0 {
- r.Code = ToSnake(r.ErrorCode.String())
- }
+ r.Code = ToSnake(r.ErrorCode.String())
return r
}
-func ErrorResponse(code ErrorCode, message string) Response {
+func ErrorResponse(code utils.Flag, message string) Response {
return Response{
StatusCode: NOK,
ErrorCode: code,
err := handler(c)
if err != nil {
- WriteJsonResponse(ErrorResponse(err.Code, err.UserMessage), c)
+ WriteJsonResponse(ErrorResponse(err.Flag(), err.UserMessage), c)
c.Error(err)
c.Abort()
} else {
func RunQuery(query Query, c *gin.Context) {
if err := query.ValidateParams(); err != nil {
- WriteJsonResponse(ErrorResponse(err.Code, err.UserMessage), c)
+ WriteJsonResponse(ErrorResponse(err.Flag(), err.UserMessage), c)
c.Error(err)
return
}
if out, err := query.Run(); err != nil {
- WriteJsonResponse(ErrorResponse(err.Code, err.UserMessage), c)
+ WriteJsonResponse(ErrorResponse(err.Flag(), err.UserMessage), c)
c.Error(err)
} else {
WriteJsonResponse(SuccessResponse(out), c)