/
mgo.go
36 lines (28 loc) · 861 Bytes
/
mgo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package models
import (
"gopkg.in/mgo.v2"
)
type MgoCollection interface {
Find(query interface{}) MgoQuery
RemoveAll(selector interface{}) (*mgo.ChangeInfo, error)
Upsert(selector interface{}, update interface{}) (*mgo.ChangeInfo, error)
}
type DefaultMgoCollection struct {
col *mgo.Collection
}
func NewMgoCollection(c *mgo.Collection) MgoCollection {
return &DefaultMgoCollection{c}
}
func (c *DefaultMgoCollection) Find(query interface{}) MgoQuery {
return c.col.Find(query)
}
func (c *DefaultMgoCollection) RemoveAll(selector interface{}) (*mgo.ChangeInfo, error) {
return c.col.RemoveAll(selector)
}
func (c *DefaultMgoCollection) Upsert(selector interface{}, update interface{}) (info *mgo.ChangeInfo, err error) {
return c.col.Upsert(selector, update)
}
type MgoQuery interface {
Count() (int, error)
One(result interface{}) error
}