extended interface
This commit is contained in:
parent
6834a79601
commit
ede07bb49a
20
mgo.go
20
mgo.go
@ -36,10 +36,15 @@ func (c *MgoConnection) Close() {
|
||||
}
|
||||
|
||||
type MgoSession struct {
|
||||
connection *MgoConnection
|
||||
session *mgo.Session
|
||||
closed bool
|
||||
}
|
||||
|
||||
func (s *MgoSession) Connection() Connection {
|
||||
return s.connection
|
||||
}
|
||||
|
||||
func (s *MgoSession) Close() {
|
||||
if !s.closed {
|
||||
s.session.Close()
|
||||
@ -49,7 +54,10 @@ func (s *MgoSession) Close() {
|
||||
}
|
||||
|
||||
func (c *MgoConnection) NewSession() Session {
|
||||
s := &MgoSession{session: c.connection.Copy()}
|
||||
s := &MgoSession{
|
||||
connection: c,
|
||||
session: c.connection.Copy(),
|
||||
}
|
||||
runtime.SetFinalizer(s, func(s *MgoSession) {
|
||||
if !s.closed {
|
||||
s.Close()
|
||||
@ -68,15 +76,23 @@ func (s *MgoSession) DB(name string) Database {
|
||||
}
|
||||
|
||||
type MgoCollection struct {
|
||||
database *MgoDatabase
|
||||
collection *mgo.Collection
|
||||
}
|
||||
|
||||
func (c *MgoCollection) DB() Database {
|
||||
return c.database
|
||||
}
|
||||
|
||||
func (db *MgoDatabase) Session() Session {
|
||||
return db.session
|
||||
}
|
||||
|
||||
func (db *MgoDatabase) C(name string) Collection {
|
||||
return &MgoCollection{collection: db.database.C(name)}
|
||||
return &MgoCollection{
|
||||
database: db,
|
||||
collection: db.database.C(name),
|
||||
}
|
||||
}
|
||||
|
||||
func (db *MgoDatabase) Name() string {
|
||||
|
2
types.go
2
types.go
@ -16,6 +16,7 @@ type Connection interface {
|
||||
}
|
||||
|
||||
type Session interface {
|
||||
Connection() Connection
|
||||
Close()
|
||||
DB(name string) Database
|
||||
}
|
||||
@ -36,6 +37,7 @@ type Database interface {
|
||||
}
|
||||
|
||||
type Collection interface {
|
||||
DB() Database
|
||||
Insert(docs ...interface{}) error
|
||||
UpdateId(id interface{}, update interface{}) error
|
||||
RemoveId(id interface{}) error
|
||||
|
Loading…
Reference in New Issue
Block a user