This commit is contained in:
69
dataBase.go
69
dataBase.go
@ -68,7 +68,11 @@ type Player struct {
|
||||
level int
|
||||
}
|
||||
|
||||
func fetchPlayer(r *sql.Rows, p *Player) error {
|
||||
type scannable interface {
|
||||
Scan(dest ...interface{}) error
|
||||
}
|
||||
|
||||
func fetchPlayer(r scannable, p *Player) error {
|
||||
var (
|
||||
err error
|
||||
lastOnline string
|
||||
@ -119,73 +123,56 @@ func (db *dbLayer) getPlayers(ctx context.Context) ([]Player, error) {
|
||||
func (db *dbLayer) getPlayerByID(ctx context.Context, id string) (*Player, error) {
|
||||
query := "SELECT id, name, last_login, online_duration, deaths, level FROM players WHERE id = $1"
|
||||
|
||||
rows, err := db.db.QueryContext(ctx, query, id)
|
||||
if err != nil {
|
||||
row := db.db.QueryRowContext(ctx, query, id)
|
||||
if err := row.Err(); err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to run db query [%s]", query)
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var p Player
|
||||
|
||||
if rows.Next() {
|
||||
var p Player
|
||||
|
||||
err = fetchPlayer(rows, &p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &p, nil
|
||||
err := fetchPlayer(row, &p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return &p, nil
|
||||
|
||||
}
|
||||
|
||||
func (db *dbLayer) getPlayerByName(ctx context.Context, name string) (*Player, error) {
|
||||
query := "SELECT id, name, last_login, online_duration, deaths, level FROM players WHERE name = $1 LIMIT 1"
|
||||
|
||||
rows, err := db.db.QueryContext(ctx, query, name)
|
||||
if err != nil {
|
||||
row := db.db.QueryRowContext(ctx, query, name)
|
||||
if err := row.Err(); err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to run db query [%s]", query)
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var p Player
|
||||
|
||||
if rows.Next() {
|
||||
var p Player
|
||||
|
||||
err = fetchPlayer(rows, &p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &p, nil
|
||||
err := fetchPlayer(row, &p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return &p, nil
|
||||
}
|
||||
|
||||
func (db *dbLayer) getKillsByOPlayerID(ctx context.Context, playerID string) (int, error) {
|
||||
func (db *dbLayer) getKillsByPlayerID(ctx context.Context, playerID string) (int, error) {
|
||||
query := "SELECT SUM(count) FROM killings WHERE player_id = $1 GROUP BY player_id"
|
||||
|
||||
rows, err := db.db.QueryContext(ctx, query, playerID)
|
||||
if err != nil {
|
||||
row := db.db.QueryRowContext(ctx, query, playerID)
|
||||
if err := row.Err(); err != nil {
|
||||
return 0, errors.Wrapf(err, "Failed to run db query [%s]", query)
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var killsNum int
|
||||
|
||||
if rows.Next() {
|
||||
var killsNum int
|
||||
|
||||
err = rows.Scan(&killsNum)
|
||||
if err != nil {
|
||||
return 0, errors.Wrap(err, "Failed to fetch data base")
|
||||
}
|
||||
|
||||
return killsNum, nil
|
||||
err := row.Scan(&killsNum)
|
||||
if err != nil {
|
||||
return 0, errors.Wrap(err, "Failed to fetch data base")
|
||||
}
|
||||
|
||||
return 0, nil
|
||||
return killsNum, nil
|
||||
}
|
||||
|
||||
func (db *dbLayer) createPlayer(ctx context.Context, name string, lastOnline time.Time) (*Player, error) {
|
||||
|
Reference in New Issue
Block a user