// i2_bot – Instinct PokememBro Bot // Copyright (c) 2017 Vladimir "fat0troll" Hodakov package getters import ( "lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping" "time" ) // GetPlayerByID returns dbmapping.Player instance with given ID. func (g *Getters) GetPlayerByID(playerID int) (dbmapping.Player, bool) { playerRaw := dbmapping.Player{} err := c.Db.Get(&playerRaw, c.Db.Rebind("SELECT * FROM players WHERE id=?"), playerID) if err != nil { c.Log.Error(err.Error()) return playerRaw, false } return playerRaw, true } // GetOrCreatePlayer seeks for player in database via Telegram ID. // In case, when there is no player with such ID, new player will be created. func (g *Getters) GetOrCreatePlayer(telegramID int) (dbmapping.Player, bool) { playerRaw := dbmapping.Player{} err := c.Db.Get(&playerRaw, c.Db.Rebind("SELECT * FROM players WHERE telegram_id=?"), telegramID) if err != nil { c.Log.Error("Message user not found in database.") c.Log.Error(err.Error()) // Create "nobody" user playerRaw.TelegramID = telegramID playerRaw.LeagueID = 0 playerRaw.Status = "nobody" playerRaw.CreatedAt = time.Now().UTC() playerRaw.UpdatedAt = time.Now().UTC() _, err = c.Db.NamedExec("INSERT INTO players VALUES(NULL, :telegram_id, :league_id, :status, :created_at, :updated_at)", &playerRaw) if err != nil { c.Log.Error(err.Error()) return playerRaw, false } } else { c.Log.Debug("Message user found in database.") } return playerRaw, true } // PlayerBetterThan return true, if profile is more or equal powerful than // provided power level func (g *Getters) PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string) bool { var isBetter = false switch playerRaw.Status { case "owner": isBetter = true case "admin": if powerLevel != "owner" { isBetter = true } default: isBetter = false } return isBetter }