43 lines
1.4 KiB
Go
43 lines
1.4 KiB
Go
package repos
|
|
|
|
import (
|
|
"context"
|
|
"gralias/models"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
type PlayerStatsRepo interface {
|
|
GetPlayerStats(ctx context.Context, username string) (*models.PlayerStats, error)
|
|
UpdatePlayerStats(ctx context.Context, stats *models.PlayerStats) error
|
|
CreatePlayerStats(ctx context.Context, username string) error
|
|
}
|
|
|
|
func (p *RepoProvider) GetPlayerStats(ctx context.Context, username string) (*models.PlayerStats, error) {
|
|
stats := &models.PlayerStats{}
|
|
err := sqlx.GetContext(ctx, p.DB, stats, "SELECT * FROM player_stats WHERE player_username = ?", username)
|
|
return stats, err
|
|
}
|
|
|
|
func (p *RepoProvider) UpdatePlayerStats(ctx context.Context, stats *models.PlayerStats) error {
|
|
_, err := p.DB.NamedExecContext(ctx, `UPDATE player_stats SET
|
|
games_played = :games_played,
|
|
games_won = :games_won,
|
|
games_lost = :games_lost,
|
|
opened_opposite_words = :opened_opposite_words,
|
|
opened_white_words = :opened_white_words,
|
|
opened_black_words = :opened_black_words,
|
|
mime_winrate = :mime_winrate,
|
|
guesser_winrate = :guesser_winrate,
|
|
played_as_mime = :played_as_mime,
|
|
played_as_guesser = :played_as_guesser
|
|
WHERE player_username = :player_username`, stats)
|
|
return err
|
|
}
|
|
|
|
func (p *RepoProvider) CreatePlayerStats(ctx context.Context, username string) error {
|
|
db := getDB(ctx, p.DB)
|
|
_, err := db.ExecContext(ctx, "INSERT INTO player_stats (player_username) VALUES (?)", username)
|
|
return err
|
|
}
|