PLT-4535/PLT-4503 Fix inactive users in searches and add option functionality to DB user search (#4413)
* Add options to user database search * Fix inactive users showing up incorrectly in some user searches * Read JSON for searchUsers API into anonymous struct * Move anonymous struct to be a normal struct in model directory and upadte client to use it * Added clarification comment about slightly odd query condition in search
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b45cc443c9
Коммит
137ade29d0
@@ -572,10 +572,8 @@ func (c *Client) GetProfilesByIds(userIds []string) (*Result, *AppError) {
|
||||
|
||||
// SearchUsers returns a list of users that have a username matching or similar to the search term. Must
|
||||
// be authenticated.
|
||||
func (c *Client) SearchUsers(term string, teamId string, options map[string]string) (*Result, *AppError) {
|
||||
options["term"] = term
|
||||
options["team_id"] = teamId
|
||||
if r, err := c.DoApiPost("/users/search", MapToJson(options)); err != nil {
|
||||
func (c *Client) SearchUsers(params UserSearch) (*Result, *AppError) {
|
||||
if r, err := c.DoApiPost("/users/search", params.ToJson()); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
defer closeBody(r)
|
||||
|
||||
39
model/user_search.go
Обычный файл
39
model/user_search.go
Обычный файл
@@ -0,0 +1,39 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
)
|
||||
|
||||
type UserSearch struct {
|
||||
Term string `json:"term"`
|
||||
TeamId string `json:"team_id"`
|
||||
InChannelId string `json:"in_channel_id"`
|
||||
NotInChannelId string `json:"not_in_channel_id"`
|
||||
AllowInactive bool `json:"allow_inactive"`
|
||||
}
|
||||
|
||||
// ToJson convert a User to a json string
|
||||
func (u *UserSearch) ToJson() string {
|
||||
b, err := json.Marshal(u)
|
||||
if err != nil {
|
||||
return ""
|
||||
} else {
|
||||
return string(b)
|
||||
}
|
||||
}
|
||||
|
||||
// UserSearchFromJson will decode the input and return a User
|
||||
func UserSearchFromJson(data io.Reader) *UserSearch {
|
||||
decoder := json.NewDecoder(data)
|
||||
var us UserSearch
|
||||
err := decoder.Decode(&us)
|
||||
if err == nil {
|
||||
return &us
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
19
model/user_search_test.go
Обычный файл
19
model/user_search_test.go
Обычный файл
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestUserSearchJson(t *testing.T) {
|
||||
userSearch := UserSearch{Term: NewId(), TeamId: NewId()}
|
||||
json := userSearch.ToJson()
|
||||
ruserSearch := UserSearchFromJson(strings.NewReader(json))
|
||||
|
||||
if userSearch.Term != ruserSearch.Term {
|
||||
t.Fatal("Terms do not match")
|
||||
}
|
||||
}
|
||||
Ссылка в новой задаче
Block a user