api4/user: Deduplicate userids for getUsersByIds endpoint (#24344)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
4145fd2f4e
Коммит
639d73b3e7
@@ -957,6 +957,10 @@ func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we remove the duplicate IDs as it can bring a significant load to the
|
||||||
|
// database.
|
||||||
|
userIDs = model.RemoveDuplicateStrings(userIDs)
|
||||||
|
|
||||||
sinceString := r.URL.Query().Get("since")
|
sinceString := r.URL.Query().Get("since")
|
||||||
|
|
||||||
options := &store.UserGetByIdsOpts{
|
options := &store.UserGetByIdsOpts{
|
||||||
|
|||||||
@@ -231,13 +231,17 @@ func localGetUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func localGetUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
func localGetUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
userIds := model.ArrayFromJSON(r.Body)
|
userIDs := model.ArrayFromJSON(r.Body)
|
||||||
|
|
||||||
if len(userIds) == 0 {
|
if len(userIDs) == 0 {
|
||||||
c.SetInvalidParam("user_ids")
|
c.SetInvalidParam("user_ids")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we remove the duplicate IDs as it can bring a significant load to the
|
||||||
|
// database.
|
||||||
|
userIDs = model.RemoveDuplicateStrings(userIDs)
|
||||||
|
|
||||||
sinceString := r.URL.Query().Get("since")
|
sinceString := r.URL.Query().Get("since")
|
||||||
|
|
||||||
options := &store.UserGetByIdsOpts{
|
options := &store.UserGetByIdsOpts{
|
||||||
@@ -253,7 +257,7 @@ func localGetUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
options.Since = since
|
options.Since = since
|
||||||
}
|
}
|
||||||
|
|
||||||
users, appErr := c.App.GetUsersByIds(userIds, options)
|
users, appErr := c.App.GetUsersByIds(userIDs, options)
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
c.Err = appErr
|
c.Err = appErr
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1725,6 +1725,13 @@ func TestGetUsersByIds(t *testing.T) {
|
|||||||
|
|
||||||
require.Len(t, users, 1, "1 user should be returned")
|
require.Len(t, users, 1, "1 user should be returned")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("should only return unique users when multiple IDs are requested", func(t *testing.T) {
|
||||||
|
users, _, err := client.GetUsersByIds(context.Background(), []string{th.BasicUser.Id, th.BasicUser.Id, th.BasicUser.Id})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Len(t, users, 1, "1 user should be returned")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("should return error when not logged in", func(t *testing.T) {
|
t.Run("should return error when not logged in", func(t *testing.T) {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user