first coomit

This commit is contained in:
2020-08-10 12:58:54 +08:00
commit 5c00a2534b
16 changed files with 307 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
package persistence
import "gopkg.in/mgo.v2/bson"
type Player struct{
ID bson.ObjectId `bson:"_id"`
Name string
}
+59
View File
@@ -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()
}
+9
View File
@@ -0,0 +1,9 @@
package persistence
type DatabaseHandler interface {
AddPlayer(Player)([]byte,error)
FindPlayer([]byte)(Player,error)
FindPlayerByName(string)(Player,error)
FindAllAvailablePlayers()([]Player,error)
}