Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
0a966a637b
|
|||
|
b59be1a9d7
|
|||
|
d116f5d938
|
|||
|
2b4f13f807
|
66
dbinterface.go
Normal file
66
dbinterface.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package mgoapi
|
||||
|
||||
import (
|
||||
"gitbase.de/gopackage/mgocrud/v2"
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
)
|
||||
|
||||
type Connection interface {
|
||||
Close()
|
||||
NewSession() Session
|
||||
}
|
||||
|
||||
type Session interface {
|
||||
Close()
|
||||
DB(name string) Database
|
||||
}
|
||||
|
||||
type Database interface {
|
||||
Session() Session
|
||||
C(name string) Collection
|
||||
Name() string
|
||||
EnsureIndex(m mgocrud.ModelInterface) error
|
||||
ValidateObject(m mgocrud.ModelInterface, changes bson.M) error
|
||||
ReadDocument(m mgocrud.ModelInterface, selector bson.M) error
|
||||
CreateDocument(m mgocrud.ModelInterface) error
|
||||
ReadCollection(results interface{}, filter bson.M, selector bson.M, offset int, limit int, sort []string, pipelineModifier mgocrud.PipelineModifierFunction) error
|
||||
ReadCollectionCount(m mgocrud.ModelInterface, filter bson.M) (count int, err error)
|
||||
UpdateDocument(m mgocrud.ModelInterface, changes bson.M) error
|
||||
UpsertDocument(m mgocrud.ModelInterface, changes bson.M) error
|
||||
DeleteDocument(m mgocrud.ModelInterface) error
|
||||
DeleteDocuments(m mgocrud.ModelInterface, filter bson.M) (removed int, err error)
|
||||
}
|
||||
|
||||
type Collection interface {
|
||||
Insert(docs ...interface{}) error
|
||||
UpdateId(id interface{}, update interface{}) error
|
||||
RemoveId(id interface{}) error
|
||||
Upsert(selector interface{}, update interface{}) (ChangeInfo, error)
|
||||
RemoveAll(filter interface{}) (ChangeInfo, error)
|
||||
FindId(id interface{}) Query
|
||||
Find(query interface{}) Query
|
||||
EnsureIndex(index Index) error
|
||||
Pipe(pipeline interface{}) Pipe
|
||||
}
|
||||
|
||||
type ChangeInfo interface {
|
||||
Matched() int
|
||||
Removed() int
|
||||
Updated() int
|
||||
}
|
||||
|
||||
type Query interface {
|
||||
Select(selector interface{}) Query
|
||||
One(result interface{}) error
|
||||
Sort(fields ...string) Query
|
||||
Skip(n int) Query
|
||||
Limit(n int) Query
|
||||
All(result interface{}) error
|
||||
Count() (int, error)
|
||||
}
|
||||
|
||||
type Index interface{}
|
||||
|
||||
type Pipe interface {
|
||||
All(result interface{}) error
|
||||
}
|
||||
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module gitbase.de/gopackage/mgoapi/v2
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.3
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.8
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
||||
github.com/gin-gonic/gin v1.6.3
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,5 +1,5 @@
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.3 h1:uWNi5YX9eo1tdys3XZGKVvEjQ7fv14rQ3PNgNlR9XDs=
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.3/go.mod h1:eAIqxjo60/nP/S+YA25SBLQZ98WUrHwpvjE7Zl+ewTM=
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.8 h1:129q3/5c4kFB0WnVZZXd+jhpR5FYjYjzmcoZxLPPjiY=
|
||||
gitbase.de/gopackage/mgocrud/v2 v2.0.8/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.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
||||
22
handler.go
22
handler.go
@@ -15,7 +15,7 @@ import (
|
||||
func (api *API) collectionGetOneHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
@@ -79,7 +79,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
|
||||
results := x.Interface()
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
@@ -143,7 +143,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
|
||||
queryCount := c.Query("count")
|
||||
if queryCount == "1" || strings.ToLower(queryCount) == "true" {
|
||||
count, err := mgocrud.ReadCollectionCount(db, m, validFilter)
|
||||
count, err := db.ReadCollectionCount(m, validFilter)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
@@ -169,7 +169,7 @@ func (api *API) collectionGetHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
err = mgocrud.ReadCollection(db, results, validFilter, validSelect, offset, limit, clearedSort, pipelineModFunc)
|
||||
err = db.ReadCollection(results, validFilter, validSelect, offset, limit, clearedSort, pipelineModFunc)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
@@ -205,7 +205,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
return
|
||||
}
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
@@ -218,7 +218,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
return
|
||||
}
|
||||
|
||||
err := mgocrud.CreateDocument(db, newM)
|
||||
err := db.CreateDocument(newM)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
@@ -226,7 +226,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
|
||||
readM := newModelOf(newM).(mgocrud.ModelInterface)
|
||||
readM.SetID(newM.GetID())
|
||||
err = mgocrud.ReadDocument(db, readM, nil)
|
||||
err = db.ReadDocument(readM, nil)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
@@ -257,7 +257,7 @@ func (api *API) collectionPostHandler(m mgocrud.ModelInterface) gin.HandlerFunc
|
||||
|
||||
func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
@@ -358,7 +358,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
err = mgocrud.UpdateDocument(db, orgM, changes)
|
||||
err = db.UpdateDocument(orgM, changes)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
return
|
||||
@@ -399,7 +399,7 @@ func (api *API) collectionPutHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
func (api *API) collectionDeleteHandler(m mgocrud.ModelInterface) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
@@ -413,7 +413,7 @@ func (api *API) collectionDeleteHandler(m mgocrud.ModelInterface) gin.HandlerFun
|
||||
return
|
||||
}
|
||||
|
||||
err = mgocrud.DeleteDocument(db, orgM)
|
||||
err = db.DeleteDocument(orgM)
|
||||
if err != nil {
|
||||
c.JSON(500, errorObject(err))
|
||||
}
|
||||
|
||||
@@ -154,14 +154,14 @@ func getModelMeta(m mgocrud.ModelInterface) []map[string]interface{} {
|
||||
return getStructMeta(modelType, dontRecurse)
|
||||
}
|
||||
|
||||
func getDocument(c *gin.Context, db *mgocrud.Database, m mgocrud.ModelInterface, selector bson.M) (mgocrud.ModelInterface, error) {
|
||||
func getDocument(c *gin.Context, db Database, m mgocrud.ModelInterface, selector bson.M) (mgocrud.ModelInterface, error) {
|
||||
objectID, err := string2ObjectID(c.Param("id"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newM := newModelOf(m).(mgocrud.ModelInterface)
|
||||
newM.SetID(objectID)
|
||||
err = mgocrud.ReadDocument(db, newM, selector)
|
||||
err = db.ReadDocument(newM, selector)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
2
hooks.go
2
hooks.go
@@ -71,7 +71,7 @@ func validateObject(c *Context, m mgocrud.ModelInterface, changes bson.M) error
|
||||
}
|
||||
}
|
||||
|
||||
return mgocrud.ValidateObject(c.DB, m, changes)
|
||||
return c.DB.ValidateObject(m, changes)
|
||||
}
|
||||
|
||||
func savedObject(c *Context, m mgocrud.ModelInterface, changes bson.M) error {
|
||||
|
||||
5
login.go
5
login.go
@@ -5,7 +5,6 @@ import (
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"gitbase.de/gopackage/mgocrud/v2"
|
||||
jwt "github.com/dgrijalva/jwt-go"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -13,7 +12,7 @@ import (
|
||||
|
||||
// LoginModel is interface for modules which can be used for the login route
|
||||
type LoginModel interface {
|
||||
LoginCheck(db *mgocrud.Database) (tokenData interface{}, err error)
|
||||
LoginCheck(db Database) (tokenData interface{}, err error)
|
||||
LoginResponse(token string) (interface{}, error)
|
||||
}
|
||||
|
||||
@@ -27,7 +26,7 @@ func (api *API) loginPostHandler(m LoginModel) func(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
|
||||
16
register.go
16
register.go
@@ -7,7 +7,7 @@ import (
|
||||
|
||||
// API is wrapper for one RouterGroup and mgo DB
|
||||
type API struct {
|
||||
DBSession *mgocrud.Session
|
||||
DBConnection Connection
|
||||
DBName string
|
||||
routerGroup *gin.RouterGroup
|
||||
jwtSecret []byte
|
||||
@@ -18,15 +18,15 @@ type API struct {
|
||||
type Context struct {
|
||||
*gin.Context
|
||||
API *API
|
||||
DB *mgocrud.Database
|
||||
DB Database
|
||||
}
|
||||
|
||||
// New returns new instance of the API
|
||||
func New(session *mgocrud.Session, dbname string, routerGroup *gin.RouterGroup) *API {
|
||||
func New(connection Connection, dbname string, routerGroup *gin.RouterGroup) *API {
|
||||
return &API{
|
||||
DBSession: session,
|
||||
DBName: dbname,
|
||||
routerGroup: routerGroup,
|
||||
DBConnection: connection,
|
||||
DBName: dbname,
|
||||
routerGroup: routerGroup,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,11 +37,11 @@ func (api *API) RegisterModel(m mgocrud.ModelInterface) {
|
||||
|
||||
modelRegistry = append(modelRegistry, m)
|
||||
|
||||
session := api.DBSession.Copy()
|
||||
session := api.DBConnection.NewSession()
|
||||
defer session.Close()
|
||||
db := session.DB(api.DBName)
|
||||
|
||||
err := mgocrud.EnsureIndex(db, m)
|
||||
err := db.EnsureIndex(m)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user