Files
hk4e/gs/dao/player_dao.go
2022-12-19 13:40:04 +08:00

110 lines
2.7 KiB
Go

package dao
import (
"context"
"hk4e/gs/model"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
func (d *Dao) InsertPlayer(player *model.Player) error {
db := d.db.Collection("player")
_, err := db.InsertOne(context.TODO(), player)
return err
}
func (d *Dao) InsertPlayerList(playerList []*model.Player) error {
if len(playerList) == 0 {
return nil
}
db := d.db.Collection("player")
modelOperateList := make([]mongo.WriteModel, 0)
for _, player := range playerList {
modelOperate := mongo.NewInsertOneModel().SetDocument(player)
modelOperateList = append(modelOperateList, modelOperate)
}
_, err := db.BulkWrite(context.TODO(), modelOperateList)
return err
}
func (d *Dao) DeletePlayer(playerID uint32) error {
db := d.db.Collection("player")
_, err := db.DeleteOne(context.TODO(), bson.D{{"playerID", playerID}})
return err
}
func (d *Dao) DeletePlayerList(playerIDList []uint32) error {
if len(playerIDList) == 0 {
return nil
}
db := d.db.Collection("player")
modelOperateList := make([]mongo.WriteModel, 0)
for _, playerID := range playerIDList {
modelOperate := mongo.NewDeleteOneModel().SetFilter(bson.D{{"playerID", playerID}})
modelOperateList = append(modelOperateList, modelOperate)
}
_, err := db.BulkWrite(context.TODO(), modelOperateList)
return err
}
func (d *Dao) UpdatePlayer(player *model.Player) error {
db := d.db.Collection("player")
_, err := db.UpdateOne(
context.TODO(),
bson.D{{"playerID", player.PlayerID}},
bson.D{{"$set", player}},
)
return err
}
func (d *Dao) UpdatePlayerList(playerList []*model.Player) error {
if len(playerList) == 0 {
return nil
}
db := d.db.Collection("player")
modelOperateList := make([]mongo.WriteModel, 0)
for _, player := range playerList {
modelOperate := mongo.NewUpdateOneModel().SetFilter(bson.D{{"playerID", player.PlayerID}}).SetUpdate(bson.D{{"$set", player}})
modelOperateList = append(modelOperateList, modelOperate)
}
_, err := db.BulkWrite(context.TODO(), modelOperateList)
return err
}
func (d *Dao) QueryPlayerByID(playerID uint32) (*model.Player, error) {
db := d.db.Collection("player")
result := db.FindOne(
context.TODO(),
bson.D{{"playerID", playerID}},
)
item := new(model.Player)
err := result.Decode(item)
if err != nil {
return nil, err
}
return item, nil
}
func (d *Dao) QueryPlayerList() ([]*model.Player, error) {
db := d.db.Collection("player")
find, err := db.Find(
context.TODO(),
bson.D{},
)
if err != nil {
return nil, err
}
result := make([]*model.Player, 0)
for find.Next(context.TODO()) {
item := new(model.Player)
err = find.Decode(item)
if err != nil {
return nil, err
}
result = append(result, item)
}
return result, nil
}