accept all datatypes in put

This commit is contained in:
Sebastian Frank
2019-11-28 19:11:44 +01:00
parent 1c73d0736c
commit c2e158070f

View File

@@ -5,6 +5,8 @@ import (
"strconv"
"strings"
"github.com/davecgh/go-spew/spew"
"gitbase.de/gopackage/mgocrud"
"github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2"
@@ -355,9 +357,13 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
field := newMStruct.Field(i)
fieldT := newMStruct.Type().Field(i)
if (field.Kind() == reflect.Ptr || field.Kind() == reflect.Slice) &&
!field.IsNil() {
if fieldT.Anonymous && fieldT.Name == "Model" { // is embedded mgocrud.Model, so not in changes
continue
}
nilAble := (field.Kind() == reflect.Ptr || field.Kind() == reflect.Map || field.Kind() == reflect.Slice)
if (nilAble && !field.IsNil()) || !nilAble {
// apply naming conventions of mgo for changeset
tag := fieldT.Tag.Get("bson")
if tag == "" && !strings.Contains(string(fieldT.Tag), ":") {
@@ -378,7 +384,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
orgMStruct.Field(i).Set(field)
}
}
//spew.Dump(changes)
spew.Dump(changes)
//spew.Dump(orgM)
if err := validateObject(&Context{
@@ -391,7 +397,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
})
return
}
//spew.Dump(orgM)
err = mgocrud.UpdateDocument(db, orgM, changes)
if err != nil {
c.JSON(500, gin.H{