[MM-16159] Migrate "Team.GetByName" to Sync by default (#11107)

* [MM-16159] Migrate "Team.GetByName" to Sync by default

* Refactor to correct mistakes and remove irrelevant code
Этот коммит содержится в:
Bolarinwa Balogun
2019-06-11 09:35:17 -04:00
коммит произвёл Elias Nahum
родитель 3b03c9afcb
Коммит 88202a76d9
10 изменённых файлов: 56 добавлений и 52 удалений

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

@@ -1208,12 +1208,13 @@ func (a *App) GetChannelsByNames(channelNames []string, teamId string) ([]*model
func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError) { func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError) {
var team *model.Team var team *model.Team
result := <-a.Srv.Store.Team().GetByName(teamName) team, err := a.Srv.Store.Team().GetByName(teamName)
if result.Err != nil { if err != nil {
result.Err.StatusCode = http.StatusNotFound err.StatusCode = http.StatusNotFound
return nil, result.Err return nil, err
} }
team = result.Data.(*model.Team)
var result store.StoreResult
if includeDeleted { if includeDeleted {
result = <-a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelName, false) result = <-a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelName, false)

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

@@ -140,19 +140,19 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
continue continue
} }
result := <-job.server.Store.Team().GetByName(notifications[0].teamName) team, err := job.server.Store.Team().GetByName(notifications[0].teamName)
if result.Err != nil { if err != nil {
mlog.Error(fmt.Sprint("Unable to find Team id for notification", result.Err)) mlog.Error(fmt.Sprint("Unable to find Team id for notification", err))
continue continue
} }
if team, ok := result.Data.(*model.Team); ok { if team != nil {
inspectedTeamNames[notification.teamName] = team.Id inspectedTeamNames[notification.teamName] = team.Id
} }
// if the user has viewed any channels in this team since the notification was queued, delete // if the user has viewed any channels in this team since the notification was queued, delete
// all queued notifications // all queued notifications
result = <-job.server.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userId) result := <-job.server.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userId)
if result.Err != nil { if result.Err != nil {
mlog.Error(fmt.Sprint("Unable to find ChannelMembers for user", result.Err)) mlog.Error(fmt.Sprint("Unable to find ChannelMembers for user", result.Err))
continue continue

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

@@ -162,9 +162,9 @@ func (a *App) ImportTeam(data *TeamImportData, dryRun bool) *model.AppError {
} }
var team *model.Team var team *model.Team
if result := <-a.Srv.Store.Team().GetByName(*data.Name); result.Err == nil { team, err := a.Srv.Store.Team().GetByName(*data.Name)
team = result.Data.(*model.Team)
} else { if err != nil {
team = &model.Team{} team = &model.Team{}
} }
@@ -220,11 +220,10 @@ func (a *App) ImportChannel(data *ChannelImportData, dryRun bool) *model.AppErro
return nil return nil
} }
result := <-a.Srv.Store.Team().GetByName(*data.Team) team, err := a.Srv.Store.Team().GetByName(*data.Team)
if result.Err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, result.Err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest)
} }
team := result.Data.(*model.Team)
var channel *model.Channel var channel *model.Channel
if result := <-a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); result.Err == nil { if result := <-a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); result.Err == nil {
@@ -942,13 +941,12 @@ func (a *App) ImportPost(data *PostImportData, dryRun bool) *model.AppError {
return nil return nil
} }
result := <-a.Srv.Store.Team().GetByName(*data.Team) team, err := a.Srv.Store.Team().GetByName(*data.Team)
if result.Err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, result.Err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest)
} }
team := result.Data.(*model.Team)
result = <-a.Srv.Store.Channel().GetByName(team.Id, *data.Channel, false) result := <-a.Srv.Store.Channel().GetByName(team.Id, *data.Channel, false)
if result.Err != nil { if result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]interface{}{"ChannelName": *data.Channel}, result.Err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]interface{}{"ChannelName": *data.Channel}, result.Err.Error(), http.StatusBadRequest)
} }

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

@@ -592,12 +592,12 @@ func (a *App) GetTeam(teamId string) (*model.Team, *model.AppError) {
} }
func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError) { func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError) {
result := <-a.Srv.Store.Team().GetByName(name) team, err := a.Srv.Store.Team().GetByName(name)
if result.Err != nil { if err != nil {
result.Err.StatusCode = http.StatusNotFound err.StatusCode = http.StatusNotFound
return nil, result.Err return nil, err
} }
return result.Data.(*model.Team), nil return team, nil
} }
func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) { func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) {
@@ -1045,7 +1045,7 @@ func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string)
} }
func (a *App) FindTeamByName(name string) bool { func (a *App) FindTeamByName(name string) bool {
if result := <-a.Srv.Store.Team().GetByName(name); result.Err != nil { if _, err := a.Srv.Store.Team().GetByName(name); err != nil {
return false return false
} }
return true return true

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

@@ -19,15 +19,13 @@ func getTeamsFromTeamArgs(a *app.App, teamArgs []string) []*model.Team {
func getTeamFromTeamArg(a *app.App, teamArg string) *model.Team { func getTeamFromTeamArg(a *app.App, teamArg string) *model.Team {
var team *model.Team var team *model.Team
if result := <-a.Srv.Store.Team().GetByName(teamArg); result.Err == nil { team, err := a.Srv.Store.Team().GetByName(teamArg)
team = result.Data.(*model.Team)
}
if team == nil { if team == nil {
if t, err := a.Srv.Store.Team().Get(teamArg); err == nil { var t *model.Team
if t, err = a.Srv.Store.Team().Get(teamArg); err == nil {
team = t team = t
} }
} }
return team return team
} }

0
output Обычный файл
Просмотреть файл

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

@@ -295,17 +295,15 @@ func (s SqlTeamStore) GetByInviteId(inviteId string) store.StoreChannel {
}) })
} }
func (s SqlTeamStore) GetByName(name string) store.StoreChannel { func (s SqlTeamStore) GetByName(name string) (*model.Team, *model.AppError) {
return store.Do(func(result *store.StoreResult) {
team := model.Team{}
if err := s.GetReplica().SelectOne(&team, "SELECT * FROM Teams WHERE Name = :Name", map[string]interface{}{"Name": name}); err != nil { team := model.Team{}
result.Err = model.NewAppError("SqlTeamStore.GetByName", "store.sql_team.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError)
return
}
result.Data = &team err := s.GetReplica().SelectOne(&team, "SELECT * FROM Teams WHERE Name = :Name", map[string]interface{}{"Name": name})
}) if err != nil {
return nil, model.NewAppError("SqlTeamStore.GetByName", "store.sql_team.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError)
}
return &team, nil
} }
func (s SqlTeamStore) SearchByName(name string) ([]*model.Team, *model.AppError) { func (s SqlTeamStore) SearchByName(name string) ([]*model.Team, *model.AppError) {

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

@@ -85,7 +85,7 @@ type TeamStore interface {
Update(team *model.Team) (*model.Team, *model.AppError) Update(team *model.Team) (*model.Team, *model.AppError)
UpdateDisplayName(name string, teamId string) StoreChannel UpdateDisplayName(name string, teamId string) StoreChannel
Get(id string) (*model.Team, *model.AppError) Get(id string) (*model.Team, *model.AppError)
GetByName(name string) StoreChannel GetByName(name string) (*model.Team, *model.AppError)
SearchByName(name string) ([]*model.Team, *model.AppError) SearchByName(name string) ([]*model.Team, *model.AppError)
SearchAll(term string) StoreChannel SearchAll(term string) StoreChannel
SearchOpen(term string) StoreChannel SearchOpen(term string) StoreChannel

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

@@ -245,19 +245,28 @@ func (_m *TeamStore) GetByInviteId(inviteId string) store.StoreChannel {
} }
// GetByName provides a mock function with given fields: name // GetByName provides a mock function with given fields: name
func (_m *TeamStore) GetByName(name string) store.StoreChannel { func (_m *TeamStore) GetByName(name string) (*model.Team, *model.AppError) {
ret := _m.Called(name) ret := _m.Called(name)
var r0 store.StoreChannel var r0 *model.Team
if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string) *model.Team); ok {
r0 = rf(name) r0 = rf(name)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).(*model.Team)
} }
} }
return r0 var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
r1 = rf(name)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
} }
// GetChannelUnreadsForAllTeams provides a mock function with given fields: excludeTeamId, userId // GetChannelUnreadsForAllTeams provides a mock function with given fields: excludeTeamId, userId

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

@@ -149,15 +149,15 @@ func testTeamStoreGetByName(t *testing.T, ss store.Store) {
t.Fatal(err) t.Fatal(err)
} }
if r1 := <-ss.Team().GetByName(o1.Name); r1.Err != nil { if team, err := ss.Team().GetByName(o1.Name); err != nil {
t.Fatal(r1.Err) t.Fatal(err)
} else { } else {
if r1.Data.(*model.Team).ToJson() != o1.ToJson() { if team.ToJson() != o1.ToJson() {
t.Fatal("invalid returned team") t.Fatal("invalid returned team")
} }
} }
if err := (<-ss.Team().GetByName("")).Err; err == nil { if _, err := ss.Team().GetByName(""); err == nil {
t.Fatal("Missing id should have failed") t.Fatal("Missing id should have failed")
} }
} }