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) }