[MM-16777] Migrate Team.MigrateTeamMembers to Sync by default (#11584)
* Migrate Team.MigrateTeamMembers to Sync by default * Remove commented out MigrateTeamMembers function * Remove return nil when no team members in query * Return nil when no more team members in query * Remove commented out code lines * Format MigrateTeamMembers code * Return some data from MigrateTeamMembers function * Return data and error from MigrateTeamMembers * Use result for consistency * Control loop to allow loop to break in storetest/team_store.go * Fix test MigrateTeamMembers test in storetest/team_store.go * Change err to e in storetest/team_store.go
Этот коммит содержится в:
коммит произвёл
Jesús Espino
родитель
9ce5b28c63
Коммит
15be0c6c79
@@ -802,70 +802,65 @@ func (s SqlTeamStore) GetTeamsByScheme(schemeId string, offset int, limit int) (
|
||||
// in batches as a single transaction per batch to ensure consistency but to also minimise execution time to avoid
|
||||
// causing unnecessary table locks. **THIS FUNCTION SHOULD NOT BE USED FOR ANY OTHER PURPOSE.** Executing this function
|
||||
// *after* the new Schemes functionality has been used on an installation will have unintended consequences.
|
||||
func (s SqlTeamStore) MigrateTeamMembers(fromTeamId string, fromUserId string) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
var transaction *gorp.Transaction
|
||||
var err error
|
||||
func (s SqlTeamStore) MigrateTeamMembers(fromTeamId string, fromUserId string) (map[string]string, *model.AppError) {
|
||||
var transaction *gorp.Transaction
|
||||
var err error
|
||||
|
||||
if transaction, err = s.GetMaster().Begin(); err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
if transaction, err = s.GetMaster().Begin(); err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
defer finalizeTransaction(transaction)
|
||||
|
||||
var teamMembers []teamMember
|
||||
if _, err := transaction.Select(&teamMembers, "SELECT * from TeamMembers WHERE (TeamId, UserId) > (:FromTeamId, :FromUserId) ORDER BY TeamId, UserId LIMIT 100", map[string]interface{}{"FromTeamId": fromTeamId, "FromUserId": fromUserId}); err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.select.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if len(teamMembers) == 0 {
|
||||
// No more team members in query result means that the migration has finished.
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
for _, member := range teamMembers {
|
||||
roles := strings.Fields(member.Roles)
|
||||
var newRoles []string
|
||||
if !member.SchemeAdmin.Valid {
|
||||
member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
defer finalizeTransaction(transaction)
|
||||
if !member.SchemeUser.Valid {
|
||||
member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
if !member.SchemeGuest.Valid {
|
||||
member.SchemeGuest = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
for _, role := range roles {
|
||||
if role == model.TEAM_ADMIN_ROLE_ID {
|
||||
member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true}
|
||||
} else if role == model.TEAM_USER_ROLE_ID {
|
||||
member.SchemeUser = sql.NullBool{Bool: true, Valid: true}
|
||||
} else if role == model.TEAM_GUEST_ROLE_ID {
|
||||
member.SchemeGuest = sql.NullBool{Bool: true, Valid: true}
|
||||
} else {
|
||||
newRoles = append(newRoles, role)
|
||||
}
|
||||
}
|
||||
member.Roles = strings.Join(newRoles, " ")
|
||||
|
||||
var teamMembers []teamMember
|
||||
if _, err := transaction.Select(&teamMembers, "SELECT * from TeamMembers WHERE (TeamId, UserId) > (:FromTeamId, :FromUserId) ORDER BY TeamId, UserId LIMIT 100", map[string]interface{}{"FromTeamId": fromTeamId, "FromUserId": fromUserId}); err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.select.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
if _, err := transaction.Update(&member); err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.update.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if len(teamMembers) == 0 {
|
||||
// No more team members in query result means that the migration has finished.
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for _, member := range teamMembers {
|
||||
roles := strings.Fields(member.Roles)
|
||||
var newRoles []string
|
||||
if !member.SchemeAdmin.Valid {
|
||||
member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
if !member.SchemeUser.Valid {
|
||||
member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
if !member.SchemeGuest.Valid {
|
||||
member.SchemeGuest = sql.NullBool{Bool: false, Valid: true}
|
||||
}
|
||||
for _, role := range roles {
|
||||
if role == model.TEAM_ADMIN_ROLE_ID {
|
||||
member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true}
|
||||
} else if role == model.TEAM_USER_ROLE_ID {
|
||||
member.SchemeUser = sql.NullBool{Bool: true, Valid: true}
|
||||
} else if role == model.TEAM_GUEST_ROLE_ID {
|
||||
member.SchemeGuest = sql.NullBool{Bool: true, Valid: true}
|
||||
} else {
|
||||
newRoles = append(newRoles, role)
|
||||
}
|
||||
}
|
||||
member.Roles = strings.Join(newRoles, " ")
|
||||
if err := transaction.Commit(); err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if _, err := transaction.Update(&member); err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.update.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
data := make(map[string]string)
|
||||
data["TeamId"] = teamMembers[len(teamMembers)-1].TeamId
|
||||
data["UserId"] = teamMembers[len(teamMembers)-1].UserId
|
||||
|
||||
}
|
||||
|
||||
if err := transaction.Commit(); err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.MigrateTeamMembers", "store.sql_team.migrate_team_members.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
data := make(map[string]string)
|
||||
data["TeamId"] = teamMembers[len(teamMembers)-1].TeamId
|
||||
data["UserId"] = teamMembers[len(teamMembers)-1].UserId
|
||||
result.Data = data
|
||||
})
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) ResetAllTeamSchemes() *model.AppError {
|
||||
|
||||
Ссылка в новой задаче
Block a user