Migrate "Post.GetParentsForExportAfter" to Sync by default #10965 (#11029)

Этот коммит содержится в:
Taufiq Rahman
2019-06-03 20:41:14 +06:00
коммит произвёл George Goldberg
родитель 4cfe61393b
Коммит 5f3e6ad20a
5 изменённых файлов: 30 добавлений и 26 удалений

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

@@ -332,14 +332,12 @@ func (a *App) buildUserNotifyProps(notifyProps model.StringMap) *UserNotifyProps
func (a *App) ExportAllPosts(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26)
for {
result := <-a.Srv.Store.Post().GetParentsForExportAfter(1000, afterId)
posts, err := a.Srv.Store.Post().GetParentsForExportAfter(1000, afterId)
if result.Err != nil {
return result.Err
if err != nil {
return err
}
posts := result.Data.([]*model.PostForExport)
if len(posts) == 0 {
break
}

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

@@ -1263,10 +1263,9 @@ func (s *SqlPostStore) GetMaxPostSize() int {
return s.maxPostSizeCached
}
func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
var posts []*model.PostForExport
_, err1 := s.GetSearchReplica().Select(&posts, `
func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) {
var posts []*model.PostForExport
_, err := s.GetSearchReplica().Select(&posts, `
SELECT
p1.*,
Users.Username as Username,
@@ -1290,14 +1289,13 @@ func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) store
p1.Id
LIMIT
:Limit`,
map[string]interface{}{"Limit": limit, "AfterId": afterId})
map[string]interface{}{"Limit": limit, "AfterId": afterId})
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
}
})
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) GetRepliesForExport(parentId string) store.StoreChannel {

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

@@ -238,7 +238,7 @@ type PostStore interface {
PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
GetOldest() StoreChannel
GetMaxPostSize() int
GetParentsForExportAfter(limit int, afterId string) StoreChannel
GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError)
GetRepliesForExport(parentId string) StoreChannel
GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError)
}

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

@@ -252,19 +252,28 @@ func (_m *PostStore) GetOldest() store.StoreChannel {
}
// GetParentsForExportAfter provides a mock function with given fields: limit, afterId
func (_m *PostStore) GetParentsForExportAfter(limit int, afterId string) store.StoreChannel {
func (_m *PostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) {
ret := _m.Called(limit, afterId)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(int, string) store.StoreChannel); ok {
var r0 []*model.PostForExport
if rf, ok := ret.Get(0).(func(int, string) []*model.PostForExport); ok {
r0 = rf(limit, afterId)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).([]*model.PostForExport)
}
}
return r0
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(int, string) *model.AppError); ok {
r1 = rf(limit, afterId)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
}
// GetPosts provides a mock function with given fields: channelId, offset, limit, allowFromCache

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

@@ -2114,12 +2114,11 @@ func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) {
p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post)
r1 := <-ss.Post().GetParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, r1.Err)
d1 := r1.Data.([]*model.PostForExport)
posts, err := ss.Post().GetParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, err)
found := false
for _, p := range d1 {
for _, p := range posts {
if p.Id == p1.Id {
found = true
assert.Equal(t, p.Id, p1.Id)