diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-31 12:25:39 -0400 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-03-31 12:25:39 -0400 |
commit | aba07e5cb9e9b5668c4fb94bfe9f096a26538528 (patch) | |
tree | 4a7348f71da063051cd77677cd37313760e9b9b8 /store/sql_post_store.go | |
parent | 84826bf5632a9afb2c621b8cbcf935ad03943997 (diff) | |
download | chat-aba07e5cb9e9b5668c4fb94bfe9f096a26538528.tar.gz chat-aba07e5cb9e9b5668c4fb94bfe9f096a26538528.tar.bz2 chat-aba07e5cb9e9b5668c4fb94bfe9f096a26538528.zip |
PLT-5483 Fix bug where flagged posts endpoint returned posts on other teams (#5765)
* Fix bug where flagged posts endpoint returned posts on other teams
* Include flagged posts from DMs/GMs
Diffstat (limited to 'store/sql_post_store.go')
-rw-r--r-- | store/sql_post_store.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/store/sql_post_store.go b/store/sql_post_store.go index eb14a66a2..14580dc5f 100644 --- a/store/sql_post_store.go +++ b/store/sql_post_store.go @@ -212,6 +212,58 @@ func (s SqlPostStore) GetFlaggedPosts(userId string, offset int, limit int) Stor return storeChannel } +func (s SqlPostStore) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) StoreChannel { + storeChannel := make(StoreChannel, 1) + go func() { + result := StoreResult{} + pl := model.NewPostList() + + var posts []*model.Post + + query := ` + SELECT + A.* + FROM + (SELECT + * + FROM + Posts + WHERE + Id + IN + (SELECT + Name + FROM + Preferences + WHERE + UserId = :UserId + AND Category = 'flagged_post') + AND DeleteAt = 0 + ) as A + INNER JOIN Channels as B + ON B.Id = A.ChannelId + WHERE B.TeamId = :TeamId OR B.TeamId = '' + ORDER BY CreateAt DESC + LIMIT :Limit OFFSET :Offset` + + if _, err := s.GetReplica().Select(&posts, query, map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_FLAGGED_POST, "Offset": offset, "Limit": limit, "TeamId": teamId}); err != nil { + result.Err = model.NewLocAppError("SqlPostStore.GetFlaggedPosts", "store.sql_post.get_flagged_posts.app_error", nil, err.Error()) + } else { + for _, post := range posts { + pl.AddPost(post) + pl.AddOrder(post.Id) + } + } + + result.Data = pl + + storeChannel <- result + close(storeChannel) + }() + + return storeChannel +} + func (s SqlPostStore) Get(id string) StoreChannel { storeChannel := make(StoreChannel, 1) |