Remove UserStore.Get gorp usage (#14672)
We're removing the user of gorp in the most used queries by our platform and this is one of them
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f912a93299
Коммит
033db51907
@@ -11,7 +11,6 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/Masterminds/squirrel"
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
"github.com/mattermost/gorp"
|
||||
|
||||
@@ -329,21 +328,44 @@ func (us SqlUserStore) UpdateMfaActive(userId string, active bool) *model.AppErr
|
||||
}
|
||||
|
||||
func (us SqlUserStore) Get(id string) (*model.User, *model.AppError) {
|
||||
query := us.usersQuery.Where("Id = ?", id)
|
||||
failure := func(err error, id string, statusCode int) *model.AppError {
|
||||
details := "user_id=" + id + ", " + err.Error()
|
||||
return model.NewAppError("SqlUserStore.Get", id, nil, details, statusCode)
|
||||
}
|
||||
|
||||
query := us.usersQuery.Where("Id = ?", id)
|
||||
queryString, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlUserStore.Get", "store.sql_user.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return nil, failure(err, "store.sql_user.get.app_error", http.StatusInternalServerError)
|
||||
}
|
||||
row := us.GetReplica().Db.QueryRow(queryString, args...)
|
||||
|
||||
var user model.User
|
||||
var props, notifyProps, timezone []byte
|
||||
err = row.Scan(&user.Id, &user.CreateAt, &user.UpdateAt, &user.DeleteAt, &user.Username,
|
||||
&user.Password, &user.AuthData, &user.AuthService, &user.Email, &user.EmailVerified,
|
||||
&user.Nickname, &user.FirstName, &user.LastName, &user.Position, &user.Roles,
|
||||
&user.AllowMarketing, &props, ¬ifyProps, &user.LastPasswordUpdate, &user.LastPictureUpdate,
|
||||
&user.FailedAttempts, &user.Locale, &timezone, &user.MfaActive, &user.MfaSecret,
|
||||
&user.IsBot, &user.BotDescription, &user.BotLastIconUpdate)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, failure(err, store.MISSING_ACCOUNT_ERROR, http.StatusNotFound)
|
||||
}
|
||||
return nil, failure(err, "store.sql_user.get.app_error", http.StatusInternalServerError)
|
||||
|
||||
}
|
||||
if err = json.Unmarshal(props, &user.Props); err != nil {
|
||||
return nil, failure(err, "store.sql_user.get.app_error", http.StatusInternalServerError)
|
||||
}
|
||||
if err = json.Unmarshal(notifyProps, &user.NotifyProps); err != nil {
|
||||
return nil, failure(err, "store.sql_user.get.app_error", http.StatusInternalServerError)
|
||||
}
|
||||
if err = json.Unmarshal(timezone, &user.Timezone); err != nil {
|
||||
return nil, failure(err, "store.sql_user.get.app_error", http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
user := &model.User{}
|
||||
if err := us.GetReplica().SelectOne(user, queryString, args...); err == sql.ErrNoRows {
|
||||
return nil, model.NewAppError("SqlUserStore.Get", store.MISSING_ACCOUNT_ERROR, nil, "user_id="+id, http.StatusNotFound)
|
||||
} else if err != nil {
|
||||
return nil, model.NewAppError("SqlUserStore.Get", "store.sql_user.get.app_error", nil, "user_id="+id+", "+err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
return user, nil
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (us SqlUserStore) GetAll() ([]*model.User, *model.AppError) {
|
||||
@@ -809,7 +831,7 @@ func (us SqlUserStore) GetProfileByIds(userIds []string, options *store.UserGetB
|
||||
OrderBy("u.Username ASC")
|
||||
|
||||
if options.Since > 0 {
|
||||
query = query.Where(squirrel.Gt(map[string]interface{}{
|
||||
query = query.Where(sq.Gt(map[string]interface{}{
|
||||
"u.UpdateAt": options.Since,
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -3607,7 +3607,7 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) {
|
||||
|
||||
// First and last user should be outside the range
|
||||
res1List, err := ss.User().GetUsersBatchForIndexing(startTime, endTime, 100)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, res1List, 1)
|
||||
assert.Equal(t, res1List[0].Username, u2.Username)
|
||||
@@ -3617,7 +3617,7 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) {
|
||||
// Update startTime to include first user
|
||||
startTime = u1.CreateAt
|
||||
res2List, err := ss.User().GetUsersBatchForIndexing(startTime, endTime, 100)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, res2List, 2)
|
||||
assert.Equal(t, res2List[0].Username, u1.Username)
|
||||
@@ -3628,7 +3628,7 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) {
|
||||
// Update endTime to include last user
|
||||
endTime = model.GetMillis()
|
||||
res3List, err := ss.User().GetUsersBatchForIndexing(startTime, endTime, 100)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, res3List, 3)
|
||||
assert.Equal(t, res3List[0].Username, u1.Username)
|
||||
@@ -3639,7 +3639,7 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) {
|
||||
|
||||
// Testing the limit
|
||||
res4List, err := ss.User().GetUsersBatchForIndexing(startTime, endTime, 2)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, res4List, 2)
|
||||
assert.Equal(t, res4List[0].Username, u1.Username)
|
||||
@@ -3919,9 +3919,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
require.True(t, user.UpdateAt < updatedUser.UpdateAt)
|
||||
|
||||
@@ -3965,9 +3965,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user system_admin", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -3996,9 +3996,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
defer func() { require.Nil(t, ss.User().PermanentDelete(user.Id)) }()
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
})
|
||||
|
||||
@@ -4021,9 +4021,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4061,9 +4061,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4106,9 +4106,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user custom_role", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4172,9 +4172,9 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().PromoteGuestToUser(user1.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user1.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId1, user1.Id)
|
||||
@@ -4188,7 +4188,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
require.True(t, updatedChannelMember.SchemeUser)
|
||||
|
||||
notUpdatedUser, err := ss.User().Get(user2.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", notUpdatedUser.Roles)
|
||||
|
||||
notUpdatedTeamMember, err := ss.Team().GetMember(teamId2, user2.Id)
|
||||
@@ -4234,9 +4234,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
require.True(t, user.UpdateAt < updatedUser.UpdateAt)
|
||||
|
||||
@@ -4280,9 +4280,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4311,9 +4311,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
defer func() { require.Nil(t, ss.User().PermanentDelete(user.Id)) }()
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
})
|
||||
|
||||
@@ -4336,9 +4336,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4376,9 +4376,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4387,7 +4387,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.False(t, updatedTeamMember.SchemeUser)
|
||||
|
||||
updatedChannelMember, err := ss.Channel().GetMember(channel.Id, user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.True(t, updatedChannelMember.SchemeGuest)
|
||||
require.False(t, updatedChannelMember.SchemeUser)
|
||||
})
|
||||
@@ -4421,9 +4421,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest custom_role", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
@@ -4432,7 +4432,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.False(t, updatedTeamMember.SchemeUser)
|
||||
|
||||
updatedChannelMember, err := ss.Channel().GetMember(channel.Id, user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.True(t, updatedChannelMember.SchemeGuest)
|
||||
require.False(t, updatedChannelMember.SchemeUser)
|
||||
})
|
||||
@@ -4487,9 +4487,9 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.User().DemoteUserToGuest(user1.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
updatedUser, err := ss.User().Get(user1.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId1, user1.Id)
|
||||
@@ -4498,12 +4498,12 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.False(t, updatedTeamMember.SchemeUser)
|
||||
|
||||
updatedChannelMember, err := ss.Channel().GetMember(channel.Id, user1.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.True(t, updatedChannelMember.SchemeGuest)
|
||||
require.False(t, updatedChannelMember.SchemeUser)
|
||||
|
||||
notUpdatedUser, err := ss.User().Get(user2.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, "system_user", notUpdatedUser.Roles)
|
||||
|
||||
notUpdatedTeamMember, err := ss.Team().GetMember(teamId2, user2.Id)
|
||||
@@ -4512,7 +4512,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
require.True(t, notUpdatedTeamMember.SchemeUser)
|
||||
|
||||
notUpdatedChannelMember, err := ss.Channel().GetMember(channel.Id, user2.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Nil(t, err)
|
||||
require.False(t, notUpdatedChannelMember.SchemeGuest)
|
||||
require.True(t, notUpdatedChannelMember.SchemeUser)
|
||||
})
|
||||
|
||||
Ссылка в новой задаче
Block a user