Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
98801edbc0
|
|||
|
7dd238342c
|
|||
|
115c288a0b
|
35
session.go
35
session.go
@@ -6,6 +6,10 @@ import (
|
|||||||
mgo "gopkg.in/mgo.v2"
|
mgo "gopkg.in/mgo.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrNotFound = errors.New("not found")
|
||||||
|
)
|
||||||
|
|
||||||
type Session struct {
|
type Session struct {
|
||||||
session *mgo.Session
|
session *mgo.Session
|
||||||
}
|
}
|
||||||
@@ -29,16 +33,21 @@ func NewSession(dial string) (*Session, error) {
|
|||||||
|
|
||||||
type Database struct {
|
type Database struct {
|
||||||
database *mgo.Database
|
database *mgo.Database
|
||||||
|
session *Session
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) DB(name string) *Database {
|
func (s *Session) DB(name string) *Database {
|
||||||
return &Database{database: s.session.DB(name)}
|
return &Database{database: s.session.DB(name), session: s}
|
||||||
}
|
}
|
||||||
|
|
||||||
type Collection struct {
|
type Collection struct {
|
||||||
collection *mgo.Collection
|
collection *mgo.Collection
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *Database) Session() *Session {
|
||||||
|
return db.session
|
||||||
|
}
|
||||||
|
|
||||||
func (db *Database) C(name string) *Collection {
|
func (db *Database) C(name string) *Collection {
|
||||||
return &Collection{collection: db.database.C(name)}
|
return &Collection{collection: db.database.C(name)}
|
||||||
}
|
}
|
||||||
@@ -109,7 +118,11 @@ func (q *Query) Select(selector interface{}) *Query {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (q *Query) One(result interface{}) error {
|
func (q *Query) One(result interface{}) error {
|
||||||
return q.query.One(result)
|
err := q.query.One(result)
|
||||||
|
if err == mgo.ErrNotFound {
|
||||||
|
err = ErrNotFound
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Query) Sort(fields ...string) *Query {
|
func (q *Query) Sort(fields ...string) *Query {
|
||||||
@@ -128,11 +141,19 @@ func (q *Query) Limit(n int) *Query {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (q *Query) All(result interface{}) error {
|
func (q *Query) All(result interface{}) error {
|
||||||
return q.query.All(result)
|
err := q.query.All(result)
|
||||||
|
if err == mgo.ErrNotFound {
|
||||||
|
err = ErrNotFound
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Query) Count() (int, error) {
|
func (q *Query) Count() (int, error) {
|
||||||
return q.query.Count()
|
c, err := q.query.Count()
|
||||||
|
if err == mgo.ErrNotFound {
|
||||||
|
err = ErrNotFound
|
||||||
|
}
|
||||||
|
return c, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type Index struct {
|
type Index struct {
|
||||||
@@ -155,7 +176,11 @@ type Pipe struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pipe) All(result interface{}) error {
|
func (p *Pipe) All(result interface{}) error {
|
||||||
return p.pipe.All(result)
|
err := p.pipe.All(result)
|
||||||
|
if err == mgo.ErrNotFound {
|
||||||
|
err = ErrNotFound
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Collection) Pipe(pipeline interface{}) *Pipe {
|
func (c *Collection) Pipe(pipeline interface{}) *Pipe {
|
||||||
|
|||||||
Reference in New Issue
Block a user