From 2d00aed0380e71e3e428fde6e25582983966e609 Mon Sep 17 00:00:00 2001 From: Shota Gvinepadze Date: Fri, 21 Jun 2019 18:49:56 +0400 Subject: [PATCH] Migrate 'UserAccessToken.GetByUser' to Sync by default (#11322) --- app/session.go | 7 +++---- store/sqlstore/user_access_token_store.go | 14 ++++++-------- store/store.go | 2 +- store/storetest/mocks/UserAccessTokenStore.go | 19 ++++++++++++++----- store/storetest/user_access_token_store.go | 6 +++--- 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/app/session.go b/app/session.go index 3b6f44e425..0e4dbb7058 100644 --- a/app/session.go +++ b/app/session.go @@ -367,11 +367,10 @@ func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, } func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) { - result := <-a.Srv.Store.UserAccessToken().GetByUser(userId, page*perPage, perPage) - if result.Err != nil { - return nil, result.Err + tokens, err := a.Srv.Store.UserAccessToken().GetByUser(userId, page*perPage, perPage) + if err != nil { + return nil, err } - tokens := result.Data.([]*model.UserAccessToken) for _, token := range tokens { token.Token = "" } diff --git a/store/sqlstore/user_access_token_store.go b/store/sqlstore/user_access_token_store.go index 5d7222a233..d37896a1a1 100644 --- a/store/sqlstore/user_access_token_store.go +++ b/store/sqlstore/user_access_token_store.go @@ -182,16 +182,14 @@ func (s SqlUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAcce return &token, nil } -func (s SqlUserAccessTokenStore) GetByUser(userId string, offset, limit int) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - tokens := []*model.UserAccessToken{} +func (s SqlUserAccessTokenStore) GetByUser(userId string, offset, limit int) ([]*model.UserAccessToken, *model.AppError) { + tokens := []*model.UserAccessToken{} - if _, err := s.GetReplica().Select(&tokens, "SELECT * FROM UserAccessTokens WHERE UserId = :UserId LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Offset": offset, "Limit": limit}); err != nil { - result.Err = model.NewAppError("SqlUserAccessTokenStore.GetByUser", "store.sql_user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) - } + if _, err := s.GetReplica().Select(&tokens, "SELECT * FROM UserAccessTokens WHERE UserId = :UserId LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Offset": offset, "Limit": limit}); err != nil { + return nil, model.NewAppError("SqlUserAccessTokenStore.GetByUser", "store.sql_user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) + } - result.Data = tokens - }) + return tokens, nil } func (s SqlUserAccessTokenStore) Search(term string) store.StoreChannel { diff --git a/store/store.go b/store/store.go index f010964788..a39949dbb2 100644 --- a/store/store.go +++ b/store/store.go @@ -521,7 +521,7 @@ type UserAccessTokenStore interface { Get(tokenId string) (*model.UserAccessToken, *model.AppError) GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) - GetByUser(userId string, page, perPage int) StoreChannel + GetByUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) Search(term string) StoreChannel UpdateTokenEnable(tokenId string) StoreChannel UpdateTokenDisable(tokenId string) StoreChannel diff --git a/store/storetest/mocks/UserAccessTokenStore.go b/store/storetest/mocks/UserAccessTokenStore.go index d1e9e33359..d26faa4166 100644 --- a/store/storetest/mocks/UserAccessTokenStore.go +++ b/store/storetest/mocks/UserAccessTokenStore.go @@ -121,19 +121,28 @@ func (_m *UserAccessTokenStore) GetByToken(tokenString string) (*model.UserAcces } // GetByUser provides a mock function with given fields: userId, page, perPage -func (_m *UserAccessTokenStore) GetByUser(userId string, page int, perPage int) store.StoreChannel { +func (_m *UserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, *model.AppError) { ret := _m.Called(userId, page, perPage) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok { + var r0 []*model.UserAccessToken + if rf, ok := ret.Get(0).(func(string, int, int) []*model.UserAccessToken); ok { r0 = rf(userId, page, perPage) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).([]*model.UserAccessToken) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok { + r1 = rf(userId, page, perPage) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // Save provides a mock function with given fields: token diff --git a/store/storetest/user_access_token_store.go b/store/storetest/user_access_token_store.go index 3233d8198a..ed54cd7b42 100644 --- a/store/storetest/user_access_token_store.go +++ b/store/storetest/user_access_token_store.go @@ -51,9 +51,9 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { t.Fatal("should have failed on bad token") } - if result := <-ss.UserAccessToken().GetByUser(uat.UserId, 0, 100); result.Err != nil { - t.Fatal(result.Err) - } else if received := result.Data.([]*model.UserAccessToken); len(received) != 1 { + if received, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100); err2 != nil { + t.Fatal(err2) + } else if len(received) != 1 { t.Fatal("received incorrect number of tokens after save") }