Migrates Channel.GetChannelMembersForExport to sync by default (#11271)

Этот коммит содержится в:
Rodrigo Villablanca Vásquez
2019-06-18 15:08:36 -04:00
коммит произвёл Jesús Espino
родитель 8853a71f0b
Коммит 3c8d772bf5
5 изменённых файлов: 49 добавлений и 46 удалений

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

@@ -289,13 +289,11 @@ func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImpo
func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]UserChannelImportData, *model.AppError) { func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]UserChannelImportData, *model.AppError) {
var memberships []UserChannelImportData var memberships []UserChannelImportData
result := <-a.Srv.Store.Channel().GetChannelMembersForExport(userId, teamId) members, err := a.Srv.Store.Channel().GetChannelMembersForExport(userId, teamId)
if result.Err != nil { if err != nil {
return nil, result.Err return nil, err
} }
members := result.Data.([]*model.ChannelMemberForExport)
category := model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL category := model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL
preferences, err := a.GetPreferenceByCategoryForUser(userId, category) preferences, err := a.GetPreferenceByCategoryForUser(userId, category)
if err != nil && err.StatusCode != http.StatusNotFound { if err != nil && err.StatusCode != http.StatusNotFound {

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

@@ -2509,40 +2509,37 @@ func (s SqlChannelStore) GetAllChannelsForExportAfter(limit int, afterId string)
}) })
} }
func (s SqlChannelStore) GetChannelMembersForExport(userId string, teamId string) store.StoreChannel { func (s SqlChannelStore) GetChannelMembersForExport(userId string, teamId string) ([]*model.ChannelMemberForExport, *model.AppError) {
return store.Do(func(result *store.StoreResult) { var members []*model.ChannelMemberForExport
var members []*model.ChannelMemberForExport _, err := s.GetReplica().Select(&members, `
_, err := s.GetReplica().Select(&members, ` SELECT
SELECT ChannelMembers.ChannelId,
ChannelMembers.ChannelId, ChannelMembers.UserId,
ChannelMembers.UserId, ChannelMembers.Roles,
ChannelMembers.Roles, ChannelMembers.LastViewedAt,
ChannelMembers.LastViewedAt, ChannelMembers.MsgCount,
ChannelMembers.MsgCount, ChannelMembers.MentionCount,
ChannelMembers.MentionCount, ChannelMembers.NotifyProps,
ChannelMembers.NotifyProps, ChannelMembers.LastUpdateAt,
ChannelMembers.LastUpdateAt, ChannelMembers.SchemeUser,
ChannelMembers.SchemeUser, ChannelMembers.SchemeAdmin,
ChannelMembers.SchemeAdmin, (ChannelMembers.SchemeGuest IS NOT NULL AND ChannelMembers.SchemeGuest) as SchemeGuest,
(ChannelMembers.SchemeGuest IS NOT NULL AND ChannelMembers.SchemeGuest) as SchemeGuest, Channels.Name as ChannelName
Channels.Name as ChannelName FROM
FROM ChannelMembers
ChannelMembers INNER JOIN
INNER JOIN Channels ON ChannelMembers.ChannelId = Channels.Id
Channels ON ChannelMembers.ChannelId = Channels.Id WHERE
WHERE ChannelMembers.UserId = :UserId
ChannelMembers.UserId = :UserId AND Channels.TeamId = :TeamId
AND Channels.TeamId = :TeamId AND Channels.DeleteAt = 0`,
AND Channels.DeleteAt = 0`, map[string]interface{}{"TeamId": teamId, "UserId": userId})
map[string]interface{}{"TeamId": teamId, "UserId": userId})
if err != nil { if err != nil {
result.Err = model.NewAppError("SqlChannelStore.GetChannelMembersForExport", "store.sql_channel.get_members.app_error", nil, "teamId="+teamId+", userId="+userId+", err="+err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SqlChannelStore.GetChannelMembersForExport", "store.sql_channel.get_members.app_error", nil, "teamId="+teamId+", userId="+userId+", err="+err.Error(), http.StatusInternalServerError)
return }
}
result.Data = members return members, nil
})
} }
func (s SqlChannelStore) GetAllDirectChannelsForExportAfter(limit int, afterId string) store.StoreChannel { func (s SqlChannelStore) GetAllDirectChannelsForExportAfter(limit int, afterId string) store.StoreChannel {

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

@@ -196,7 +196,7 @@ type ChannelStore interface {
MigratePublicChannels() error MigratePublicChannels() error
GetAllChannelsForExportAfter(limit int, afterId string) StoreChannel GetAllChannelsForExportAfter(limit int, afterId string) StoreChannel
GetAllDirectChannelsForExportAfter(limit int, afterId string) StoreChannel GetAllDirectChannelsForExportAfter(limit int, afterId string) StoreChannel
GetChannelMembersForExport(userId string, teamId string) StoreChannel GetChannelMembersForExport(userId string, teamId string) ([]*model.ChannelMemberForExport, *model.AppError)
RemoveAllDeactivatedMembers(channelId string) StoreChannel RemoveAllDeactivatedMembers(channelId string) StoreChannel
GetChannelsBatchForIndexing(startTime, endTime int64, limit int) ([]*model.Channel, *model.AppError) GetChannelsBatchForIndexing(startTime, endTime int64, limit int) ([]*model.Channel, *model.AppError)
UserBelongsToChannels(userId string, channelIds []string) (bool, *model.AppError) UserBelongsToChannels(userId string, channelIds []string) (bool, *model.AppError)

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

@@ -3348,10 +3348,9 @@ func testChannelStoreGetChannelMembersForExport(t *testing.T, ss store.Store) {
m2.NotifyProps = model.GetDefaultChannelNotifyProps() m2.NotifyProps = model.GetDefaultChannelNotifyProps()
store.Must(ss.Channel().SaveMember(&m2)) store.Must(ss.Channel().SaveMember(&m2))
r1 := <-ss.Channel().GetChannelMembersForExport(u1.Id, t1.Id) d1, err := ss.Channel().GetChannelMembersForExport(u1.Id, t1.Id)
assert.Nil(t, r1.Err) assert.Nil(t, err)
d1 := r1.Data.([]*model.ChannelMemberForExport)
assert.Len(t, d1, 1) assert.Len(t, d1, 1)
cmfe1 := d1[0] cmfe1 := d1[0]

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

@@ -368,19 +368,28 @@ func (_m *ChannelStore) GetChannelCounts(teamId string, userId string) (*model.C
} }
// GetChannelMembersForExport provides a mock function with given fields: userId, teamId // GetChannelMembersForExport provides a mock function with given fields: userId, teamId
func (_m *ChannelStore) GetChannelMembersForExport(userId string, teamId string) store.StoreChannel { func (_m *ChannelStore) GetChannelMembersForExport(userId string, teamId string) ([]*model.ChannelMemberForExport, *model.AppError) {
ret := _m.Called(userId, teamId) ret := _m.Called(userId, teamId)
var r0 store.StoreChannel var r0 []*model.ChannelMemberForExport
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string, string) []*model.ChannelMemberForExport); ok {
r0 = rf(userId, teamId) r0 = rf(userId, teamId)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).([]*model.ChannelMemberForExport)
} }
} }
return r0 var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
r1 = rf(userId, teamId)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
} }
// GetChannelMembersTimezones provides a mock function with given fields: channelId // GetChannelMembersTimezones provides a mock function with given fields: channelId