Migration of UserTermsOfServiceStore to return plain errors (#14788)
* Migration of UserTermsOfService Store * Ordering translations file * Fix imports * Fix translations] Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d21f1183ab
Коммит
2760497660
@@ -4543,7 +4543,7 @@ func TestGetUserTermsOfService(t *testing.T) {
|
||||
defer th.TearDown()
|
||||
|
||||
_, resp := th.Client.GetUserTermsOfService(th.BasicUser.Id, "")
|
||||
CheckErrorMessage(t, resp, "store.sql_user_terms_of_service.get_by_user.no_rows.app_error")
|
||||
CheckErrorMessage(t, resp, "app.user_terms_of_service.get_by_user.no_rows.app_error")
|
||||
|
||||
termsOfService, err := th.App.CreateTermsOfService("terms of service", th.BasicUser.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
@@ -3,10 +3,27 @@
|
||||
|
||||
package app
|
||||
|
||||
import "github.com/mattermost/mattermost-server/v5/model"
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/store"
|
||||
)
|
||||
|
||||
func (a *App) GetUserTermsOfService(userId string) (*model.UserTermsOfService, *model.AppError) {
|
||||
return a.Srv().Store.UserTermsOfService().GetByUser(userId)
|
||||
u, err := a.Srv().Store.UserTermsOfService().GetByUser(userId)
|
||||
if err != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
switch {
|
||||
case errors.As(err, &nfErr):
|
||||
return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.no_rows.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func (a *App) SaveUserTermsOfService(userId, termsOfServiceId string, accepted bool) *model.AppError {
|
||||
@@ -17,11 +34,17 @@ func (a *App) SaveUserTermsOfService(userId, termsOfServiceId string, accepted b
|
||||
}
|
||||
|
||||
if _, err := a.Srv().Store.UserTermsOfService().Save(userTermsOfService); err != nil {
|
||||
return err
|
||||
var appErr *model.AppError
|
||||
switch {
|
||||
case errors.As(err, &appErr):
|
||||
return appErr
|
||||
default:
|
||||
return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.save.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if err := a.Srv().Store.UserTermsOfService().Delete(userId, termsOfServiceId); err != nil {
|
||||
return err
|
||||
return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ func TestUserTermsOfService(t *testing.T) {
|
||||
userTermsOfService, err := th.App.GetUserTermsOfService(th.BasicUser.Id)
|
||||
checkError(t, err)
|
||||
assert.Nil(t, userTermsOfService)
|
||||
assert.Equal(t, "store.sql_user_terms_of_service.get_by_user.no_rows.app_error", err.Id)
|
||||
assert.Equal(t, "app.user_terms_of_service.get_by_user.no_rows.app_error", err.Id)
|
||||
|
||||
termsOfService, err := th.App.CreateTermsOfService("terms of service", th.BasicUser.Id)
|
||||
checkNoError(t, err)
|
||||
|
||||
32
i18n/en.json
32
i18n/en.json
@@ -3990,6 +3990,22 @@
|
||||
"id": "app.user_access_token.invalid_or_missing",
|
||||
"translation": "Invalid or missing token."
|
||||
},
|
||||
{
|
||||
"id": "app.user_terms_of_service.delete.app_error",
|
||||
"translation": "Unable to delete terms of service."
|
||||
},
|
||||
{
|
||||
"id": "app.user_terms_of_service.get_by_user.app_error",
|
||||
"translation": "Unable to fetch terms of service."
|
||||
},
|
||||
{
|
||||
"id": "app.user_terms_of_service.get_by_user.no_rows.app_error",
|
||||
"translation": "No terms of service found."
|
||||
},
|
||||
{
|
||||
"id": "app.user_terms_of_service.save.app_error",
|
||||
"translation": "Unable to save terms of service."
|
||||
},
|
||||
{
|
||||
"id": "bleveengine.already_started.error",
|
||||
"translation": "Bleve is already started."
|
||||
@@ -7626,22 +7642,6 @@
|
||||
"id": "store.sql_user_access_token.update_token_enable.app_error",
|
||||
"translation": "Unable to enable the access token."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_user_terms_of_service.delete.app_error",
|
||||
"translation": "Unable to delete terms of service."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_user_terms_of_service.get_by_user.app_error",
|
||||
"translation": "Unable to fetch terms of service."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_user_terms_of_service.get_by_user.no_rows.app_error",
|
||||
"translation": "No terms of service found."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_user_terms_of_service.save.app_error",
|
||||
"translation": "Unable to save terms of service."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_webhooks.analytics_incoming_count.app_error",
|
||||
"translation": "Unable to count the incoming webhooks."
|
||||
|
||||
@@ -8639,7 +8639,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string)
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) *model.AppError {
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) error {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserTermsOfServiceStore.Delete")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -8657,7 +8657,7 @@ func (s *OpenTracingLayerUserTermsOfServiceStore) Delete(userId string, termsOfS
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserTermsOfServiceStore.GetByUser")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -8675,7 +8675,7 @@ func (s *OpenTracingLayerUserTermsOfServiceStore) GetByUser(userId string) (*mod
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s *OpenTracingLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserTermsOfServiceStore.Save")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
|
||||
@@ -5,10 +5,11 @@ package sqlstore
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"net/http"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/store"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type SqlUserTermsOfServiceStore struct {
|
||||
@@ -31,20 +32,20 @@ func (s SqlUserTermsOfServiceStore) createIndexesIfNotExists() {
|
||||
s.CreateIndexIfNotExists("idx_user_terms_of_service_user_id", "UserTermsOfService", "UserId")
|
||||
}
|
||||
|
||||
func (s SqlUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s SqlUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, error) {
|
||||
var userTermsOfService *model.UserTermsOfService
|
||||
|
||||
err := s.GetReplica().SelectOne(&userTermsOfService, "SELECT * FROM UserTermsOfService WHERE UserId = :userId", map[string]interface{}{"userId": userId})
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, model.NewAppError("NewSqlUserTermsOfServiceStore.GetByUser", "store.sql_user_terms_of_service.get_by_user.no_rows.app_error", nil, "", http.StatusNotFound)
|
||||
return nil, store.NewErrNotFound("UserTermsOfService", "userId="+userId)
|
||||
}
|
||||
return nil, model.NewAppError("NewSqlUserTermsOfServiceStore.GetByUser", "store.sql_user_terms_of_service.get_by_user.app_error", nil, "", http.StatusInternalServerError)
|
||||
return nil, errors.Wrapf(err, "failed to get UserTermsOfService with userId=%s", userId)
|
||||
}
|
||||
return userTermsOfService, nil
|
||||
}
|
||||
|
||||
func (s SqlUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s SqlUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) {
|
||||
userTermsOfService.PreSave()
|
||||
|
||||
if err := userTermsOfService.IsValid(); err != nil {
|
||||
@@ -53,21 +54,21 @@ func (s SqlUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfSe
|
||||
|
||||
c, err := s.GetMaster().Update(userTermsOfService)
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlUserTermsOfServiceStore.Save", "store.sql_user_terms_of_service.save.app_error", nil, "user_terms_of_service_user_id="+userTermsOfService.UserId+",user_terms_of_service_terms_of_service_id="+userTermsOfService.TermsOfServiceId+",err="+err.Error(), http.StatusInternalServerError)
|
||||
return nil, errors.Wrapf(err, "failed to update UserTermsOfService with userId=%s and termsOfServiceId=%s", userTermsOfService.UserId, userTermsOfService.TermsOfServiceId)
|
||||
}
|
||||
|
||||
if c == 0 {
|
||||
if err := s.GetMaster().Insert(userTermsOfService); err != nil {
|
||||
return nil, model.NewAppError("SqlUserTermsOfServiceStore.Save", "store.sql_user_terms_of_service.save.app_error", nil, "user_terms_of_service_user_id="+userTermsOfService.UserId+",user_terms_of_service_terms_of_service_id="+userTermsOfService.TermsOfServiceId+",err="+err.Error(), http.StatusInternalServerError)
|
||||
return nil, errors.Wrapf(err, "failed to save UserTermsOfService with userId=%s and termsOfServiceId=%s", userTermsOfService.UserId, userTermsOfService.TermsOfServiceId)
|
||||
}
|
||||
}
|
||||
|
||||
return userTermsOfService, nil
|
||||
}
|
||||
|
||||
func (s SqlUserTermsOfServiceStore) Delete(userId, termsOfServiceId string) *model.AppError {
|
||||
func (s SqlUserTermsOfServiceStore) Delete(userId, termsOfServiceId string) error {
|
||||
if _, err := s.GetMaster().Exec("DELETE FROM UserTermsOfService WHERE UserId = :UserId AND TermsOfServiceId = :TermsOfServiceId", map[string]interface{}{"UserId": userId, "TermsOfServiceId": termsOfServiceId}); err != nil {
|
||||
return model.NewAppError("SqlUserTermsOfServiceStore.Delete", "store.sql_user_terms_of_service.delete.app_error", nil, "userId="+userId+", termsOfServiceId="+termsOfServiceId, http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "failed to delete UserTermsOfService with userId=%s and termsOfServiceId=%s", userId, termsOfServiceId)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -624,9 +624,9 @@ type TermsOfServiceStore interface {
|
||||
}
|
||||
|
||||
type UserTermsOfServiceStore interface {
|
||||
GetByUser(userId string) (*model.UserTermsOfService, *model.AppError)
|
||||
Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, *model.AppError)
|
||||
Delete(userId, termsOfServiceId string) *model.AppError
|
||||
GetByUser(userId string) (*model.UserTermsOfService, error)
|
||||
Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error)
|
||||
Delete(userId, termsOfServiceId string) error
|
||||
}
|
||||
|
||||
type GroupStore interface {
|
||||
|
||||
@@ -15,23 +15,21 @@ type UserTermsOfServiceStore struct {
|
||||
}
|
||||
|
||||
// Delete provides a mock function with given fields: userId, termsOfServiceId
|
||||
func (_m *UserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) *model.AppError {
|
||||
func (_m *UserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) error {
|
||||
ret := _m.Called(userId, termsOfServiceId)
|
||||
|
||||
var r0 *model.AppError
|
||||
if rf, ok := ret.Get(0).(func(string, string) *model.AppError); ok {
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(string, string) error); ok {
|
||||
r0 = rf(userId, termsOfServiceId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.AppError)
|
||||
}
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// GetByUser provides a mock function with given fields: userId
|
||||
func (_m *UserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (_m *UserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, error) {
|
||||
ret := _m.Called(userId)
|
||||
|
||||
var r0 *model.UserTermsOfService
|
||||
@@ -43,20 +41,18 @@ func (_m *UserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfS
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string) error); ok {
|
||||
r1 = rf(userId)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// Save provides a mock function with given fields: userTermsOfService
|
||||
func (_m *UserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (_m *UserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) {
|
||||
ret := _m.Called(userTermsOfService)
|
||||
|
||||
var r0 *model.UserTermsOfService
|
||||
@@ -68,13 +64,11 @@ func (_m *UserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfSer
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(*model.UserTermsOfService) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(*model.UserTermsOfService) error); ok {
|
||||
r1 = rf(userTermsOfService)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package storetest
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
@@ -63,5 +64,7 @@ func testDeleteUserTermsOfService(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
_, err = ss.UserTermsOfService().GetByUser(userTermsOfService.UserId)
|
||||
assert.Equal(t, "store.sql_user_terms_of_service.get_by_user.no_rows.app_error", err.Id)
|
||||
var nfErr *store.ErrNotFound
|
||||
assert.NotNil(t, err)
|
||||
assert.True(t, errors.As(err, &nfErr))
|
||||
}
|
||||
|
||||
@@ -7812,7 +7812,7 @@ func (s *TimerLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string) *mode
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *TimerLayerUserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) *model.AppError {
|
||||
func (s *TimerLayerUserTermsOfServiceStore) Delete(userId string, termsOfServiceId string) error {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0 := s.UserTermsOfServiceStore.Delete(userId, termsOfServiceId)
|
||||
@@ -7828,7 +7828,7 @@ func (s *TimerLayerUserTermsOfServiceStore) Delete(userId string, termsOfService
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *TimerLayerUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s *TimerLayerUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.UserTermsOfServiceStore.GetByUser(userId)
|
||||
@@ -7844,7 +7844,7 @@ func (s *TimerLayerUserTermsOfServiceStore) GetByUser(userId string) (*model.Use
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, *model.AppError) {
|
||||
func (s *TimerLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.UserTermsOfServiceStore.Save(userTermsOfService)
|
||||
|
||||
Ссылка в новой задаче
Block a user