summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorHarshit Bansal <harshitbansal2015@gmail.com>2019-01-17 06:09:50 +0530
committertechknowlogick <hello@techknowlogick.com>2019-01-16 19:39:50 -0500
commit5ac6da3c41f628f31b2805bfc422a3abb6b76d6b (patch)
tree590734fcb13c5250db894ffa19562f9a5e82b9af /models
parent734834a6761d446a6e0dc25a104e8272143f6045 (diff)
downloadgitea-5ac6da3c41f628f31b2805bfc422a3abb6b76d6b.tar.gz
gitea-5ac6da3c41f628f31b2805bfc422a3abb6b76d6b.zip
api: Add missing GET teams endpoints (#5382)
* api: Add an endpoint to list a particular member of team. * models: Rename `GetUserTeams()` to `GetUserOrgTeams()` in `org_team` model. `GetUserTeams()` sounds a bit misnomer since it actually returns the teams that user belongs to in a given organization rather than all the teams across all the organization that the user has joined. * models: Add `GetUserTeams()`. Returns all the teams that a user belongs to. * api: Add an endpoint for GET '/user/teams'. A GET request to this endpoint lists all the teams that a user belongs to.
Diffstat (limited to 'models')
-rw-r--r--models/org.go2
-rw-r--r--models/org_team.go20
-rw-r--r--models/org_team_test.go16
3 files changed, 32 insertions, 6 deletions
diff --git a/models/org.go b/models/org.go
index a98a1bd894..3f17e3641f 100644
--- a/models/org.go
+++ b/models/org.go
@@ -522,7 +522,7 @@ func removeOrgUser(sess *xorm.Session, orgID, userID int64) error {
}
// Delete member in his/her teams.
- teams, err := getUserTeams(sess, org.ID, userID)
+ teams, err := getUserOrgTeams(sess, org.ID, userID)
if err != nil {
return err
}
diff --git a/models/org_team.go b/models/org_team.go
index 34e1b4db83..2ab807b49b 100644
--- a/models/org_team.go
+++ b/models/org_team.go
@@ -543,7 +543,14 @@ func GetTeamMembers(teamID int64) ([]*User, error) {
return getTeamMembers(x, teamID)
}
-func getUserTeams(e Engine, orgID, userID int64) (teams []*Team, err error) {
+func getUserTeams(e Engine, userID int64) (teams []*Team, err error) {
+ return teams, e.
+ Join("INNER", "team_user", "team_user.team_id = team.id").
+ Where("team_user.uid=?", userID).
+ Find(&teams)
+}
+
+func getUserOrgTeams(e Engine, orgID, userID int64) (teams []*Team, err error) {
return teams, e.
Join("INNER", "team_user", "team_user.team_id = team.id").
Where("team.org_id = ?", orgID).
@@ -561,9 +568,14 @@ func getUserRepoTeams(e Engine, orgID, userID, repoID int64) (teams []*Team, err
Find(&teams)
}
-// GetUserTeams returns all teams that user belongs to in given organization.
-func GetUserTeams(orgID, userID int64) ([]*Team, error) {
- return getUserTeams(x, orgID, userID)
+// GetUserOrgTeams returns all teams that user belongs to in given organization.
+func GetUserOrgTeams(orgID, userID int64) ([]*Team, error) {
+ return getUserOrgTeams(x, orgID, userID)
+}
+
+// GetUserTeams returns all teams that user belongs across all organizations.
+func GetUserTeams(userID int64) ([]*Team, error) {
+ return getUserTeams(x, userID)
}
// AddTeamMember adds new membership of given team to given organization,
diff --git a/models/org_team_test.go b/models/org_team_test.go
index 87bfbb4841..a81f9c0749 100644
--- a/models/org_team_test.go
+++ b/models/org_team_test.go
@@ -285,8 +285,22 @@ func TestGetTeamMembers(t *testing.T) {
func TestGetUserTeams(t *testing.T) {
assert.NoError(t, PrepareTestDatabase())
+ test := func(userID int64) {
+ teams, err := GetUserTeams(userID)
+ assert.NoError(t, err)
+ for _, team := range teams {
+ AssertExistsAndLoadBean(t, &TeamUser{TeamID: team.ID, UID: userID})
+ }
+ }
+ test(2)
+ test(5)
+ test(NonexistentID)
+}
+
+func TestGetUserOrgTeams(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
test := func(orgID, userID int64) {
- teams, err := GetUserTeams(orgID, userID)
+ teams, err := GetUserOrgTeams(orgID, userID)
assert.NoError(t, err)
for _, team := range teams {
assert.EqualValues(t, orgID, team.OrgID)