game_sync/dbproxy/svc/u_gamedata.go

71 lines
1.5 KiB
Go

package svc
import (
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
GameKVDataDBName = "user"
GameKVDataCollName = "user_gamekvdata"
)
func GameKVDatasCollection() *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(mongo.G_P, GameKVDataDBName)
if s != nil {
c, first := s.DB().C(GameKVDataCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"key"}, Unique: true, Background: true, Sparse: true})
}
return c
}
return nil
}
type GameKVDataSvc struct {
}
func (svc *GameKVDataSvc) GetAllGameKVData(dummy struct{}, ret *[]*model.GameKVData) error {
c := GameKVDatasCollection()
if c != nil {
err := c.Find(nil).All(ret)
if err != nil {
logger.Logger.Trace("GetAllGameKVData err:", err)
return err
}
}
return nil
}
func (svc *GameKVDataSvc) UptGameKVData(args *model.GameKVData, ret *bool) error {
c := GameKVDatasCollection()
if c != nil {
info, err := c.Upsert(bson.M{"key": args.Key}, args)
logger.Logger.Trace("UptGameKVData :", info, err)
return err
}
*ret = true
return nil
}
func (svc *GameKVDataSvc) GetGameKVData(args *model.GameKVData, ret *model.GameKVData) error {
c := GameKVDatasCollection()
if c != nil {
err := c.Find(bson.M{"key": args.Key}).One(ret)
logger.Logger.Tracef("GetGameKVData: %#v %v", ret, err)
return err
}
return nil
}
var _GameKVDataSvc = &GameKVDataSvc{}
func init() {
rpc.Register(_GameKVDataSvc)
}