diff options
author | hmhealey <harrisonmhealey@gmail.com> | 2015-10-26 11:45:03 -0400 |
---|---|---|
committer | hmhealey <harrisonmhealey@gmail.com> | 2015-10-26 11:45:09 -0400 |
commit | 663bec814767fa9c92e7ab2c706c0fe4c0432cf1 (patch) | |
tree | 2d16013429e3e4facb690c6fb43f5cb53489323e /model/search_params.go | |
parent | 2383d5dd37d5ebf28c2576fd495a8a7f02f78901 (diff) | |
download | chat-663bec814767fa9c92e7ab2c706c0fe4c0432cf1.tar.gz chat-663bec814767fa9c92e7ab2c706c0fe4c0432cf1.tar.bz2 chat-663bec814767fa9c92e7ab2c706c0fe4c0432cf1.zip |
Moved logic for searching for posts by multiple users/channels into the sql query
Diffstat (limited to 'model/search_params.go')
-rw-r--r-- | model/search_params.go | 67 |
1 files changed, 28 insertions, 39 deletions
diff --git a/model/search_params.go b/model/search_params.go index 6b665f5a0..144e8e461 100644 --- a/model/search_params.go +++ b/model/search_params.go @@ -8,10 +8,10 @@ import ( ) type SearchParams struct { - Terms string - IsHashtag bool - InChannel string - FromUser string + Terms string + IsHashtag bool + InChannels []string + FromUsers []string } var searchFlags = [...]string{"from", "channel", "in"} @@ -106,45 +106,34 @@ func ParseSearchParams(text string) []*SearchParams { } } - if len(inChannels) == 0 { - inChannels = append(inChannels, "") - } - if len(fromUsers) == 0 { - fromUsers = append(fromUsers, "") - } - paramsList := []*SearchParams{} - for _, inChannel := range inChannels { - for _, fromUser := range fromUsers { - if len(plainTerms) > 0 { - paramsList = append(paramsList, &SearchParams{ - Terms: plainTerms, - IsHashtag: false, - InChannel: inChannel, - FromUser: fromUser, - }) - } + if len(plainTerms) > 0 { + paramsList = append(paramsList, &SearchParams{ + Terms: plainTerms, + IsHashtag: false, + InChannels: inChannels, + FromUsers: fromUsers, + }) + } - if len(hashtagTerms) > 0 { - paramsList = append(paramsList, &SearchParams{ - Terms: hashtagTerms, - IsHashtag: true, - InChannel: inChannel, - FromUser: fromUser, - }) - } + if len(hashtagTerms) > 0 { + paramsList = append(paramsList, &SearchParams{ + Terms: hashtagTerms, + IsHashtag: true, + InChannels: inChannels, + FromUsers: fromUsers, + }) + } - // special case for when no terms are specified but we still have a filter - if len(plainTerms) == 0 && len(hashtagTerms) == 0 { - paramsList = append(paramsList, &SearchParams{ - Terms: "", - IsHashtag: true, - InChannel: inChannel, - FromUser: fromUser, - }) - } - } + // special case for when no terms are specified but we still have a filter + if len(plainTerms) == 0 && len(hashtagTerms) == 0 { + paramsList = append(paramsList, &SearchParams{ + Terms: "", + IsHashtag: true, + InChannels: inChannels, + FromUsers: fromUsers, + }) } return paramsList |