diff --git a/app/webhook.go b/app/webhook.go index de0772de4f..ba84d8b566 100644 --- a/app/webhook.go +++ b/app/webhook.go @@ -504,11 +504,7 @@ func (a *App) GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebho return nil, model.NewAppError("GetOutgoingWebhooksPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) } - if result := <-a.Srv.Store.Webhook().GetOutgoingList(page*perPage, perPage); result.Err != nil { - return nil, result.Err - } else { - return result.Data.([]*model.OutgoingWebhook), nil - } + return a.Srv.Store.Webhook().GetOutgoingList(page*perPage, perPage) } func (a *App) GetOutgoingWebhooksForChannelPage(channelId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) { diff --git a/store/sqlstore/webhook_store.go b/store/sqlstore/webhook_store.go index 80027e8b67..527fa52d4b 100644 --- a/store/sqlstore/webhook_store.go +++ b/store/sqlstore/webhook_store.go @@ -234,16 +234,14 @@ func (s SqlWebhookStore) GetOutgoing(id string) (*model.OutgoingWebhook, *model. return &webhook, nil } -func (s SqlWebhookStore) GetOutgoingList(offset, limit int) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - var webhooks []*model.OutgoingWebhook +func (s SqlWebhookStore) GetOutgoingList(offset, limit int) ([]*model.OutgoingWebhook, *model.AppError) { + var webhooks []*model.OutgoingWebhook - if _, err := s.GetReplica().Select(&webhooks, "SELECT * FROM OutgoingWebhooks WHERE DeleteAt = 0 LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil { - result.Err = model.NewAppError("SqlWebhookStore.GetOutgoingList", "store.sql_webhooks.get_outgoing_by_channel.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) - } + if _, err := s.GetReplica().Select(&webhooks, "SELECT * FROM OutgoingWebhooks WHERE DeleteAt = 0 LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil { + return nil, model.NewAppError("SqlWebhookStore.GetOutgoingList", "store.sql_webhooks.get_outgoing_by_channel.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) + } - result.Data = webhooks - }) + return webhooks, nil } func (s SqlWebhookStore) GetOutgoingByChannel(channelId string, offset, limit int) store.StoreChannel { diff --git a/store/store.go b/store/store.go index 33a3ae8ad3..011e13696e 100644 --- a/store/store.go +++ b/store/store.go @@ -389,7 +389,7 @@ type WebhookStore interface { SaveOutgoing(webhook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) GetOutgoing(id string) (*model.OutgoingWebhook, *model.AppError) - GetOutgoingList(offset, limit int) StoreChannel + GetOutgoingList(offset, limit int) ([]*model.OutgoingWebhook, *model.AppError) GetOutgoingByChannel(channelId string, offset, limit int) StoreChannel GetOutgoingByTeam(teamId string, offset, limit int) StoreChannel DeleteOutgoing(webhookId string, time int64) StoreChannel diff --git a/store/storetest/mocks/WebhookStore.go b/store/storetest/mocks/WebhookStore.go index e0bd852868..ae5b870c02 100644 --- a/store/storetest/mocks/WebhookStore.go +++ b/store/storetest/mocks/WebhookStore.go @@ -247,19 +247,28 @@ func (_m *WebhookStore) GetOutgoingByTeam(teamId string, offset int, limit int) } // GetOutgoingList provides a mock function with given fields: offset, limit -func (_m *WebhookStore) GetOutgoingList(offset int, limit int) store.StoreChannel { +func (_m *WebhookStore) GetOutgoingList(offset int, limit int) ([]*model.OutgoingWebhook, *model.AppError) { ret := _m.Called(offset, limit) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(int, int) store.StoreChannel); ok { + var r0 []*model.OutgoingWebhook + if rf, ok := ret.Get(0).(func(int, int) []*model.OutgoingWebhook); ok { r0 = rf(offset, limit) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).([]*model.OutgoingWebhook) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(int, int) *model.AppError); ok { + r1 = rf(offset, limit) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // InvalidateWebhookCache provides a mock function with given fields: webhook diff --git a/store/storetest/webhook_store.go b/store/storetest/webhook_store.go index 484881a2b7..88d09cb060 100644 --- a/store/storetest/webhook_store.go +++ b/store/storetest/webhook_store.go @@ -328,10 +328,10 @@ func testWebhookStoreGetOutgoingList(t *testing.T, ss store.Store) { o2, _ = ss.Webhook().SaveOutgoing(o2) - if r1 := <-ss.Webhook().GetOutgoingList(0, 1000); r1.Err != nil { - t.Fatal(r1.Err) + if r1, err := ss.Webhook().GetOutgoingList(0, 1000); err != nil { + t.Fatal(err) } else { - hooks := r1.Data.([]*model.OutgoingWebhook) + hooks := r1 found1 := false found2 := false @@ -353,10 +353,10 @@ func testWebhookStoreGetOutgoingList(t *testing.T, ss store.Store) { } } - if result := <-ss.Webhook().GetOutgoingList(0, 2); result.Err != nil { - t.Fatal(result.Err) + if result, err := ss.Webhook().GetOutgoingList(0, 2); err != nil { + t.Fatal(err) } else { - if len(result.Data.([]*model.OutgoingWebhook)) != 2 { + if len(result) != 2 { t.Fatal("wrong number of hooks returned") } }