extended interface

This commit is contained in:
Sebastian Frank 2022-02-21 15:26:23 +01:00
parent 6834a79601
commit ede07bb49a
Signed by: apairon
GPG Key ID: A0E05A8199CE3F57
2 changed files with 22 additions and 4 deletions

24
mgo.go
View File

@ -36,8 +36,13 @@ func (c *MgoConnection) Close() {
}
type MgoSession struct {
session *mgo.Session
closed bool
connection *MgoConnection
session *mgo.Session
closed bool
}
func (s *MgoSession) Connection() Connection {
return s.connection
}
func (s *MgoSession) 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 {

View File

@ -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