MM-15847 migrating getFlaggedPosts to sync by default (#10995)

Этот коммит содержится в:
Evan do Carmo
2019-05-29 12:05:59 -04:00
коммит произвёл Hanzei
родитель 28d668cd91
Коммит 9f4c703f1e
5 изменённых файлов: 45 добавлений и 34 удалений

Просмотреть файл

@@ -641,11 +641,7 @@ func (a *App) GetPostThread(postId string) (*model.PostList, *model.AppError) {
} }
func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
result := <-a.Srv.Store.Post().GetFlaggedPosts(userId, offset, limit) return a.Srv.Store.Post().GetFlaggedPosts(userId, offset, limit)
if result.Err != nil {
return nil, result.Err
}
return result.Data.(*model.PostList), nil
} }
func (a *App) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) {

Просмотреть файл

@@ -179,22 +179,20 @@ func (s *SqlPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError
return post, nil return post, nil
} }
func (s *SqlPostStore) GetFlaggedPosts(userId string, offset int, limit int) store.StoreChannel { func (s *SqlPostStore) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
return store.Do(func(result *store.StoreResult) { pl := model.NewPostList()
pl := model.NewPostList()
var posts []*model.Post var posts []*model.Post
if _, err := s.GetReplica().Select(&posts, "SELECT * FROM Posts WHERE Id IN (SELECT Name FROM Preferences WHERE UserId = :UserId AND Category = :Category) AND DeleteAt = 0 ORDER BY CreateAt DESC LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_FLAGGED_POST, "Offset": offset, "Limit": limit}); err != nil { if _, err := s.GetReplica().Select(&posts, "SELECT * FROM Posts WHERE Id IN (SELECT Name FROM Preferences WHERE UserId = :UserId AND Category = :Category) AND DeleteAt = 0 ORDER BY CreateAt DESC LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_FLAGGED_POST, "Offset": offset, "Limit": limit}); err != nil {
result.Err = model.NewAppError("SqlPostStore.GetFlaggedPosts", "store.sql_post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SqlPostStore.GetFlaggedPosts", "store.sql_post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
} else { }
for _, post := range posts {
pl.AddPost(post)
pl.AddOrder(post.Id)
}
}
result.Data = pl for _, post := range posts {
}) pl.AddPost(post)
pl.AddOrder(post.Id)
}
return pl, nil
} }
func (s *SqlPostStore) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) { func (s *SqlPostStore) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) {

Просмотреть файл

@@ -218,7 +218,7 @@ type PostStore interface {
PermanentDeleteByUser(userId string) StoreChannel PermanentDeleteByUser(userId string) StoreChannel
PermanentDeleteByChannel(channelId string) *model.AppError PermanentDeleteByChannel(channelId string) *model.AppError
GetPosts(channelId string, offset int, limit int, allowFromCache bool) StoreChannel GetPosts(channelId string, offset int, limit int, allowFromCache bool) StoreChannel
GetFlaggedPosts(userId string, offset int, limit int) StoreChannel GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError)
GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError)
GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) StoreChannel GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) StoreChannel
GetPostsBefore(channelId string, postId string, numPosts int, offset int) StoreChannel GetPostsBefore(channelId string, postId string, numPosts int, offset int) StoreChannel

Просмотреть файл

@@ -140,19 +140,28 @@ func (_m *PostStore) GetEtag(channelId string, allowFromCache bool) store.StoreC
} }
// GetFlaggedPosts provides a mock function with given fields: userId, offset, limit // GetFlaggedPosts provides a mock function with given fields: userId, offset, limit
func (_m *PostStore) GetFlaggedPosts(userId string, offset int, limit int) store.StoreChannel { func (_m *PostStore) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
ret := _m.Called(userId, offset, limit) ret := _m.Called(userId, offset, limit)
var r0 store.StoreChannel var r0 *model.PostList
if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string, int, int) *model.PostList); ok {
r0 = rf(userId, offset, limit) r0 = rf(userId, offset, limit)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).(*model.PostList)
} }
} }
return r0 var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok {
r1 = rf(userId, offset, limit)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
} }
// GetFlaggedPostsForChannel provides a mock function with given fields: userId, channelId, offset, limit // GetFlaggedPostsForChannel provides a mock function with given fields: userId, channelId, offset, limit

Просмотреть файл

@@ -1378,7 +1378,8 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlSupp
o5 = (<-ss.Post().Save(o5)).Data.(*model.Post) o5 = (<-ss.Post().Save(o5)).Data.(*model.Post)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
r1 := (<-ss.Post().GetFlaggedPosts(o1.ChannelId, 0, 2)).Data.(*model.PostList) r1, err := ss.Post().GetFlaggedPosts(o1.ChannelId, 0, 2)
require.Nil(t, err)
if len(r1.Order) != 0 { if len(r1.Order) != 0 {
t.Fatal("should be empty") t.Fatal("should be empty")
@@ -1532,7 +1533,8 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3 = (<-ss.Post().Save(o3)).Data.(*model.Post)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
r1 := (<-ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)).Data.(*model.PostList) r1, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)
require.Nil(t, err)
if len(r1.Order) != 0 { if len(r1.Order) != 0 {
t.Fatal("should be empty") t.Fatal("should be empty")
@@ -1547,10 +1549,11 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
}, },
} }
err := ss.Preference().Save(&preferences) err = ss.Preference().Save(&preferences)
require.Nil(t, err) require.Nil(t, err)
r2 := (<-ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)).Data.(*model.PostList) r2, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)
require.Nil(t, err)
if len(r2.Order) != 1 { if len(r2.Order) != 1 {
t.Fatal("should have 1 post") t.Fatal("should have 1 post")
@@ -1568,25 +1571,29 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
err = ss.Preference().Save(&preferences) err = ss.Preference().Save(&preferences)
require.Nil(t, err) require.Nil(t, err)
r3 := (<-ss.Post().GetFlaggedPosts(o1.UserId, 0, 1)).Data.(*model.PostList) r3, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 1)
require.Nil(t, err)
if len(r3.Order) != 1 { if len(r3.Order) != 1 {
t.Fatal("should have 1 post") t.Fatal("should have 1 post")
} }
r3 = (<-ss.Post().GetFlaggedPosts(o1.UserId, 1, 1)).Data.(*model.PostList) r3, err = ss.Post().GetFlaggedPosts(o1.UserId, 1, 1)
require.Nil(t, err)
if len(r3.Order) != 1 { if len(r3.Order) != 1 {
t.Fatal("should have 1 post") t.Fatal("should have 1 post")
} }
r3 = (<-ss.Post().GetFlaggedPosts(o1.UserId, 1000, 10)).Data.(*model.PostList) r3, err = ss.Post().GetFlaggedPosts(o1.UserId, 1000, 10)
require.Nil(t, err)
if len(r3.Order) != 0 { if len(r3.Order) != 0 {
t.Fatal("should be empty") t.Fatal("should be empty")
} }
r4 := (<-ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)).Data.(*model.PostList) r4, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)
require.Nil(t, err)
if len(r4.Order) != 2 { if len(r4.Order) != 2 {
t.Fatal("should have 2 posts") t.Fatal("should have 2 posts")
@@ -1604,7 +1611,8 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
err = ss.Preference().Save(&preferences) err = ss.Preference().Save(&preferences)
require.Nil(t, err) require.Nil(t, err)
r4 = (<-ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)).Data.(*model.PostList) r4, err = ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)
require.Nil(t, err)
if len(r4.Order) != 2 { if len(r4.Order) != 2 {
t.Fatal("should have 2 posts") t.Fatal("should have 2 posts")