1 Commits

Author SHA1 Message Date
119243297e using mgocrud interfaces instead of mgo 2022-02-09 15:55:43 +01:00
8 changed files with 22 additions and 27 deletions

View File

@@ -162,7 +162,7 @@ func _validateFilter(structT reflect.Type, f bson.M, checkValues bool) (bson.M,
valT := reflect.TypeOf(val) valT := reflect.TypeOf(val)
if valT.Kind() == reflect.Slice { if valT.Kind() == reflect.Slice {
l := len(val.([]interface{})) l := len(val.([]interface{}))
newVal = make([]interface{}, l, l) newVal = make([]interface{}, l)
for i := 0; i < l; i++ { for i := 0; i < l; i++ {
var err error var err error
switch valF := val.([]interface{})[i].(type) { switch valF := val.([]interface{})[i].(type) {

4
go.mod
View File

@@ -1,9 +1,9 @@
module gitbase.de/gopackage/mgoapi module gitbase.de/gopackage/mgoapi/v2
go 1.16 go 1.16
require ( require (
gitbase.de/gopackage/mgocrud v0.0.0-20210301125326-161e3b46fb99 gitbase.de/gopackage/mgocrud/v2 v2.0.3
github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/gin-gonic/gin v1.6.3 github.com/gin-gonic/gin v1.6.3
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22

4
go.sum
View File

@@ -1,5 +1,5 @@
gitbase.de/gopackage/mgocrud v0.0.0-20210301125326-161e3b46fb99 h1:2PovCTzQpTTmgxKdO915G+JmQPFYY6NKRZMKxw9jSYE= gitbase.de/gopackage/mgocrud/v2 v2.0.3 h1:uWNi5YX9eo1tdys3XZGKVvEjQ7fv14rQ3PNgNlR9XDs=
gitbase.de/gopackage/mgocrud v0.0.0-20210301125326-161e3b46fb99/go.mod h1:obb5Piqrb7N1VnmPp8HHJsAcOqIn9l04ibvH6I2qkhg= gitbase.de/gopackage/mgocrud/v2 v2.0.3/go.mod h1:eAIqxjo60/nP/S+YA25SBLQZ98WUrHwpvjE7Zl+ewTM=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

View File

@@ -7,9 +7,8 @@ import (
"runtime/debug" "runtime/debug"
"gitbase.de/gopackage/mgocrud" "gitbase.de/gopackage/mgocrud/v2"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
@@ -42,7 +41,7 @@ func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFun
newM, err := getDocument(c, db, m, validSelect) newM, err := getDocument(c, db, m, validSelect)
if err != nil { if err != nil {
status := 500 status := 500
if err == mgo.ErrNotFound { if err == mgocrud.ErrNotFound {
status = 404 status = 404
} }
c.JSON(status, errorObject(err)) c.JSON(status, errorObject(err))
@@ -265,7 +264,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
orgM, err := getDocument(c, db, m, nil) orgM, err := getDocument(c, db, m, nil)
if err != nil { if err != nil {
status := 500 status := 500
if err == mgo.ErrNotFound { if err == mgocrud.ErrNotFound {
status = 404 status = 404
} }
c.JSON(status, errorObject(err)) c.JSON(status, errorObject(err))
@@ -407,7 +406,7 @@ func (api *API) collectionDeleteHandler(m mgocrud.ModelInterface) gin.HandlerFun
orgM, err := getDocument(c, db, m, bson.M{"_id": 1}) orgM, err := getDocument(c, db, m, bson.M{"_id": 1})
if err != nil { if err != nil {
status := 500 status := 500
if err == mgo.ErrNotFound { if err == mgocrud.ErrNotFound {
status = 404 status = 404
} }
c.JSON(status, errorObject(err)) c.JSON(status, errorObject(err))

View File

@@ -6,9 +6,8 @@ import (
"regexp" "regexp"
"strings" "strings"
"gitbase.de/gopackage/mgocrud" "gitbase.de/gopackage/mgocrud/v2"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
@@ -41,7 +40,7 @@ func string2ObjectID(id string) (objectID *bson.ObjectId, err error) {
case error: case error:
err = x err = x
default: default:
err = errors.New("Unknown panic in: string2ObjectID") err = errors.New("unknown panic in: string2ObjectID")
} }
} }
}() }()
@@ -72,9 +71,7 @@ func getStructMeta(s reflect.Type, dontRecurse map[string]bool) []map[string]int
if f.Anonymous { if f.Anonymous {
// embed directly // embed directly
embed := getStructMeta(_type, dontRecurse) embed := getStructMeta(_type, dontRecurse)
for _, e := range embed { meta = append(meta, embed...)
meta = append(meta, e)
}
} else { } else {
fMeta := make(map[string]interface{}) fMeta := make(map[string]interface{})
@@ -89,7 +86,7 @@ func getStructMeta(s reflect.Type, dontRecurse map[string]bool) []map[string]int
fType = _type.String() fType = _type.String()
} }
//fType = strings.Replace(fType, "*", "", -1) //fType = strings.Replace(fType, "*", "", -1)
fType = regexp.MustCompile("\\*[a-zA-Z0-9]*\\.?").ReplaceAllString(fType, "") fType = regexp.MustCompile(`\*[a-zA-Z0-9]*\.?`).ReplaceAllString(fType, "")
fMeta["type"] = fType fMeta["type"] = fType
kind = _type.Kind() kind = _type.Kind()
fMeta["kind"] = kind.String() fMeta["kind"] = kind.String()
@@ -157,7 +154,7 @@ func getModelMeta(m mgocrud.ModelInterface) []map[string]interface{} {
return getStructMeta(modelType, dontRecurse) return getStructMeta(modelType, dontRecurse)
} }
func getDocument(c *gin.Context, db *mgo.Database, m mgocrud.ModelInterface, selector bson.M) (mgocrud.ModelInterface, error) { func getDocument(c *gin.Context, db *mgocrud.Database, m mgocrud.ModelInterface, selector bson.M) (mgocrud.ModelInterface, error) {
objectID, err := string2ObjectID(c.Param("id")) objectID, err := string2ObjectID(c.Param("id"))
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"reflect" "reflect"
"gitbase.de/gopackage/mgocrud" "gitbase.de/gopackage/mgocrud/v2"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )

View File

@@ -5,15 +5,15 @@ import (
"reflect" "reflect"
"time" "time"
"gitbase.de/gopackage/mgocrud/v2"
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2"
) )
// LoginModel is interface for modules which can be used for the login route // LoginModel is interface for modules which can be used for the login route
type LoginModel interface { type LoginModel interface {
LoginCheck(db *mgo.Database) (tokenData interface{}, err error) LoginCheck(db *mgocrud.Database) (tokenData interface{}, err error)
LoginResponse(token string) (interface{}, error) LoginResponse(token string) (interface{}, error)
} }

View File

@@ -1,14 +1,13 @@
package mgoapi package mgoapi
import ( import (
"gitbase.de/gopackage/mgocrud" "gitbase.de/gopackage/mgocrud/v2"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
mgo "gopkg.in/mgo.v2"
) )
// API is wrapper for one RouterGroup and mgo DB // API is wrapper for one RouterGroup and mgo DB
type API struct { type API struct {
DBSession *mgo.Session DBSession *mgocrud.Session
DBName string DBName string
routerGroup *gin.RouterGroup routerGroup *gin.RouterGroup
jwtSecret []byte jwtSecret []byte
@@ -19,11 +18,11 @@ type API struct {
type Context struct { type Context struct {
*gin.Context *gin.Context
API *API API *API
DB *mgo.Database DB *mgocrud.Database
} }
// New returns new instance of the API // New returns new instance of the API
func New(session *mgo.Session, dbname string, routerGroup *gin.RouterGroup) *API { func New(session *mgocrud.Session, dbname string, routerGroup *gin.RouterGroup) *API {
return &API{ return &API{
DBSession: session, DBSession: session,
DBName: dbname, DBName: dbname,
@@ -31,7 +30,7 @@ func New(session *mgo.Session, dbname string, routerGroup *gin.RouterGroup) *API
} }
} }
var modelRegistry = make([]mgocrud.ModelInterface, 0, 0) var modelRegistry = make([]mgocrud.ModelInterface, 0)
// RegisterModel setups gin routes for model GET, POST, PUT and DELETE // RegisterModel setups gin routes for model GET, POST, PUT and DELETE
func (api *API) RegisterModel(m mgocrud.ModelInterface) { func (api *API) RegisterModel(m mgocrud.ModelInterface) {