first coomit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package mongolayer
|
||||
|
||||
import (
|
||||
"gopkg.in/mgo.v2"
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
"nbarest/lib/persistence"
|
||||
)
|
||||
|
||||
const(
|
||||
DB="myplayers"
|
||||
PLAYER="players"
|
||||
)
|
||||
|
||||
func NewMongoDBLayer(connection string)(persistence.DatabaseHandler,error){
|
||||
s,err:=mgo.Dial(connection)
|
||||
if err!=nil{
|
||||
panic(err)
|
||||
}
|
||||
return &MongoDBLayer{session: s},err
|
||||
}
|
||||
|
||||
type MongoDBLayer struct {
|
||||
session *mgo.Session
|
||||
}
|
||||
|
||||
func (m *MongoDBLayer) AddPlayer(p persistence.Player)([]byte,error){
|
||||
s:=m.getFreshSession()
|
||||
defer s.Close()
|
||||
if !p.ID.Valid(){
|
||||
p.ID=bson.NewObjectId()
|
||||
}
|
||||
return []byte(p.ID),s.DB(DB).C(PLAYER).Insert(p)
|
||||
|
||||
}
|
||||
func (m *MongoDBLayer) FindPlayer(id []byte)(persistence.Player,error){
|
||||
s:=m.getFreshSession()
|
||||
defer s.Close()
|
||||
p:= persistence.Player{}
|
||||
err:=s.DB(DB).C(PLAYER).FindId(bson.ObjectId(id)).One(&p)
|
||||
return p,err
|
||||
}
|
||||
func (m *MongoDBLayer) FindPlayerByName(name string)(persistence.Player,error){
|
||||
s:=m.getFreshSession()
|
||||
defer s.Close()
|
||||
p:= persistence.Player{}
|
||||
err:=s.DB(DB).C(PLAYER).Find(bson.M{"name": name}).One(&p)
|
||||
return p,err
|
||||
}
|
||||
func (m*MongoDBLayer) FindAllAvailablePlayers()([]persistence.Player,error){
|
||||
s:=m.getFreshSession()
|
||||
defer s.Close()
|
||||
ps:=[]persistence.Player{}
|
||||
err:=s.DB(DB).C(PLAYER).Find(nil).All(&ps)
|
||||
return ps,err
|
||||
}
|
||||
|
||||
func (m *MongoDBLayer) getFreshSession() *mgo.Session{
|
||||
return m.session.Copy()
|
||||
}
|
||||
Reference in New Issue
Block a user