diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index 32f63c5ce0..02cf36cc11 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -308,17 +308,14 @@ func (s SqlTeamStore) GetByName(name string) store.StoreChannel { }) } -func (s SqlTeamStore) SearchByName(name string) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - var teams []*model.Team +func (s SqlTeamStore) SearchByName(name string) ([]*model.Team, *model.AppError) { + var teams []*model.Team - if _, err := s.GetReplica().Select(&teams, "SELECT * FROM Teams WHERE Name LIKE :Name", map[string]interface{}{"Name": name + "%"}); err != nil { - result.Err = model.NewAppError("SqlTeamStore.SearchByName", "store.sql_team.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError) - return - } + if _, err := s.GetReplica().Select(&teams, "SELECT * FROM Teams WHERE Name LIKE :Name", map[string]interface{}{"Name": name + "%"}); err != nil { + return nil, model.NewAppError("SqlTeamStore.SearchByName", "store.sql_team.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError) + } - result.Data = teams - }) + return teams, nil } func (s SqlTeamStore) SearchAll(term string) store.StoreChannel { diff --git a/store/store.go b/store/store.go index 6f4a95e57a..1f63a9439b 100644 --- a/store/store.go +++ b/store/store.go @@ -86,7 +86,7 @@ type TeamStore interface { UpdateDisplayName(name string, teamId string) StoreChannel Get(id string) (*model.Team, *model.AppError) GetByName(name string) StoreChannel - SearchByName(name string) StoreChannel + SearchByName(name string) ([]*model.Team, *model.AppError) SearchAll(term string) StoreChannel SearchOpen(term string) StoreChannel SearchPrivate(term string) StoreChannel diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go index 281aa5da35..1ab3533100 100644 --- a/store/storetest/mocks/TeamStore.go +++ b/store/storetest/mocks/TeamStore.go @@ -602,19 +602,28 @@ func (_m *TeamStore) SearchAll(term string) store.StoreChannel { } // SearchByName provides a mock function with given fields: name -func (_m *TeamStore) SearchByName(name string) store.StoreChannel { +func (_m *TeamStore) SearchByName(name string) ([]*model.Team, *model.AppError) { ret := _m.Called(name) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 []*model.Team + if rf, ok := ret.Get(0).(func(string) []*model.Team); ok { r0 = rf(name) } else { 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 } // SearchOpen provides a mock function with given fields: term diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 5f2689f5a1..a4936619cb 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -174,10 +174,10 @@ func testTeamStoreSearchByName(t *testing.T, ss store.Store) { t.Fatal(err) } - if r1 := <-ss.Team().SearchByName(name); r1.Err != nil { - t.Fatal(r1.Err) + if r1, err := ss.Team().SearchByName(name); err != nil { + t.Fatal(err) } else { - if r1.Data.([]*model.Team)[0].ToJson() != o1.ToJson() { + if r1[0].ToJson() != o1.ToJson() { t.Fatal("invalid returned team") } }