diff options
Diffstat (limited to 'model/user_search.go')
-rw-r--r-- | model/user_search.go | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/model/user_search.go b/model/user_search.go index 94596bdcd..68749fbe5 100644 --- a/model/user_search.go +++ b/model/user_search.go @@ -8,6 +8,10 @@ import ( "io" ) +const USER_SEARCH_MAX_LIMIT = 1000 +const USER_SEARCH_DEFAULT_LIMIT = 100 + +// UserSearch captures the parameters provided by a client for initiating a user search. type UserSearch struct { Term string `json:"term"` TeamId string `json:"team_id"` @@ -16,17 +20,38 @@ type UserSearch struct { NotInChannelId string `json:"not_in_channel_id"` AllowInactive bool `json:"allow_inactive"` WithoutTeam bool `json:"without_team"` + Limit int `json:"limit"` } // ToJson convert a User to a json string -func (u *UserSearch) ToJson() string { +func (u *UserSearch) ToJson() []byte { b, _ := json.Marshal(u) - return string(b) + return b } // UserSearchFromJson will decode the input and return a User func UserSearchFromJson(data io.Reader) *UserSearch { var us *UserSearch json.NewDecoder(data).Decode(&us) + + if us.Limit == 0 { + us.Limit = USER_SEARCH_DEFAULT_LIMIT + } + return us } + +// UserSearchOptions captures internal parameters derived from the user's permissions and a +// UserSearch request. +type UserSearchOptions struct { + // IsAdmin tracks whether or not the search is being conducted by an administrator. + IsAdmin bool + // AllowEmails allows search to examine the emails of users. + AllowEmails bool + // AllowFullNames allows search to examine the full names of users, vs. just usernames and nicknames. + AllowFullNames bool + // AllowInactive configures whether or not to return inactive users in the search results. + AllowInactive bool + // Limit limits the total number of results returned. + Limit int +} |