Skip to content

Commit

Permalink
マッチ取得処理の実装
Browse files Browse the repository at this point in the history
  • Loading branch information
Shugo Kawamura committed Aug 12, 2023
1 parent c6582cc commit eab8b83
Show file tree
Hide file tree
Showing 22 changed files with 971 additions and 331 deletions.
41 changes: 22 additions & 19 deletions backend/entity/entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ type GameServer struct {
type Match struct {
ID MatchID
UserID UserID
ServerID GameServerID
Team1ID TeamID
Team2ID TeamID
GameServer GameServer
Team1 Team
Team2 Team
Winner *TeamID
StartTime *time.Time
EndTime *time.Time
Expand All @@ -51,18 +51,20 @@ type Match struct {
Team2Score uint32
Forfeit *bool
Status MATCH_STATUS
Mapstats []*MapStats
}

type MapStats struct {
ID MapStatsID
MatchID MatchID
MapNumber uint32
MapName string
StartTime *time.Time
EndTime *time.Time
Winner *TeamID
Team1Score uint32
Team2Score uint32
ID MapStatsID
MatchID MatchID
MapNumber uint32
MapName string
StartTime *time.Time
EndTime *time.Time
Winner *TeamID
Team1Score uint32
Team2Score uint32
PlayerStats []*PlayerStats
}

type PlayerStats struct {
Expand Down Expand Up @@ -103,13 +105,14 @@ type PlayerStats struct {
}

type Team struct {
ID TeamID
UserID UserID
Name string
Flag string
Tag string
Logo string
Public bool
ID TeamID
UserID UserID
Name string
Flag string
Tag string
Logo string
Public bool
Players []*Player
}

type Player struct {
Expand Down
40 changes: 20 additions & 20 deletions backend/gateway/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,20 +96,20 @@ type UsersRepositry interface {
// CreateUser creates a user.
CreateUser(ctx context.Context, steamID entity.SteamID, name string, admin bool, hash []byte) (entity.UserID, error)
// GetUser returns a user.
GetUser(ctx context.Context, id entity.UserID) (*entity.User, error)
GetUserBySteamID(ctx context.Context, steamID entity.SteamID) (*entity.User, error)
GetUser(ctx context.Context, id entity.UserID) (*User, error)
GetUserBySteamID(ctx context.Context, steamID entity.SteamID) (*User, error)
}

// GameServersRepository is an interface for game server repository.
type GameServersRepository interface {
// AddGameServer adds a game server.
AddGameServer(ctx context.Context, userID entity.UserID, ip string, port uint32, rconPassword string, displayName string, isPublic bool) (entity.GameServerID, error)
// GetGameServer returns a game server.
GetGameServer(ctx context.Context, id entity.GameServerID) (*entity.GameServer, error)
GetGameServer(ctx context.Context, id entity.GameServerID) (*GameServer, error)
// GetPublicGameServers returns public game servers.
GetPublicGameServers(ctx context.Context) ([]*entity.GameServer, error)
GetPublicGameServers(ctx context.Context) ([]*GameServer, error)
// GetGameServersByUser returns game servers owned by a user.
GetGameServersByUser(ctx context.Context, userID entity.UserID) ([]*entity.GameServer, error)
GetGameServersByUser(ctx context.Context, userID entity.UserID) ([]*GameServer, error)
// DeleteGameServer deletes a game server.
DeleteGameServer(ctx context.Context, id entity.GameServerID) error
}
Expand All @@ -119,13 +119,13 @@ type MatchesRepository interface {
// AddMatch adds a match.
AddMatch(ctx context.Context, userID entity.UserID, serverID entity.GameServerID, team1ID entity.TeamID, team2ID entity.TeamID, startTime time.Time, endTime time.Time, maxMaps int32, title string, skipVeto bool, apiKey string) (entity.MatchID, error)
// GetMatch returns a match.
GetMatch(ctx context.Context, id entity.MatchID) (*entity.Match, error)
GetMatch(ctx context.Context, id entity.MatchID) (*Match, error)
// GetMatchesByUser returns matches owned by a user.
GetMatchesByUser(ctx context.Context, userID entity.UserID) ([]*entity.Match, error)
GetMatchesByUser(ctx context.Context, userID entity.UserID) ([]*Match, error)
// GetMatchesByTeam returns matches owned by a team.
GetMatchesByTeam(ctx context.Context, teamID entity.TeamID) ([]*entity.Match, error)
GetMatchesByTeam(ctx context.Context, teamID entity.TeamID) ([]*Match, error)
// GetMatchesByWinner returns matches won by a team.
GetMatchesByWinner(ctx context.Context, teamID entity.TeamID) ([]*entity.Match, error)
GetMatchesByWinner(ctx context.Context, teamID entity.TeamID) ([]*Match, error)
// UpdateMatchWinner updates a match winner.
UpdateMatchWinner(ctx context.Context, matchID entity.MatchID, winnerID entity.TeamID) error
// UpdateTeam1Score updates a match team1 score.
Expand All @@ -143,45 +143,45 @@ type MapStatsRepository interface {
// TODO.
// AddMapStats(ctx context.Context, matchID int64, mapNumber uint32, mapName string, winnerID int64, team1Score uint32, team2Score uint32) (*entity.MapStats, error)
// GetMapStats returns map stats.
GetMapStats(ctx context.Context, id entity.MapStatsID) (*entity.MapStats, error)
GetMapStats(ctx context.Context, id entity.MapStatsID) (*MapStats, error)
// GetMapStatsByMatch returns map stats owned by a match.
GetMapStatsByMatch(ctx context.Context, matchID entity.MatchID) ([]*entity.MapStats, error)
GetMapStatsByMatch(ctx context.Context, matchID entity.MatchID) ([]*MapStats, error)
// GetMapStatsByMatchAndMap returns map stats owned by a match and map number.
GetMapStatsByMatchAndMap(ctx context.Context, matchID entity.MatchID, mapNumber uint32) (*entity.MapStats, error)
GetMapStatsByMatchAndMap(ctx context.Context, matchID entity.MatchID, mapNumber uint32) (*MapStats, error)
}

// PlayerStatsRepository is an interface for player stats repository.
type PlayerStatsRepository interface {
// TODO.
// AddPlayerStats(ctx context.Context, mapStatsID int64, steamID string, name string, teamID int64, kills uint32, assists uint32, deaths uint32, hs uint32, flashAssists uint32, kast float32, rating float32) (*entity.PlayerStats, error)
// GetPlayerStatsBySteamID returns player stats owned by a steam ID.
GetPlayerStatsBySteamID(ctx context.Context, steamID entity.SteamID) ([]*entity.PlayerStats, error)
GetPlayerStatsBySteamID(ctx context.Context, steamID entity.SteamID) ([]*PlayerStats, error)
// GetPlayerStatsByMatch returns player stats owned by a match.
GetPlayerStatsByMatch(ctx context.Context, matchID entity.MatchID) ([]*entity.PlayerStats, error)
GetPlayerStatsByMatch(ctx context.Context, matchID entity.MatchID) ([]*PlayerStats, error)
// GetPlayerStatsByMapstats returns player stats owned by a map stats.
GetPlayerStatsByMapstats(ctx context.Context, mapStatsID entity.MapStatsID) (*entity.PlayerStats, error)
GetPlayerStatsByMapstats(ctx context.Context, mapStatsID entity.MapStatsID) ([]*PlayerStats, error)
}

// TeamsRepository is an interface for team repository.
type TeamsRepository interface {
// AddTeam adds a team.
AddTeam(ctx context.Context, userID entity.UserID, name string, tag string, flag string, logo string, public bool) (entity.TeamID, error)
// GetTeam returns a team.
GetTeam(ctx context.Context, id entity.TeamID) (*entity.Team, error)
GetTeam(ctx context.Context, id entity.TeamID) (*Team, error)
// GetTeamsByUser returns teams owned by a user.
GetTeamsByUser(ctx context.Context, userID entity.UserID) ([]*entity.Team, error)
GetTeamsByUser(ctx context.Context, userID entity.UserID) ([]*Team, error)
// GetPublicTeams returns public teams.
GetPublicTeams(ctx context.Context) ([]*entity.Team, error)
GetPublicTeams(ctx context.Context) ([]*Team, error)
}

// PlayersRepository is an interface for player repository.
type PlayersRepository interface {
// AddPlayer adds a player.
AddPlayer(ctx context.Context, teamID entity.TeamID, steamID entity.SteamID, name string) (entity.PlayerID, error)
// GetPlayer returns a player.
GetPlayer(ctx context.Context, id entity.PlayerID) (*entity.Player, error)
GetPlayer(ctx context.Context, id entity.PlayerID) (*Player, error)
// GetPlayersByTeam returns players owned by a team.
GetPlayersByTeam(ctx context.Context, teamID entity.TeamID) ([]*entity.Player, error)
GetPlayersByTeam(ctx context.Context, teamID entity.TeamID) ([]*Player, error)
// DeletePlayer deletes a player.
// DeletePlayer(ctx context.Context, id int64) error
}
Loading

0 comments on commit eab8b83

Please sign in to comment.