catbase/plugins/velouremon/player_db.go

73 lines
1.6 KiB
Go
Raw Normal View History

2019-07-07 01:56:26 +00:00
package velouremon
import (
"github.com/rs/zerolog/log"
"github.com/velour/catbase/bot/user"
)
func (vp *VelouremonPlugin) loadPlayers() error {
rows, err := vp.db.Queryx("select * from velouremon_players;")
if err != nil {
log.Error().Err(err)
return err
}
defer rows.Close()
for rows.Next() {
player := &Player{}
2019-07-08 00:28:06 +00:00
err := rows.StructScan(player)
2019-07-07 01:56:26 +00:00
if err != nil {
log.Error().Err(err)
return err
}
vp.players = append(vp.players, player)
player.Creatures, err = vp.loadCreaturesForPlayer(player)
if err != nil {
log.Error().Err(err)
return err
}
}
return nil
}
func (vp *VelouremonPlugin) addPlayer(p *user.User) (*Player, error) {
player := &Player{
ChatID: p.ID,
Name: p.Name,
2019-07-08 00:28:06 +00:00
Health: 255,
2019-07-07 01:56:26 +00:00
Experience: 0,
Creatures: []*Creature{},
}
res, err := vp.db.Exec(`insert into velouremon_players (chatid, player, health, experience) values (?, ?, ?, ?);`,
player.ChatID, player.Name, player.Health, player.Experience)
if err != nil {
log.Error().Err(err)
return nil, err
}
id, err := res.LastInsertId()
if err != nil {
log.Error().Err(err)
return nil, err
}
player.ID = id
vp.players = append(vp.players, player)
return player, nil
}
func (vp *VelouremonPlugin) savePlayer(player *Player) error {
_, err := vp.db.Exec(`update velouremon_players set health = ?, experience = ? where id = ?;`, player.ID, player.Health, player.Experience)
if err != nil {
log.Error().Err(err)
return err
}
err = vp.savePlayerCreatures(player)
if err != nil {
log.Error().Err(err)
return err
}
return nil
}