summaryrefslogtreecommitdiffstats
path: root/model/search_params.go
diff options
context:
space:
mode:
authorhmhealey <harrisonmhealey@gmail.com>2015-10-26 11:45:03 -0400
committerhmhealey <harrisonmhealey@gmail.com>2015-10-26 11:45:09 -0400
commit663bec814767fa9c92e7ab2c706c0fe4c0432cf1 (patch)
tree2d16013429e3e4facb690c6fb43f5cb53489323e /model/search_params.go
parent2383d5dd37d5ebf28c2576fd495a8a7f02f78901 (diff)
downloadchat-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.go67
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