Migrate User.GetEtagForProfiles to sync by default (#11508)

Этот коммит содержится в:
Rodrigo Villablanca Vásquez
2019-07-04 04:05:27 -04:00
коммит произвёл Jesús Espino
родитель b832985f1d
Коммит c0c93a1b09
5 изменённых файлов: 14 добавлений и 24 удалений

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

@@ -498,7 +498,7 @@ func (a *App) GetUsersNotInTeamPage(teamId string, groupConstrained bool, page i
} }
func (a *App) GetUsersInTeamEtag(teamId string, restrictionsHash string) string { func (a *App) GetUsersInTeamEtag(teamId string, restrictionsHash string) string {
return fmt.Sprintf("%v.%v.%v.%v", (<-a.Srv.Store.User().GetEtagForProfiles(teamId)).Data.(string), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash) return fmt.Sprintf("%v.%v.%v.%v", a.Srv.Store.User().GetEtagForProfiles(teamId), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash)
} }
func (a *App) GetUsersNotInTeamEtag(teamId string, restrictionsHash string) string { func (a *App) GetUsersNotInTeamEtag(teamId string, restrictionsHash string) string {

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

@@ -488,15 +488,12 @@ func applyTeamGroupConstrainedFilter(query sq.SelectBuilder, teamId string) sq.S
)`, teamId) )`, teamId)
} }
func (s SqlUserStore) GetEtagForProfiles(teamId string) store.StoreChannel { func (s SqlUserStore) GetEtagForProfiles(teamId string) string {
return store.Do(func(result *store.StoreResult) { updateAt, err := s.GetReplica().SelectInt("SELECT UpdateAt FROM Users, TeamMembers WHERE TeamMembers.TeamId = :TeamId AND Users.Id = TeamMembers.UserId ORDER BY UpdateAt DESC LIMIT 1", map[string]interface{}{"TeamId": teamId})
updateAt, err := s.GetReplica().SelectInt("SELECT UpdateAt FROM Users, TeamMembers WHERE TeamMembers.TeamId = :TeamId AND Users.Id = TeamMembers.UserId ORDER BY UpdateAt DESC LIMIT 1", map[string]interface{}{"TeamId": teamId}) if err != nil {
if err != nil { return fmt.Sprintf("%v.%v", model.CurrentVersion, model.GetMillis())
result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, model.GetMillis()) }
} else { return fmt.Sprintf("%v.%v", model.CurrentVersion, updateAt)
result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, updateAt)
}
})
} }
func (us SqlUserStore) GetProfiles(options *model.UserGetOptions) store.StoreChannel { func (us SqlUserStore) GetProfiles(options *model.UserGetOptions) store.StoreChannel {

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

@@ -281,7 +281,7 @@ type UserStore interface {
GetForLogin(loginId string, allowSignInWithUsername, allowSignInWithEmail bool) (*model.User, *model.AppError) GetForLogin(loginId string, allowSignInWithUsername, allowSignInWithEmail bool) (*model.User, *model.AppError)
VerifyEmail(userId, email string) (string, *model.AppError) VerifyEmail(userId, email string) (string, *model.AppError)
GetEtagForAllProfiles() StoreChannel GetEtagForAllProfiles() StoreChannel
GetEtagForProfiles(teamId string) StoreChannel GetEtagForProfiles(teamId string) string
UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel
GetSystemAdminProfiles() (map[string]*model.User, *model.AppError) GetSystemAdminProfiles() (map[string]*model.User, *model.AppError)
PermanentDelete(userId string) *model.AppError PermanentDelete(userId string) *model.AppError

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

@@ -380,16 +380,14 @@ func (_m *UserStore) GetEtagForAllProfiles() store.StoreChannel {
} }
// GetEtagForProfiles provides a mock function with given fields: teamId // GetEtagForProfiles provides a mock function with given fields: teamId
func (_m *UserStore) GetEtagForProfiles(teamId string) store.StoreChannel { func (_m *UserStore) GetEtagForProfiles(teamId string) string {
ret := _m.Called(teamId) ret := _m.Called(teamId)
var r0 store.StoreChannel var r0 string
if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string) string); ok {
r0 = rf(teamId) r0 = rf(teamId)
} else { } else {
if ret.Get(0) != nil { r0 = ret.Get(0).(string)
r0 = ret.Get(0).(store.StoreChannel)
}
} }
return r0 return r0

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

@@ -609,9 +609,7 @@ func testUserStoreGetProfiles(t *testing.T, ss store.Store) {
}) })
t.Run("etag changes for all after user creation", func(t *testing.T) { t.Run("etag changes for all after user creation", func(t *testing.T) {
result := <-ss.User().GetEtagForProfiles(teamId) etag := ss.User().GetEtagForProfiles(teamId)
require.Nil(t, result.Err)
etag := result.Data.(string)
uNew := &model.User{} uNew := &model.User{}
uNew.Email = MakeEmail() uNew.Email = MakeEmail()
@@ -619,10 +617,7 @@ func testUserStoreGetProfiles(t *testing.T, ss store.Store) {
defer func() { require.Nil(t, ss.User().PermanentDelete(uNew.Id)) }() defer func() { require.Nil(t, ss.User().PermanentDelete(uNew.Id)) }()
store.Must(ss.Team().SaveMember(&model.TeamMember{TeamId: teamId, UserId: uNew.Id}, -1)) store.Must(ss.Team().SaveMember(&model.TeamMember{TeamId: teamId, UserId: uNew.Id}, -1))
result = <-ss.User().GetEtagForProfiles(teamId) updatedEtag := ss.User().GetEtagForProfiles(teamId)
require.Nil(t, result.Err)
updatedEtag := result.Data.(string)
require.NotEqual(t, etag, updatedEtag) require.NotEqual(t, etag, updatedEtag)
}) })