mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Teams: Search by team ids (#77730)
* Teams: Search by team ids * Add tests * Fix tests
This commit is contained in:
parent
7322f98b9c
commit
c0d8a7132e
@ -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…
Reference in New Issue
Block a user