func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { terms := r.FormValue("terms") if len(terms) == 0 { c.SetInvalidParam("search", "terms") return } paramsList := model.ParseSearchParams(terms) channels := []store.StoreChannel{} for _, params := range paramsList { channels = append(channels, Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, params)) } posts := &model.PostList{} for _, channel := range channels { if result := <-channel; result.Err != nil { c.Err = result.Err return } else { data := result.Data.(*model.PostList) posts.Extend(data) } } w.Write([]byte(posts.ToJson())) }
func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { terms := r.FormValue("terms") if len(terms) == 0 { c.SetInvalidParam("search", "terms") return } paramsList := model.ParseSearchParams(terms) channels := []store.StoreChannel{} for _, params := range paramsList { // don't allow users to search for everything if params.Terms != "*" { channels = append(channels, Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, params)) } } posts := &model.PostList{} for _, channel := range channels { if result := <-channel; result.Err != nil { c.Err = result.Err return } else { data := result.Data.(*model.PostList) posts.Extend(data) } } w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") w.Header().Set("Expires", "0") w.Write([]byte(posts.ToJson())) }
func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { terms := r.FormValue("terms") if len(terms) == 0 { c.SetInvalidParam("search", "terms") return } plainSearchParams, hashtagSearchParams := model.ParseSearchParams(terms) var hchan store.StoreChannel if hashtagSearchParams != nil { hchan = Srv.Store.Post().Search(c.Session.TeamId, c.Session.UserId, hashtagSearchParams) } 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 { c.Err = result.Err return } else { mainList = result.Data.(*model.PostList) } } 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())) }
func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { props := model.StringInterfaceFromJson(r.Body) terms := props["terms"].(string) if len(terms) == 0 { c.SetInvalidParam("search", "terms") return } isOrSearch := false if val, ok := props["is_or_search"]; ok && val != nil { isOrSearch = val.(bool) } paramsList := model.ParseSearchParams(terms) channels := []store.StoreChannel{} for _, params := range paramsList { params.OrTerms = isOrSearch // don't allow users to search for everything if params.Terms != "*" { channels = append(channels, Srv.Store.Post().Search(c.TeamId, c.Session.UserId, params)) } } posts := &model.PostList{} for _, channel := range channels { if result := <-channel; result.Err != nil { c.Err = result.Err return } else { data := result.Data.(*model.PostList) posts.Extend(data) } } w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") w.Write([]byte(posts.ToJson())) }