game_sync/dbproxy/svc/l_apilog.go

52 lines
1.1 KiB
Go

package svc
import (
"net/rpc"
"time"
"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"
)
func APILogsCollection() *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetGlobal(model.APILogDBName)
if s != nil {
c_apilogrec, first := s.DB().C(model.APILogCollName)
if first {
c_apilogrec.EnsureIndex(mgo.Index{Key: []string{"path"}, Background: true, Sparse: true})
c_apilogrec.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true})
}
return c_apilogrec
}
return nil
}
type APILogSvc struct {
}
func (svc *APILogSvc) InsertAPILog(log *model.APILog, ret *bool) (err error) {
clog := APILogsCollection()
if clog == nil {
return
}
err = clog.Insert(log)
if err != nil {
logger.Logger.Warn("InsertAPILog error:", err)
return
}
*ret = true
return
}
func (svc *APILogSvc) RemoveAPILog(ts int64, chged **mgo.ChangeInfo) (err error) {
*chged, err = APILogsCollection().RemoveAll(bson.M{"time": bson.M{"$lte": time.Unix(ts, 0)}})
return
}
func init() {
rpc.Register(new(APILogSvc))
}