2025-02-02 15:11:35 +01:00

41 lines
1.2 KiB
Go

package repo
import (
model "git.kapelle.org/niklas/beerpong-elo/internal/model"
)
type Repo interface {
// Add a new game to the repo. ID needs to be nil on argument. PlayerID are fetched beforehand.
AddGame(model.Game) (model.GameID, error)
// Get a game by ID. Returns nil if not found.
GetGame(model.GameID) (*model.Game, error)
// Get ID of a player. Creates one if not found.
GetOrCreatePlayerID(string) (model.PlayerID, error)
// Get player by id. Returns nil if not found.
GetPlayer(model.PlayerID) (*model.Player, error)
// Adds a game result. ID needs to be nil on argument.
AddGameResult(model.GameResult) (model.GameResultID, error)
// Get a game result by ID. Returns nil if not found.
GetGameResult(model.GameResultID) (*model.GameResult, error)
// Get a game result for a player in a game
GetGameResultForPlayerAndGame(model.GameID, model.PlayerID) (*model.GameResult, error)
// Get all game results for a player
GetGameResultsForPlayer(model.PlayerID) ([]*model.GameResult, error)
// Get games for a player
GetGamesForPlayer(model.PlayerID) ([]*model.Game, error)
// Get all players
GetPlayers() ([]*model.Player, error)
// Get all games
GetGames() ([]*model.Game, error)
}