proccessResults also for put/post

This commit is contained in:
Sebastian Frank
2019-11-30 14:08:42 +01:00
parent c2e158070f
commit 7f98182e94
2 changed files with 56 additions and 33 deletions

View File

@@ -5,8 +5,6 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/davecgh/go-spew/spew"
"gitbase.de/gopackage/mgocrud" "gitbase.de/gopackage/mgocrud"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2" mgo "gopkg.in/mgo.v2"
@@ -55,22 +53,17 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
return return
} }
if i, ok := m.(interface { err = processResults(&Context{
ProcessResults(*Context, interface{}) error
}); ok {
// custom select manipulation
err := i.ProcessResults(&Context{
API: api, API: api,
Context: c, Context: c,
DB: db, DB: db,
}, newM) }, m, newM)
if err != nil { if err != nil {
c.JSON(500, gin.H{ c.JSON(500, gin.H{
"error": err.Error(), "error": err.Error(),
}) })
return return
} }
}
c.JSON(200, newM) c.JSON(200, newM)
} }
@@ -200,22 +193,17 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
return return
} }
if i, ok := m.(interface { err = processResults(&Context{
ProcessResults(*Context, interface{}) error
}); ok {
// custom select manipulation
err := i.ProcessResults(&Context{
API: api, API: api,
Context: c, Context: c,
DB: db, DB: db,
}, results) }, m, results)
if err != nil { if err != nil {
c.JSON(500, gin.H{ c.JSON(500, gin.H{
"error": err.Error(), "error": err.Error(),
}) })
return return
} }
}
if setIdent { if setIdent {
xE := x.Elem() // results slice (of pointer to slice) xE := x.Elem() // results slice (of pointer to slice)
@@ -287,6 +275,18 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
return return
} }
err = processResults(&Context{
API: api,
Context: c,
DB: db,
}, m, readM)
if err != nil {
c.JSON(500, gin.H{
"error": err.Error(),
})
return
}
c.JSON(200, readM) c.JSON(200, readM)
} }
} }
@@ -384,7 +384,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
orgMStruct.Field(i).Set(field) orgMStruct.Field(i).Set(field)
} }
} }
spew.Dump(changes) //spew.Dump(changes)
//spew.Dump(orgM) //spew.Dump(orgM)
if err := validateObject(&Context{ if err := validateObject(&Context{
@@ -427,6 +427,18 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
return return
} }
err = processResults(&Context{
API: api,
Context: c,
DB: db,
}, m, newM)
if err != nil {
c.JSON(500, gin.H{
"error": err.Error(),
})
return
}
c.JSON(200, newM) c.JSON(200, newM)
} }

View File

@@ -83,3 +83,14 @@ func savedObject(c *Context, m mgocrud.ModelInterface, changes bson.M) error {
return nil return nil
} }
func processResults(c *Context, m mgocrud.ModelInterface, results interface{}) error {
if i, ok := m.(interface {
ProcessResults(*Context, interface{}) error
}); ok {
// custom select manipulation
err := i.ProcessResults(c, results)
return err
}
return nil
}