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
This commit is contained in:
Cuong Manh Le 2020-07-17 16:51:26 +07:00 committed by GitHub
parent 02b4e4b619
commit 59c17fb497
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -92,9 +92,14 @@ func (p *Provider) UserGroups(ctx context.Context) ([]*directory.User, error) {
var groups []string var groups []string
err = apiClient.Groups.List(). err = apiClient.Groups.List().
Context(ctx). Context(ctx).
Fields("id", "email", "directMembersCount").
Customer("my_customer"). Customer("my_customer").
Pages(ctx, func(res *admin.Groups) error { Pages(ctx, func(res *admin.Groups) error {
for _, g := range res.Groups { for _, g := range res.Groups {
// Skip group without member.
if g.DirectMembersCount == 0 {
continue
}
groups = append(groups, g.Id) groups = append(groups, g.Id)
groupIDToEmails[g.Id] = g.Email groupIDToEmails[g.Id] = g.Email
} }
@ -109,6 +114,7 @@ func (p *Provider) UserGroups(ctx context.Context) ([]*directory.User, error) {
group := group group := group
err = apiClient.Members.List(group). err = apiClient.Members.List(group).
Context(ctx). Context(ctx).
Fields("id").
Pages(ctx, func(res *admin.Members) error { Pages(ctx, func(res *admin.Members) error {
for _, member := range res.Members { for _, member := range res.Members {
userIDToGroups[member.Id] = append(userIDToGroups[member.Id], group, groupIDToEmails[group]) userIDToGroups[member.Id] = append(userIDToGroups[member.Id], group, groupIDToEmails[group])