Teams: Search by team ids (#77730)

* Teams: Search by team ids

* Add tests

* Fix tests
pull/77643/head
Alexander Zobnin 2 years ago committed by GitHub
parent 7322f98b9c
commit c0d8a7132e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      pkg/services/team/model.go
  2. 10
      pkg/services/team/teamapi/team.go
  3. 7
      pkg/services/team/teamimpl/store.go
  4. 20
      pkg/services/team/teamimpl/store_test.go

@ -92,6 +92,7 @@ type SearchTeamsQuery struct {
Page int
OrgID int64 `xorm:"org_id"`
SortOpts []model.SortOption
TeamIds []int64
SignedInUser identity.Requester
HiddenUsers map[string]struct{}
}

@ -154,10 +154,20 @@ func (tapi *TeamAPI) searchTeams(c *contextmodel.ReqContext) response.Response {
return response.Err(err)
}
stringTeamIDs := c.QueryStrings("teamId")
queryTeamIDs := make([]int64, 0)
for _, id := range stringTeamIDs {
teamID, err := strconv.ParseInt(id, 10, 64)
if err == nil {
queryTeamIDs = append(queryTeamIDs, teamID)
}
}
query := team.SearchTeamsQuery{
OrgID: c.SignedInUser.GetOrgID(),
Query: c.Query("query"),
Name: c.Query("name"),
TeamIds: queryTeamIDs,
Page: page,
Limit: perPage,
SignedInUser: c.SignedInUser,

@ -212,6 +212,13 @@ func (ss *xormStore) Search(ctx context.Context, query *team.SearchTeamsQuery) (
params = append(params, query.Name)
}
if len(query.TeamIds) > 0 {
sql.WriteString(` and team.id IN (?` + strings.Repeat(",?", len(query.TeamIds)-1) + ")")
for _, id := range query.TeamIds {
params = append(params, id)
}
}
acFilter, err := ac.Filter(query.SignedInUser, "team.id", "teams:id:", ac.ActionTeamsRead)
if err != nil {
return err

@ -268,6 +268,26 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.Equal(t, queryResult.Teams[1].Name, team1.Name)
})
t.Run("Should be able to query teams by ids", func(t *testing.T) {
allTeamsQuery := &team.SearchTeamsQuery{OrgID: testOrgID, Query: "", SignedInUser: testUser}
allTeamsQueryResult, err := teamSvc.SearchTeams(context.Background(), allTeamsQuery)
require.NoError(t, err)
require.Equal(t, len(allTeamsQueryResult.Teams), 2)
teamIds := make([]int64, 0)
for _, team := range allTeamsQueryResult.Teams {
teamIds = append(teamIds, team.ID)
}
query := &team.SearchTeamsQuery{OrgID: testOrgID, SignedInUser: testUser, TeamIds: teamIds}
queryResult, err := teamSvc.SearchTeams(context.Background(), query)
require.NoError(t, err)
require.Equal(t, len(queryResult.Teams), 2)
require.EqualValues(t, queryResult.TotalCount, 2)
require.Equal(t, queryResult.Teams[0].ID, teamIds[0])
require.Equal(t, queryResult.Teams[1].ID, teamIds[1])
})
t.Run("Should be able to return all teams a user is member of", func(t *testing.T) {
sqlStore = db.InitTestDB(t)
setup()

Loading…
Cancel
Save