mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-06 19:06:42 +01:00
Duplicated error when caused by meddler
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/hermeznetwork/hermez-node/log"
|
"github.com/hermeznetwork/hermez-node/log"
|
||||||
"github.com/hermeznetwork/tracerr"
|
"github.com/hermeznetwork/tracerr"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
"github.com/russross/meddler"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -46,24 +47,33 @@ var (
|
|||||||
func retSQLErr(err error, c *gin.Context) {
|
func retSQLErr(err error, c *gin.Context) {
|
||||||
log.Warnw("HTTP API SQL request error", "err", err)
|
log.Warnw("HTTP API SQL request error", "err", err)
|
||||||
errMsg := tracerr.Unwrap(err).Error()
|
errMsg := tracerr.Unwrap(err).Error()
|
||||||
|
retDupKey := func(errCode pq.ErrorCode) {
|
||||||
|
// https://www.postgresql.org/docs/current/errcodes-appendix.html
|
||||||
|
if errCode == "23505" {
|
||||||
|
c.JSON(http.StatusInternalServerError, errorMsg{
|
||||||
|
Message: errDuplicatedKey,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
c.JSON(http.StatusInternalServerError, errorMsg{
|
||||||
|
Message: errMsg,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
if errMsg == errCtxTimeout {
|
if errMsg == errCtxTimeout {
|
||||||
c.JSON(http.StatusServiceUnavailable, errorMsg{
|
c.JSON(http.StatusServiceUnavailable, errorMsg{
|
||||||
Message: errSQLTimeout,
|
Message: errSQLTimeout,
|
||||||
})
|
})
|
||||||
} else if sqlErr, ok := tracerr.Unwrap(err).(*pq.Error); ok {
|
} else if sqlErr, ok := tracerr.Unwrap(err).(*pq.Error); ok {
|
||||||
// https://www.postgresql.org/docs/current/errcodes-appendix.html
|
retDupKey(sqlErr.Code)
|
||||||
if sqlErr.Code == "23505" {
|
} else if sqlErr, ok := meddler.DriverErr(tracerr.Unwrap(err)); ok {
|
||||||
c.JSON(http.StatusInternalServerError, errorMsg{
|
retDupKey(sqlErr.(*pq.Error).Code)
|
||||||
Message: errDuplicatedKey,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else if tracerr.Unwrap(err) == sql.ErrNoRows {
|
} else if tracerr.Unwrap(err) == sql.ErrNoRows {
|
||||||
c.JSON(http.StatusNotFound, errorMsg{
|
c.JSON(http.StatusNotFound, errorMsg{
|
||||||
Message: err.Error(),
|
Message: errMsg,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
c.JSON(http.StatusInternalServerError, errorMsg{
|
c.JSON(http.StatusInternalServerError, errorMsg{
|
||||||
Message: err.Error(),
|
Message: errMsg,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user