MM-15290: Migrate commandStore.GetByTrigger to sync by default (#10741)

* MM-15290: migrate command.GetByTrigger to sync by default

* Fix build

* MM-15290: fix go vet issue
Этот коммит содержится в:
Puneeth Reddy
2019-05-07 11:44:30 -07:00
коммит произвёл Jesús Espino
родитель 9ab3cc9051
Коммит 6ce3cc6921
5 изменённых файлов: 36 добавлений и 31 удалений

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

@@ -46,11 +46,10 @@ func getCommandFromCommandArg(a *app.App, commandArg string) *model.Command {
if team == nil { if team == nil {
return nil return nil
} }
var err *model.AppError
if result := <-a.Srv.Store.Command().GetByTrigger(team.Id, commandPart); result.Err == nil { command, err = a.Srv.Store.Command().GetByTrigger(team.Id, commandPart)
command = result.Data.(*model.Command) if err != nil {
} else { fmt.Println(err.Error())
fmt.Println(result.Err.Error())
} }
} }

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

@@ -81,23 +81,21 @@ func (s SqlCommandStore) GetByTeam(teamId string) ([]*model.Command, *model.AppE
return commands, nil return commands, nil
} }
func (s SqlCommandStore) GetByTrigger(teamId string, trigger string) store.StoreChannel { func (s SqlCommandStore) GetByTrigger(teamId string, trigger string) (*model.Command, *model.AppError) {
return store.Do(func(result *store.StoreResult) { var command model.Command
var command model.Command
var query string var query string
if s.DriverName() == "mysql" { if s.DriverName() == "mysql" {
query = "SELECT * FROM Commands WHERE TeamId = :TeamId AND `Trigger` = :Trigger AND DeleteAt = 0" query = "SELECT * FROM Commands WHERE TeamId = :TeamId AND `Trigger` = :Trigger AND DeleteAt = 0"
} else { } else {
query = "SELECT * FROM Commands WHERE TeamId = :TeamId AND \"trigger\" = :Trigger AND DeleteAt = 0" query = "SELECT * FROM Commands WHERE TeamId = :TeamId AND \"trigger\" = :Trigger AND DeleteAt = 0"
} }
if err := s.GetReplica().SelectOne(&command, query, map[string]interface{}{"TeamId": teamId, "Trigger": trigger}); err != nil { if err := s.GetReplica().SelectOne(&command, query, map[string]interface{}{"TeamId": teamId, "Trigger": trigger}); err != nil {
result.Err = model.NewAppError("SqlCommandStore.GetByTrigger", "store.sql_command.get_by_trigger.app_error", nil, "teamId="+teamId+", trigger="+trigger+", err="+err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SqlCommandStore.GetByTrigger", "store.sql_command.get_by_trigger.app_error", nil, "teamId="+teamId+", trigger="+trigger+", err="+err.Error(), http.StatusInternalServerError)
} }
result.Data = &command return &command, nil
})
} }
func (s SqlCommandStore) Delete(commandId string, time int64) *model.AppError { func (s SqlCommandStore) Delete(commandId string, time int64) *model.AppError {

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

@@ -411,9 +411,9 @@ type WebhookStore interface {
type CommandStore interface { type CommandStore interface {
Save(webhook *model.Command) (*model.Command, *model.AppError) Save(webhook *model.Command) (*model.Command, *model.AppError)
GetByTrigger(teamId string, trigger string) (*model.Command, *model.AppError)
Get(id string) (*model.Command, *model.AppError) Get(id string) (*model.Command, *model.AppError)
GetByTeam(teamId string) ([]*model.Command, *model.AppError) GetByTeam(teamId string) ([]*model.Command, *model.AppError)
GetByTrigger(teamId string, trigger string) StoreChannel
Delete(commandId string, time int64) *model.AppError Delete(commandId string, time int64) *model.AppError
PermanentDeleteByTeam(teamId string) *model.AppError PermanentDeleteByTeam(teamId string) *model.AppError
PermanentDeleteByUser(userId string) *model.AppError PermanentDeleteByUser(userId string) *model.AppError

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

@@ -118,11 +118,11 @@ func testCommandStoreGetByTrigger(t *testing.T, ss store.Store) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
var r1 *model.Command
if r1 := <-ss.Command().GetByTrigger(o1.TeamId, o1.Trigger); r1.Err != nil { if r1, err = ss.Command().GetByTrigger(o1.TeamId, o1.Trigger); err != nil {
t.Fatal(r1.Err) t.Fatal(err)
} else { } else {
if r1.Data.(*model.Command).Id != o1.Id { if r1.Id != o1.Id {
t.Fatal("invalid returned command") t.Fatal("invalid returned command")
} }
} }
@@ -132,7 +132,7 @@ func testCommandStoreGetByTrigger(t *testing.T, ss store.Store) {
t.Fatal(err) t.Fatal(err)
} }
if result := <-ss.Command().GetByTrigger(o1.TeamId, o1.Trigger); result.Err == nil { if _, err := ss.Command().GetByTrigger(o1.TeamId, o1.Trigger); err == nil {
t.Fatal("no commands should have returned") t.Fatal("no commands should have returned")
} }
} }

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

@@ -6,7 +6,6 @@ package mocks
import mock "github.com/stretchr/testify/mock" import mock "github.com/stretchr/testify/mock"
import model "github.com/mattermost/mattermost-server/model" import model "github.com/mattermost/mattermost-server/model"
import store "github.com/mattermost/mattermost-server/store"
// CommandStore is an autogenerated mock type for the CommandStore type // CommandStore is an autogenerated mock type for the CommandStore type
type CommandStore struct { type CommandStore struct {
@@ -103,19 +102,28 @@ func (_m *CommandStore) GetByTeam(teamId string) ([]*model.Command, *model.AppEr
} }
// GetByTrigger provides a mock function with given fields: teamId, trigger // GetByTrigger provides a mock function with given fields: teamId, trigger
func (_m *CommandStore) GetByTrigger(teamId string, trigger string) store.StoreChannel { func (_m *CommandStore) GetByTrigger(teamId string, trigger string) (*model.Command, *model.AppError) {
ret := _m.Called(teamId, trigger) ret := _m.Called(teamId, trigger)
var r0 store.StoreChannel var r0 *model.Command
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string, string) *model.Command); ok {
r0 = rf(teamId, trigger) r0 = rf(teamId, trigger)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).(*model.Command)
} }
} }
return r0 var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
r1 = rf(teamId, trigger)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
} }
// PermanentDeleteByTeam provides a mock function with given fields: teamId // PermanentDeleteByTeam provides a mock function with given fields: teamId