mirror of https://github.com/grafana/grafana.git
				
				
				
			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