Skip to content

Commit

Permalink
Add /team/:id/members
Browse files Browse the repository at this point in the history
  • Loading branch information
thehowl committed Mar 9, 2018
1 parent 7af8dfe commit 1c72547
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
12 changes: 12 additions & 0 deletions http/api/teams.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ func teams(c *http.Context, filters models.TeamFilters) {
c.SetJSON(teams, false)
}

// Team retrieves a single team.
func Team(c *http.Context) {
team, err := c.DB.Team(c.ParamInt("id"))
if err != nil {
Expand All @@ -40,8 +41,19 @@ func Team(c *http.Context) {
c.SetJSON(team, team == nil)
}

// TeamMembers retrieves all the members of a team.
func TeamMembers(c *http.Context) {
members, err := c.DB.TeamMembers(c.ParamInt("id"), c.QueryInt("p"))
if err != nil {
c.Error(err)
return
}
c.SetJSON(members, false)
}

func init() {
http.GET("/tournaments/:id/teams", TeamsInTournament)
http.GET("/teams", Teams)
http.GET("/teams/:id", Team)
http.GET("/teams/:id/members", TeamMembers)
}
22 changes: 22 additions & 0 deletions models/team.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,25 @@ func (db *DB) Team(id int) (*Team, error) {
}
return &t, nil
}

// TeamMember represents a member of a team and information about their
// relationship to the team.
type TeamMember struct {
Team int `json:"team"`
User int `json:"user"`
Attributes int `json:"attributes"`
}

// TableName returns the correct table name so that it can correctly be used
// by gorm.
func (TeamMember) TableName() string {
return "team_users"
}

// TeamMembers retrieves all the members of a team.
func (db *DB) TeamMembers(teamID, page int) ([]TeamMember, error) {
members := make([]TeamMember, 0, 50)
err := db.db.Offset(positivePage(page)*50).Limit(50).
Find(&members, "team = ?", teamID).Error
return members, err
}

0 comments on commit 1c72547

Please sign in to comment.