From 651c3196a0dc3866b01c71ff5b7cc898b7c6793c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Villablanca=20V=C3=A1squez?= Date: Mon, 17 Jun 2019 13:46:37 -0400 Subject: [PATCH] Channel.GetDeleted to sync by default (#11205) --- app/channel.go | 6 +---- store/sqlstore/channel_store.go | 20 ++++++--------- store/store.go | 2 +- store/storetest/channel_store.go | 35 ++++++++++++--------------- store/storetest/mocks/ChannelStore.go | 19 +++++++++++---- 5 files changed, 39 insertions(+), 43 deletions(-) diff --git a/app/channel.go b/app/channel.go index 388571be23..ce5414300f 100644 --- a/app/channel.go +++ b/app/channel.go @@ -1257,11 +1257,7 @@ func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (* } func (a *App) GetDeletedChannels(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) { - result := <-a.Srv.Store.Channel().GetDeleted(teamId, offset, limit) - if result.Err != nil { - return nil, result.Err - } - return result.Data.(*model.ChannelList), nil + return a.Srv.Store.Channel().GetDeleted(teamId, offset, limit) } func (a *App) GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) { diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index 8b7b44c334..9c73d954c7 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -1270,21 +1270,17 @@ func (s SqlChannelStore) GetDeletedByName(teamId string, name string) store.Stor }) } -func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - channels := &model.ChannelList{} +func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) { + channels := &model.ChannelList{} - if _, err := s.GetReplica().Select(channels, "SELECT * FROM Channels WHERE (TeamId = :TeamId OR TeamId = '') AND DeleteAt != 0 ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"TeamId": teamId, "Limit": limit, "Offset": offset}); err != nil { - if err == sql.ErrNoRows { - result.Err = model.NewAppError("SqlChannelStore.GetDeleted", "store.sql_channel.get_deleted.missing.app_error", nil, "teamId="+teamId+", "+err.Error(), http.StatusNotFound) - return - } - result.Err = model.NewAppError("SqlChannelStore.GetDeleted", "store.sql_channel.get_deleted.existing.app_error", nil, "teamId="+teamId+", "+err.Error(), http.StatusInternalServerError) - return + if _, err := s.GetReplica().Select(channels, "SELECT * FROM Channels WHERE (TeamId = :TeamId OR TeamId = '') AND DeleteAt != 0 ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"TeamId": teamId, "Limit": limit, "Offset": offset}); err != nil { + if err == sql.ErrNoRows { + return nil, model.NewAppError("SqlChannelStore.GetDeleted", "store.sql_channel.get_deleted.missing.app_error", nil, "teamId="+teamId+", "+err.Error(), http.StatusNotFound) } + return nil, model.NewAppError("SqlChannelStore.GetDeleted", "store.sql_channel.get_deleted.existing.app_error", nil, "teamId="+teamId+", "+err.Error(), http.StatusInternalServerError) + } - result.Data = channels - }) + return channels, nil } var CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY = ` diff --git a/store/store.go b/store/store.go index 5ded5ce3d7..176657ca87 100644 --- a/store/store.go +++ b/store/store.go @@ -146,7 +146,7 @@ type ChannelStore interface { GetByNames(team_id string, names []string, allowFromCache bool) ([]*model.Channel, *model.AppError) GetByNameIncludeDeleted(team_id string, name string, allowFromCache bool) StoreChannel GetDeletedByName(team_id string, name string) StoreChannel - GetDeleted(team_id string, offset int, limit int) StoreChannel + GetDeleted(team_id string, offset int, limit int) (*model.ChannelList, *model.AppError) GetChannels(teamId string, userId string, includeDeleted bool) StoreChannel GetAllChannels(page, perPage int, opts ChannelSearchOpts) StoreChannel GetMoreChannels(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 42ee91c1ce..e720018962 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -780,11 +780,10 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) { err = ss.Channel().Delete(o1.Id, model.GetMillis()) require.Nil(t, err, "channel should have been deleted") - cresult := <-ss.Channel().GetDeleted(o1.TeamId, 0, 100) - if cresult.Err != nil { - t.Fatal(cresult.Err) + list, err := ss.Channel().GetDeleted(o1.TeamId, 0, 100) + if err != nil { + t.Fatal(err) } - list := cresult.Data.(*model.ChannelList) if len(*list) != 1 { t.Fatal("wrong list") @@ -802,11 +801,10 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) { _, err = ss.Channel().Save(&o2, -1) require.Nil(t, err) - cresult = <-ss.Channel().GetDeleted(o1.TeamId, 0, 100) - if cresult.Err != nil { - t.Fatal(cresult.Err) + list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100) + if err != nil { + t.Fatal(err) } - list = cresult.Data.(*model.ChannelList) if len(*list) != 1 { t.Fatal("wrong list") @@ -824,31 +822,28 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) { err = ss.Channel().Delete(o3.Id, model.GetMillis()) require.Nil(t, err, "channel should have been deleted") - cresult = <-ss.Channel().GetDeleted(o1.TeamId, 0, 100) - if cresult.Err != nil { - t.Fatal(cresult.Err) + list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100) + if err != nil { + t.Fatal(err) } - list = cresult.Data.(*model.ChannelList) if len(*list) != 2 { t.Fatal("wrong list length") } - cresult = <-ss.Channel().GetDeleted(o1.TeamId, 0, 1) - if cresult.Err != nil { - t.Fatal(cresult.Err) + list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 1) + if err != nil { + t.Fatal(err) } - list = cresult.Data.(*model.ChannelList) if len(*list) != 1 { t.Fatal("wrong list length") } - cresult = <-ss.Channel().GetDeleted(o1.TeamId, 1, 1) - if cresult.Err != nil { - t.Fatal(cresult.Err) + list, err = ss.Channel().GetDeleted(o1.TeamId, 1, 1) + if err != nil { + t.Fatal(err) } - list = cresult.Data.(*model.ChannelList) if len(*list) != 1 { t.Fatal("wrong list length") diff --git a/store/storetest/mocks/ChannelStore.go b/store/storetest/mocks/ChannelStore.go index d476efa2f3..8f64454673 100644 --- a/store/storetest/mocks/ChannelStore.go +++ b/store/storetest/mocks/ChannelStore.go @@ -471,19 +471,28 @@ func (_m *ChannelStore) GetChannelsByScheme(schemeId string, offset int, limit i } // GetDeleted provides a mock function with given fields: team_id, offset, limit -func (_m *ChannelStore) GetDeleted(team_id string, offset int, limit int) store.StoreChannel { +func (_m *ChannelStore) GetDeleted(team_id string, offset int, limit int) (*model.ChannelList, *model.AppError) { ret := _m.Called(team_id, offset, limit) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok { + var r0 *model.ChannelList + if rf, ok := ret.Get(0).(func(string, int, int) *model.ChannelList); ok { r0 = rf(team_id, offset, limit) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.ChannelList) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok { + r1 = rf(team_id, offset, limit) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetDeletedByName provides a mock function with given fields: team_id, name