diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-04-25 11:00:41 -0400 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2017-04-25 08:00:41 -0700 |
commit | db68e598a10d36013b7ff0994eca86e0464355e1 (patch) | |
tree | ec0f5e42c42d43afd4476f7e6b5ba9d3484577cc /store/sql_user_store.go | |
parent | cb668b92832193df7549c5a16543dcdfed44be56 (diff) | |
download | chat-db68e598a10d36013b7ff0994eca86e0464355e1.tar.gz chat-db68e598a10d36013b7ff0994eca86e0464355e1.tar.bz2 chat-db68e598a10d36013b7ff0994eca86e0464355e1.zip |
PLT-4457 Added API to get multiple users by their usernames (#6218)
* Allow getting profiles by username without a team
* Changed UserStore.GetProfilesByUsernames to return an array
* PLT-4457 Added API to get multiple users by their usernames
* Changed users/names route to users/usernames
Diffstat (limited to 'store/sql_user_store.go')
-rw-r--r-- | store/sql_user_store.go | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/store/sql_user_store.go b/store/sql_user_store.go index 8bd16f696..b15f349d1 100644 --- a/store/sql_user_store.go +++ b/store/sql_user_store.go @@ -729,20 +729,19 @@ func (us SqlUserStore) GetProfilesByUsernames(usernames []string, teamId string) idQuery += ":username" + strconv.Itoa(index) } - props["TeamId"] = teamId + var query string + if teamId == "" { + query = `SELECT * FROM Users WHERE Username IN (` + idQuery + `)` + } else { + query = `SELECT Users.* FROM Users INNER JOIN TeamMembers ON + Users.Id = TeamMembers.UserId AND Users.Username IN (` + idQuery + `) AND TeamMembers.TeamId = :TeamId ` + props["TeamId"] = teamId + } - if _, err := us.GetReplica().Select(&users, `SELECT Users.* FROM Users INNER JOIN TeamMembers ON - Users.Id = TeamMembers.UserId AND Users.Username IN (`+idQuery+`) AND TeamMembers.TeamId = :TeamId `, props); err != nil { + if _, err := us.GetReplica().Select(&users, query, props); err != nil { result.Err = model.NewLocAppError("SqlUserStore.GetProfilesByUsernames", "store.sql_user.get_profiles.app_error", nil, err.Error()) } else { - userMap := make(map[string]*model.User) - - for _, u := range users { - u.Sanitize(map[string]bool{}) - userMap[u.Id] = u - } - - result.Data = userMap + result.Data = users } storeChannel <- result |