Use paging in initUser and UpdateUsers (mattermost)

This commit is contained in:
Wim 2019-04-20 23:06:06 +02:00
parent fed77cccf3
commit 9f5f004725
2 changed files with 31 additions and 9 deletions

View File

@ -132,14 +132,25 @@ func (m *MMClient) initUser() error {
return resp.Error return resp.Error
} }
for _, team := range teams { for _, team := range teams {
mmusers, resp := m.Client.GetUsersInTeam(team.Id, 0, 50000, "") idx := 0
max := 200
usermap := make(map[string]*model.User)
mmusers, resp := m.Client.GetUsersInTeam(team.Id, idx, max, "")
if resp.Error != nil { if resp.Error != nil {
return errors.New(resp.Error.DetailedError) return errors.New(resp.Error.DetailedError)
} }
usermap := make(map[string]*model.User) for len(mmusers) > 0 {
for _, user := range mmusers { for _, user := range mmusers {
usermap[user.Id] = user usermap[user.Id] = user
}
mmusers, resp = m.Client.GetUsersInTeam(team.Id, idx, max, "")
if resp.Error != nil {
return errors.New(resp.Error.DetailedError)
}
idx++
time.Sleep(time.Millisecond * 200)
} }
m.logger.Infof("found %d users in team %s", len(usermap), team.Name)
t := &Team{Team: team, Users: usermap, Id: team.Id} t := &Team{Team: team, Users: usermap, Id: team.Id}

View File

@ -2,6 +2,7 @@ package matterclient
import ( import (
"errors" "errors"
"time"
"github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/model"
) )
@ -99,15 +100,25 @@ func (m *MMClient) GetUsers() map[string]*model.User {
} }
func (m *MMClient) UpdateUsers() error { func (m *MMClient) UpdateUsers() error {
mmusers, resp := m.Client.GetUsers(0, 50000, "") idx := 0
max := 200
mmusers, resp := m.Client.GetUsers(idx, max, "")
if resp.Error != nil { if resp.Error != nil {
return errors.New(resp.Error.DetailedError) return errors.New(resp.Error.DetailedError)
} }
m.Lock() for len(mmusers) > 0 {
for _, user := range mmusers { m.Lock()
m.Users[user.Id] = user for _, user := range mmusers {
m.Users[user.Id] = user
}
m.Unlock()
mmusers, resp = m.Client.GetUsers(idx, max, "")
time.Sleep(time.Millisecond * 300)
if resp.Error != nil {
return errors.New(resp.Error.DetailedError)
}
idx++
} }
m.Unlock()
return nil return nil
} }