mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Migrate Team.GetMember to Sync by default (#11141)
* Team.GetMember to Sync * fix govet: declaration of err shadows declaration at line 250 * Requested change * Requested change
This commit is contained in:
committed by
Jesús Espino
parent
b61ded0ae4
commit
8c56a5f202
@@ -765,8 +765,7 @@ func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Chan
|
||||
func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team) {
|
||||
utils.DisableDebugLogForTest()
|
||||
|
||||
if tmr := <-me.App.Srv.Store.Team().GetMember(team.Id, user.Id); tmr.Err == nil {
|
||||
tm := tmr.Data.(*model.TeamMember)
|
||||
if tm, err := me.App.Srv.Store.Team().GetMember(team.Id, user.Id); err == nil {
|
||||
tm.SchemeAdmin = true
|
||||
if sr := <-me.App.Srv.Store.Team().UpdateMember(tm); sr.Err != nil {
|
||||
utils.EnableDebugLogForTest()
|
||||
@@ -774,10 +773,10 @@ func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team)
|
||||
}
|
||||
} else {
|
||||
utils.EnableDebugLogForTest()
|
||||
mlog.Error(tmr.Err.Error())
|
||||
mlog.Error(err.Error())
|
||||
|
||||
time.Sleep(time.Second)
|
||||
panic(tmr.Err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
utils.EnableDebugLogForTest()
|
||||
@@ -786,8 +785,7 @@ func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team)
|
||||
func (me *TestHelper) UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) {
|
||||
utils.DisableDebugLogForTest()
|
||||
|
||||
if tmr := <-me.App.Srv.Store.Team().GetMember(team.Id, user.Id); tmr.Err == nil {
|
||||
tm := tmr.Data.(*model.TeamMember)
|
||||
if tm, err := me.App.Srv.Store.Team().GetMember(team.Id, user.Id); err == nil {
|
||||
tm.SchemeAdmin = false
|
||||
if sr := <-me.App.Srv.Store.Team().UpdateMember(tm); sr.Err != nil {
|
||||
utils.EnableDebugLogForTest()
|
||||
@@ -795,10 +793,10 @@ func (me *TestHelper) UpdateUserToNonTeamAdmin(user *model.User, team *model.Tea
|
||||
}
|
||||
} else {
|
||||
utils.EnableDebugLogForTest()
|
||||
mlog.Error(tmr.Err.Error())
|
||||
mlog.Error(err.Error())
|
||||
|
||||
time.Sleep(time.Second)
|
||||
panic(tmr.Err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
utils.EnableDebugLogForTest()
|
||||
|
||||
@@ -943,14 +943,11 @@ func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMem
|
||||
}
|
||||
|
||||
func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) {
|
||||
tmchan := a.Srv.Store.Team().GetMember(channel.TeamId, user.Id)
|
||||
var teamMember *model.TeamMember
|
||||
teamMember, err := a.Srv.Store.Team().GetMember(channel.TeamId, user.Id)
|
||||
|
||||
result := <-tmchan
|
||||
if result.Err != nil {
|
||||
return nil, result.Err
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
teamMember = result.Data.(*model.TeamMember)
|
||||
if teamMember.DeleteAt > 0 {
|
||||
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user.to.channel.failed.deleted.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
25
app/team.go
25
app/team.go
@@ -247,14 +247,13 @@ func (a *App) GetSchemeRolesForTeam(teamId string) (string, string, string, *mod
|
||||
}
|
||||
|
||||
func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError) {
|
||||
result := <-a.Srv.Store.Team().GetMember(teamId, userId)
|
||||
if result.Err != nil {
|
||||
return nil, result.Err
|
||||
member, err := a.Srv.Store.Team().GetMember(teamId, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
member := result.Data.(*model.TeamMember)
|
||||
|
||||
if member == nil {
|
||||
err := model.NewAppError("UpdateTeamMemberRoles", "api.team.update_member_roles.not_a_member", nil, "userId="+userId+" teamId="+teamId, http.StatusBadRequest)
|
||||
err = model.NewAppError("UpdateTeamMemberRoles", "api.team.update_member_roles.not_a_member", nil, "userId="+userId+" teamId="+teamId, http.StatusBadRequest)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -305,7 +304,7 @@ func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles strin
|
||||
|
||||
member.ExplicitRoles = strings.Join(newExplicitRoles, " ")
|
||||
|
||||
result = <-a.Srv.Store.Team().UpdateMember(member)
|
||||
result := <-a.Srv.Store.Team().UpdateMember(member)
|
||||
if result.Err != nil {
|
||||
return nil, result.Err
|
||||
}
|
||||
@@ -508,8 +507,8 @@ func (a *App) joinUserToTeam(team *model.Team, user *model.User) (*model.TeamMem
|
||||
tm.SchemeAdmin = true
|
||||
}
|
||||
|
||||
etmr := <-a.Srv.Store.Team().GetMember(team.Id, user.Id)
|
||||
if etmr.Err != nil {
|
||||
rtm, err := a.Srv.Store.Team().GetMember(team.Id, user.Id)
|
||||
if err != nil {
|
||||
// Membership appears to be missing. Lets try to add.
|
||||
tmr := <-a.Srv.Store.Team().SaveMember(tm, *a.Config().TeamSettings.MaxUsersPerTeam)
|
||||
if tmr.Err != nil {
|
||||
@@ -518,9 +517,7 @@ func (a *App) joinUserToTeam(team *model.Team, user *model.User) (*model.TeamMem
|
||||
return tmr.Data.(*model.TeamMember), false, nil
|
||||
}
|
||||
|
||||
// Membership already exists. Check if deleted and and update, otherwise do nothing
|
||||
rtm := etmr.Data.(*model.TeamMember)
|
||||
|
||||
// Membership already exists. Check if deleted and update, otherwise do nothing
|
||||
// Do nothing if already added
|
||||
if rtm.DeleteAt == 0 {
|
||||
return rtm, true, nil
|
||||
@@ -683,11 +680,7 @@ func (a *App) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) {
|
||||
}
|
||||
|
||||
func (a *App) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
|
||||
result := <-a.Srv.Store.Team().GetMember(teamId, userId)
|
||||
if result.Err != nil {
|
||||
return nil, result.Err
|
||||
}
|
||||
return result.Data.(*model.TeamMember), nil
|
||||
return a.Srv.Store.Team().GetMember(teamId, userId)
|
||||
}
|
||||
|
||||
func (a *App) GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) {
|
||||
|
||||
@@ -587,30 +587,26 @@ func (s SqlTeamStore) UpdateMember(member *model.TeamMember) store.StoreChannel
|
||||
})
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) GetMember(teamId string, userId string) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
query := s.getTeamMembersWithSchemeSelectQuery().
|
||||
Where(sq.Eq{"TeamMembers.TeamId": teamId}).
|
||||
Where(sq.Eq{"TeamMembers.UserId": userId})
|
||||
func (s SqlTeamStore) GetMember(teamId string, userId string) (*model.TeamMember, *model.AppError) {
|
||||
query := s.getTeamMembersWithSchemeSelectQuery().
|
||||
Where(sq.Eq{"TeamMembers.TeamId": teamId}).
|
||||
Where(sq.Eq{"TeamMembers.UserId": userId})
|
||||
|
||||
queryString, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
queryString, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
var dbMember teamMemberWithSchemeRoles
|
||||
err = s.GetReplica().SelectOne(&dbMember, queryString, args...)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
result.Err = model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.missing.app_error", nil, "teamId="+teamId+" userId="+userId+" "+err.Error(), http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
result.Err = model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.app_error", nil, "teamId="+teamId+" userId="+userId+" "+err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
var dbMember teamMemberWithSchemeRoles
|
||||
err = s.GetReplica().SelectOne(&dbMember, queryString, args...)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.missing.app_error", nil, "teamId="+teamId+" userId="+userId+" "+err.Error(), http.StatusNotFound)
|
||||
}
|
||||
result.Data = dbMember.ToModel()
|
||||
})
|
||||
return nil, model.NewAppError("SqlTeamStore.GetMember", "store.sql_team.get_member.app_error", nil, "teamId="+teamId+" userId="+userId+" "+err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
return dbMember.ToModel(), nil
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) GetMembers(teamId string, offset int, limit int, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError) {
|
||||
|
||||
@@ -102,7 +102,7 @@ type TeamStore interface {
|
||||
AnalyticsTeamCount() (int64, *model.AppError)
|
||||
SaveMember(member *model.TeamMember, maxUsersPerTeam int) StoreChannel
|
||||
UpdateMember(member *model.TeamMember) StoreChannel
|
||||
GetMember(teamId string, userId string) StoreChannel
|
||||
GetMember(teamId string, userId string) (*model.TeamMember, *model.AppError)
|
||||
GetMembers(teamId string, offset int, limit int, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
|
||||
GetMembersByIds(teamId string, userIds []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
|
||||
GetTotalMemberCount(teamId string) (int64, *model.AppError)
|
||||
|
||||
@@ -336,19 +336,28 @@ func (_m *TeamStore) GetChannelUnreadsForTeam(teamId string, userId string) ([]*
|
||||
}
|
||||
|
||||
// GetMember provides a mock function with given fields: teamId, userId
|
||||
func (_m *TeamStore) GetMember(teamId string, userId string) store.StoreChannel {
|
||||
func (_m *TeamStore) GetMember(teamId string, userId string) (*model.TeamMember, *model.AppError) {
|
||||
ret := _m.Called(teamId, userId)
|
||||
|
||||
var r0 store.StoreChannel
|
||||
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok {
|
||||
var r0 *model.TeamMember
|
||||
if rf, ok := ret.Get(0).(func(string, string) *model.TeamMember); ok {
|
||||
r0 = rf(teamId, userId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StoreChannel)
|
||||
r0 = ret.Get(0).(*model.TeamMember)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
|
||||
r1 = rf(teamId, userId)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetMembers provides a mock function with given fields: teamId, offset, limit, restrictions
|
||||
|
||||
@@ -1037,10 +1037,9 @@ func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
m1 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()}
|
||||
store.Must(ss.Team().SaveMember(m1, -1))
|
||||
|
||||
if r := <-ss.Team().GetMember(m1.TeamId, m1.UserId); r.Err != nil {
|
||||
t.Fatal(r.Err)
|
||||
if rm1, err := ss.Team().GetMember(m1.TeamId, m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
rm1 := r.Data.(*model.TeamMember)
|
||||
|
||||
if rm1.TeamId != m1.TeamId {
|
||||
t.Fatal("bad team id")
|
||||
@@ -1051,11 +1050,11 @@ func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
}
|
||||
}
|
||||
|
||||
if r := <-ss.Team().GetMember(m1.TeamId, ""); r.Err == nil {
|
||||
if _, err := ss.Team().GetMember(m1.TeamId, ""); err == nil {
|
||||
t.Fatal("empty user id - should have failed")
|
||||
}
|
||||
|
||||
if r := <-ss.Team().GetMember("", m1.UserId); r.Err == nil {
|
||||
if _, err := ss.Team().GetMember("", m1.UserId); err == nil {
|
||||
t.Fatal("empty team id - should have failed")
|
||||
}
|
||||
|
||||
@@ -1084,9 +1083,8 @@ func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
m2 := &model.TeamMember{TeamId: t2.Id, UserId: model.NewId(), SchemeUser: true}
|
||||
store.Must(ss.Team().SaveMember(m2, -1))
|
||||
|
||||
r2 := <-ss.Team().GetMember(m2.TeamId, m2.UserId)
|
||||
require.Nil(t, r2.Err)
|
||||
m3 := r2.Data.(*model.TeamMember)
|
||||
m3, err := ss.Team().GetMember(m2.TeamId, m2.UserId)
|
||||
require.Nil(t, err)
|
||||
t.Log(m3)
|
||||
|
||||
assert.Equal(t, s2.DefaultTeamUserRole, m3.Roles)
|
||||
@@ -1094,9 +1092,8 @@ func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
m4 := &model.TeamMember{TeamId: t2.Id, UserId: model.NewId(), SchemeGuest: true}
|
||||
store.Must(ss.Team().SaveMember(m4, -1))
|
||||
|
||||
r3 := <-ss.Team().GetMember(m4.TeamId, m4.UserId)
|
||||
require.Nil(t, r3.Err)
|
||||
m5 := r3.Data.(*model.TeamMember)
|
||||
m5, err := ss.Team().GetMember(m4.TeamId, m4.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Equal(t, s2.DefaultTeamGuestRole, m5.Roles)
|
||||
}
|
||||
@@ -1440,23 +1437,20 @@ func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) {
|
||||
}
|
||||
}
|
||||
|
||||
res1 := <-ss.Team().GetMember(tm1.TeamId, tm1.UserId)
|
||||
assert.Nil(t, res1.Err)
|
||||
tm1b := res1.Data.(*model.TeamMember)
|
||||
tm1b, err := ss.Team().GetMember(tm1.TeamId, tm1.UserId)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "", tm1b.ExplicitRoles)
|
||||
assert.True(t, tm1b.SchemeUser)
|
||||
assert.True(t, tm1b.SchemeAdmin)
|
||||
|
||||
res2 := <-ss.Team().GetMember(tm2.TeamId, tm2.UserId)
|
||||
assert.Nil(t, res2.Err)
|
||||
tm2b := res2.Data.(*model.TeamMember)
|
||||
tm2b, err := ss.Team().GetMember(tm2.TeamId, tm2.UserId)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "", tm2b.ExplicitRoles)
|
||||
assert.True(t, tm2b.SchemeUser)
|
||||
assert.False(t, tm2b.SchemeAdmin)
|
||||
|
||||
res3 := <-ss.Team().GetMember(tm3.TeamId, tm3.UserId)
|
||||
assert.Nil(t, res3.Err)
|
||||
tm3b := res3.Data.(*model.TeamMember)
|
||||
tm3b, err := ss.Team().GetMember(tm3.TeamId, tm3.UserId)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "something_else", tm3b.ExplicitRoles)
|
||||
assert.False(t, tm3b.SchemeUser)
|
||||
assert.False(t, tm3b.SchemeAdmin)
|
||||
@@ -1537,21 +1531,21 @@ func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) {
|
||||
|
||||
require.Nil(t, (<-ss.Team().ClearAllCustomRoleAssignments()).Err)
|
||||
|
||||
r1 := <-ss.Team().GetMember(m1.TeamId, m1.UserId)
|
||||
require.Nil(t, r1.Err)
|
||||
assert.Equal(t, m1.ExplicitRoles, r1.Data.(*model.TeamMember).Roles)
|
||||
r1, err := ss.Team().GetMember(m1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, m1.ExplicitRoles, r1.Roles)
|
||||
|
||||
r2 := <-ss.Team().GetMember(m2.TeamId, m2.UserId)
|
||||
require.Nil(t, r2.Err)
|
||||
assert.Equal(t, "team_user team_admin", r2.Data.(*model.TeamMember).Roles)
|
||||
r2, err := ss.Team().GetMember(m2.TeamId, m2.UserId)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "team_user team_admin", r2.Roles)
|
||||
|
||||
r3 := <-ss.Team().GetMember(m3.TeamId, m3.UserId)
|
||||
require.Nil(t, r3.Err)
|
||||
assert.Equal(t, m3.ExplicitRoles, r3.Data.(*model.TeamMember).Roles)
|
||||
r3, err := ss.Team().GetMember(m3.TeamId, m3.UserId)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, m3.ExplicitRoles, r3.Roles)
|
||||
|
||||
r4 := <-ss.Team().GetMember(m4.TeamId, m4.UserId)
|
||||
require.Nil(t, r4.Err)
|
||||
assert.Equal(t, "", r4.Data.(*model.TeamMember).Roles)
|
||||
r4, err := ss.Team().GetMember(m4.TeamId, m4.UserId)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "", r4.Roles)
|
||||
}
|
||||
|
||||
func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) {
|
||||
|
||||
Reference in New Issue
Block a user