From 59c17fb497d6a3d7a4da0febcffe9ca8328af46d Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 17 Jul 2020 16:51:26 +0700 Subject: [PATCH] internal/directory: improve google user groups list (#1092) Skip group without members, so it saves us time to handle group members, and reduce the size of groups. While at it, also querying API with the fields we need. Fixes #567 --- internal/directory/google/google.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/directory/google/google.go b/internal/directory/google/google.go index 7020b338f..33bab4474 100644 --- a/internal/directory/google/google.go +++ b/internal/directory/google/google.go @@ -92,9 +92,14 @@ func (p *Provider) UserGroups(ctx context.Context) ([]*directory.User, error) { var groups []string err = apiClient.Groups.List(). Context(ctx). + Fields("id", "email", "directMembersCount"). Customer("my_customer"). Pages(ctx, func(res *admin.Groups) error { for _, g := range res.Groups { + // Skip group without member. + if g.DirectMembersCount == 0 { + continue + } groups = append(groups, g.Id) groupIDToEmails[g.Id] = g.Email } @@ -109,6 +114,7 @@ func (p *Provider) UserGroups(ctx context.Context) ([]*directory.User, error) { group := group err = apiClient.Members.List(group). Context(ctx). + Fields("id"). Pages(ctx, func(res *admin.Members) error { for _, member := range res.Members { userIDToGroups[member.Id] = append(userIDToGroups[member.Id], group, groupIDToEmails[group])