diff options
author | Corey Hulen <corey@hulen.com> | 2015-10-26 12:12:18 -0700 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2015-10-26 12:12:18 -0700 |
commit | 942c9317f4936e72da51b84313713b4ecd583b9a (patch) | |
tree | 94eea3c793e59910e78a5a842bb31c2b0d68b145 /api/post.go | |
parent | 86e3764cbd544c64136d5c34c2b80fb66a0cd4bd (diff) | |
parent | 663bec814767fa9c92e7ab2c706c0fe4c0432cf1 (diff) | |
download | chat-942c9317f4936e72da51b84313713b4ecd583b9a.tar.gz chat-942c9317f4936e72da51b84313713b4ecd583b9a.tar.bz2 chat-942c9317f4936e72da51b84313713b4ecd583b9a.zip |
Merge pull request #1164 from hmhealey/plt778
PLT-778 Changed post searching to allow searching by multiple users/channels
Diffstat (limited to 'api/post.go')
-rw-r--r-- | api/post.go | 42 |
1 files changed, 10 insertions, 32 deletions
diff --git a/api/post.go b/api/post.go index 79f84e04d..b8588fe6a 100644 --- a/api/post.go +++ b/api/post.go @@ -820,45 +820,23 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { return } - plainSearchParams, hashtagSearchParams := model.ParseSearchParams(terms) + paramsList := model.ParseSearchParams(terms) + channels := []store.StoreChannel{} - var hchan store.StoreChannel - if hashtagSearchParams != nil { - hchan = Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, hashtagSearchParams) + for _, params := range paramsList { + channels = append(channels, Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, params)) } - var pchan store.StoreChannel - if plainSearchParams != nil { - pchan = Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, plainSearchParams) - } - - mainList := &model.PostList{} - if hchan != nil { - if result := <-hchan; result.Err != nil { + posts := &model.PostList{} + for _, channel := range channels { + if result := <-channel; result.Err != nil { c.Err = result.Err return } else { - mainList = result.Data.(*model.PostList) + data := result.Data.(*model.PostList) + posts.Extend(data) } } - plainList := &model.PostList{} - if pchan != nil { - if result := <-pchan; result.Err != nil { - c.Err = result.Err - return - } else { - plainList = result.Data.(*model.PostList) - } - } - - for _, postId := range plainList.Order { - if _, ok := mainList.Posts[postId]; !ok { - mainList.AddPost(plainList.Posts[postId]) - mainList.AddOrder(postId) - } - - } - - w.Write([]byte(mainList.ToJson())) + w.Write([]byte(posts.ToJson())) } |