output stack in errors
This commit is contained in:
parent
641d96c837
commit
ca73fdecf2
135
handler.go
135
handler.go
@ -25,10 +25,7 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
if selectorStr != "" {
|
||||
err := bson.UnmarshalJSON([]byte(selectorStr), &selector)
|
||||
if err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": "select: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -38,10 +35,7 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
DB: db,
|
||||
}, m, selector)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": "select: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -51,10 +45,7 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
if err == mgo.ErrNotFound {
|
||||
status = 404
|
||||
}
|
||||
c.JSON(status, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(status, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -64,10 +55,7 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
DB: db,
|
||||
}, m, newM)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -101,10 +89,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
if filterStr != "" {
|
||||
err := bson.UnmarshalJSON([]byte(filterStr), &filter)
|
||||
if err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": "filter: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -114,10 +99,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
DB: db,
|
||||
}, m, filter)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": "filter: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -132,10 +114,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
if selectorStr != "" {
|
||||
err := bson.UnmarshalJSON([]byte(selectorStr), &selector)
|
||||
if err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": "select: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -146,10 +125,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
DB: db,
|
||||
}, m, selector)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": "select: " + err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -170,10 +146,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
if queryCount == "1" || strings.ToLower(queryCount) == "true" {
|
||||
count, err := mgocrud.ReadCollectionCount(db, m, validFilter)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
c.Header("X-Results-Count", strconv.Itoa(count))
|
||||
@ -199,10 +172,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
|
||||
err = mgocrud.ReadCollection(db, results, validFilter, validSelect, offset, limit, clearedSort, pipelineModFunc)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -212,10 +182,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
DB: db,
|
||||
}, m, results)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -235,10 +202,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
return func(c *gin.Context) {
|
||||
newM := newModelOf(m).(mgocrud.ModelInterface)
|
||||
if err := c.Bind(newM); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -251,21 +215,13 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
Context: c,
|
||||
DB: db,
|
||||
}, newM, nil); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
"apiContext": "validateObject",
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
err := mgocrud.CreateDocument(db, newM)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
"apiContext": "createDocument",
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -273,11 +229,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
readM.SetID(newM.GetID())
|
||||
err = mgocrud.ReadDocument(db, readM, nil)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
"apiContext": "readDocument",
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -286,11 +238,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
Context: c,
|
||||
DB: db,
|
||||
}, readM, nil); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
"apiContext": "savedObject",
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -300,10 +248,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
DB: db,
|
||||
}, m, readM)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -323,20 +268,14 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
if err == mgo.ErrNotFound {
|
||||
status = 404
|
||||
}
|
||||
c.JSON(status, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(status, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
newM := newModelOf(m).(mgocrud.ModelInterface)
|
||||
|
||||
if err := c.Bind(newM); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -344,7 +283,6 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
if newM.GetID() != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": "id not allowed in update",
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
return
|
||||
}
|
||||
@ -417,19 +355,13 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
Context: c,
|
||||
DB: db,
|
||||
}, orgM, changes); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
err = mgocrud.UpdateDocument(db, orgM, changes)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -437,10 +369,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
// reread from db
|
||||
newM, err = getDocument(c, db, orgM, nil)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -449,10 +378,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
Context: c,
|
||||
DB: db,
|
||||
}, newM, changes); err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(400, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -462,10 +388,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
DB: db,
|
||||
}, m, newM)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
@ -487,19 +410,13 @@ func (api *API) collectionDeleteHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
if err == mgo.ErrNotFound {
|
||||
status = 404
|
||||
}
|
||||
c.JSON(status, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(status, errorObject(err))
|
||||
return
|
||||
}
|
||||
|
||||
err = mgocrud.DeleteDocument(db, orgM)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{
|
||||
"error": err.Error(),
|
||||
"stack": string(debug.Stack()),
|
||||
})
|
||||
c.JSON(500, errorObject(err))
|
||||
}
|
||||
|
||||
c.JSON(200, gin.H{"message": "ok"})
|
||||
|
@ -12,6 +12,14 @@ import (
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
)
|
||||
|
||||
func errorObject(err error) bson.M {
|
||||
o := bson.M{"error": err.Error()}
|
||||
if e, ok := err.(*mgocrud.ErrorWithStack); ok {
|
||||
o["stack"] = e.Stack()
|
||||
}
|
||||
return o
|
||||
}
|
||||
|
||||
func modelTypeOf(m interface{}) reflect.Type {
|
||||
return reflect.TypeOf(
|
||||
reflect.ValueOf(m).Elem().Interface(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user