From 2d14eef6c7f93b6ceb4683f4dcd927db851db494 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Thu, 6 Jun 2019 19:29:54 +0100 Subject: [PATCH] MM-15864 - Made Post.GetRepliesForExport sync (#11046) * Changed Post.GetRepliesForExport to be sync * Removed else, and renamed err * renamed result variable to replyPosts --- app/export.go | 8 ++---- store/sqlstore/post_store.go | 45 +++++++++++++++--------------- store/store.go | 2 +- store/storetest/mocks/PostStore.go | 19 +++++++++---- store/storetest/post_store.go | 18 ++++++------ 5 files changed, 48 insertions(+), 44 deletions(-) diff --git a/app/export.go b/app/export.go index bab867f8f5..a9953868b7 100644 --- a/app/export.go +++ b/app/export.go @@ -379,14 +379,12 @@ func (a *App) ExportAllPosts(writer io.Writer) *model.AppError { func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppError) { var replies []ReplyImportData - result := <-a.Srv.Store.Post().GetRepliesForExport(postId) + replyPosts, err := a.Srv.Store.Post().GetRepliesForExport(postId) - if result.Err != nil { - return nil, result.Err + if err != nil { + return nil, err } - replyPosts := result.Data.([]*model.ReplyForExport) - for _, reply := range replyPosts { replyImportObject := ImportReplyFromPost(reply) if reply.HasReactions == true { diff --git a/store/sqlstore/post_store.go b/store/sqlstore/post_store.go index 2daa812269..bfda4fe494 100644 --- a/store/sqlstore/post_store.go +++ b/store/sqlstore/post_store.go @@ -1293,30 +1293,29 @@ func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*m return posts, nil } -func (s *SqlPostStore) GetRepliesForExport(parentId string) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - var posts []*model.ReplyForExport - _, err1 := s.GetSearchReplica().Select(&posts, ` - SELECT - Posts.*, - Users.Username as Username - FROM - Posts - INNER JOIN - Users ON Posts.UserId = Users.Id - WHERE - Posts.ParentId = :ParentId - AND Posts.DeleteAt = 0 - ORDER BY - Posts.Id`, - map[string]interface{}{"ParentId": parentId}) +func (s *SqlPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { - if err1 != nil { - result.Err = model.NewAppError("SqlPostStore.GetAllAfterForExport", "store.sql_post.get_posts.app_error", nil, err1.Error(), http.StatusInternalServerError) - } else { - result.Data = posts - } - }) + var posts []*model.ReplyForExport + _, err := s.GetSearchReplica().Select(&posts, ` + SELECT + Posts.*, + Users.Username as Username + FROM + Posts + INNER JOIN + Users ON Posts.UserId = Users.Id + WHERE + Posts.ParentId = :ParentId + AND Posts.DeleteAt = 0 + ORDER BY + Posts.Id`, + map[string]interface{}{"ParentId": parentId}) + + if err != nil { + return nil, model.NewAppError("SqlPostStore.GetAllAfterForExport", "store.sql_post.get_posts.app_error", nil, err.Error(), http.StatusInternalServerError) + } + + return posts, nil } func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { diff --git a/store/store.go b/store/store.go index d51d349377..9575fc5372 100644 --- a/store/store.go +++ b/store/store.go @@ -239,7 +239,7 @@ type PostStore interface { GetOldest() StoreChannel GetMaxPostSize() int GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) - GetRepliesForExport(parentId string) StoreChannel + GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) } diff --git a/store/storetest/mocks/PostStore.go b/store/storetest/mocks/PostStore.go index 9ca64bbfa2..989f51e01e 100644 --- a/store/storetest/mocks/PostStore.go +++ b/store/storetest/mocks/PostStore.go @@ -416,19 +416,28 @@ func (_m *PostStore) GetPostsSince(channelId string, time int64, allowFromCache } // GetRepliesForExport provides a mock function with given fields: parentId -func (_m *PostStore) GetRepliesForExport(parentId string) store.StoreChannel { +func (_m *PostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { ret := _m.Called(parentId) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 []*model.ReplyForExport + if rf, ok := ret.Get(0).(func(string) []*model.ReplyForExport); ok { r0 = rf(parentId) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).([]*model.ReplyForExport) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + r1 = rf(parentId) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetSingle provides a mock function with given fields: id diff --git a/store/storetest/post_store.go b/store/storetest/post_store.go index 4a3175814e..8bc5fe9022 100644 --- a/store/storetest/post_store.go +++ b/store/storetest/post_store.go @@ -2173,13 +2173,12 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) { p2.RootId = p1.Id p2 = (<-ss.Post().Save(p2)).Data.(*model.Post) - r1 := <-ss.Post().GetRepliesForExport(p1.Id) - assert.Nil(t, r1.Err) + r1, err := ss.Post().GetRepliesForExport(p1.Id) + assert.Nil(t, err) - d1 := r1.Data.([]*model.ReplyForExport) - assert.Len(t, d1, 1) + assert.Len(t, r1, 1) - reply1 := d1[0] + reply1 := r1[0] assert.Equal(t, reply1.Id, p2.Id) assert.Equal(t, reply1.Message, p2.Message) assert.Equal(t, reply1.Username, u1.Username) @@ -2189,13 +2188,12 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) { _, err = ss.User().Update(&u1, false) require.Nil(t, err) - r1 = <-ss.Post().GetRepliesForExport(p1.Id) - assert.Nil(t, r1.Err) + r1, err = ss.Post().GetRepliesForExport(p1.Id) + assert.Nil(t, err) - d1 = r1.Data.([]*model.ReplyForExport) - assert.Len(t, d1, 1) + assert.Len(t, r1, 1) - reply1 = d1[0] + reply1 = r1[0] assert.Equal(t, reply1.Id, p2.Id) assert.Equal(t, reply1.Message, p2.Message) assert.Equal(t, reply1.Username, u1.Username)