diff --git a/app/import_functions_test.go b/app/import_functions_test.go index 67758fd49c..2a5fdea019 100644 --- a/app/import_functions_test.go +++ b/app/import_functions_test.go @@ -63,7 +63,7 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -74,7 +74,7 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have succeeded.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -85,7 +85,7 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -96,10 +96,9 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have succeeded.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -162,10 +161,9 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have succeeded: %v", err) } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -227,10 +225,9 @@ func TestImportImportScheme(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -276,7 +273,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -287,7 +284,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have succeeded.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -298,7 +295,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err == nil { + if _, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err == nil { t.Fatalf("Scheme should not have imported.") } @@ -309,10 +306,9 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have succeeded.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -375,10 +371,9 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have succeeded: %v", err) } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -440,10 +435,9 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) { t.Fatalf("Should have failed to import.") } - if res := <-th.App.Srv.Store.Scheme().GetByName(*data.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) + if scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name); err != nil { + t.Fatalf("Failed to import scheme: %v", err) } else { - scheme := res.Data.(*model.Scheme) assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.DisplayName, scheme.DisplayName) assert.Equal(t, *data.Description, scheme.Description) @@ -1515,12 +1509,8 @@ func TestImportImportUser(t *testing.T) { err = th.App.ImportScheme(teamSchemeData, false) assert.Nil(t, err) - var teamScheme *model.Scheme - if res := <-th.App.Srv.Store.Scheme().GetByName(*teamSchemeData.Name); res.Err != nil { - t.Fatalf("Failed to import scheme: %v", res.Err) - } else { - teamScheme = res.Data.(*model.Scheme) - } + teamScheme, err := th.App.Srv.Store.Scheme().GetByName(*teamSchemeData.Name) + require.Nil(t, err, "Failed to import scheme") teamData := &TeamImportData{ Name: ptrStr(model.NewId()), diff --git a/app/migrations.go b/app/migrations.go index 2412a85d29..1503e44604 100644 --- a/app/migrations.go +++ b/app/migrations.go @@ -179,12 +179,11 @@ func (a *App) DoGuestRolesCreationMigration() { } } - resultSchemes := <-a.Srv.Store.Scheme().GetAllPage("", 0, 1000000) - if resultSchemes.Err != nil { - mlog.Critical("Failed to get all schemes.", mlog.Err(resultSchemes.Err)) + schemes, err := a.Srv.Store.Scheme().GetAllPage("", 0, 1000000) + if err != nil { + mlog.Critical("Failed to get all schemes.", mlog.Err(err)) allSucceeded = false } - schemes := resultSchemes.Data.([]*model.Scheme) for _, scheme := range schemes { if scheme.DefaultTeamGuestRole == "" || scheme.DefaultChannelGuestRole == "" { // Team Guest Role @@ -217,9 +216,9 @@ func (a *App) DoGuestRolesCreationMigration() { scheme.DefaultChannelGuestRole = savedRole.Name } - result := <-a.Srv.Store.Scheme().Save(scheme) - if result.Err != nil { - mlog.Critical("Failed to update custom scheme.", mlog.Err(result.Err)) + _, err := a.Srv.Store.Scheme().Save(scheme) + if err != nil { + mlog.Critical("Failed to update custom scheme.", mlog.Err(err)) allSucceeded = false } } diff --git a/app/permissions.go b/app/permissions.go index dd6ebb2c5c..eef7c39a9c 100644 --- a/app/permissions.go +++ b/app/permissions.go @@ -43,8 +43,8 @@ func (a *App) ResetPermissionsSystem() *model.AppError { } // Purge all schemes from the database. - if result := <-a.Srv.Store.Scheme().PermanentDeleteAll(); result.Err != nil { - return result.Err + if err := a.Srv.Store.Scheme().PermanentDeleteAll(); err != nil { + return err } // Purge all roles from the database. diff --git a/app/scheme.go b/app/scheme.go index 36567ae07d..10a0a49f50 100644 --- a/app/scheme.go +++ b/app/scheme.go @@ -14,11 +14,7 @@ func (a *App) GetScheme(id string) (*model.Scheme, *model.AppError) { return nil, err } - result := <-a.Srv.Store.Scheme().Get(id) - if result.Err != nil { - return nil, result.Err - } - return result.Data.(*model.Scheme), nil + return a.Srv.Store.Scheme().Get(id) } func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError) { @@ -26,11 +22,7 @@ func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError) { return nil, err } - result := <-a.Srv.Store.Scheme().GetByName(name) - if result.Err != nil { - return nil, result.Err - } - return result.Data.(*model.Scheme), nil + return a.Srv.Store.Scheme().GetByName(name) } func (a *App) GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError) { @@ -46,11 +38,7 @@ func (a *App) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, return nil, err } - result := <-a.Srv.Store.Scheme().GetAllPage(scope, offset, limit) - if result.Err != nil { - return nil, result.Err - } - return result.Data.([]*model.Scheme), nil + return a.Srv.Store.Scheme().GetAllPage(scope, offset, limit) } func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) { @@ -69,11 +57,7 @@ func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError scheme.UpdateAt = 0 scheme.DeleteAt = 0 - result := <-a.Srv.Store.Scheme().Save(scheme) - if result.Err != nil { - return nil, result.Err - } - return scheme, nil + return a.Srv.Store.Scheme().Save(scheme) } func (a *App) PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError) { @@ -95,11 +79,7 @@ func (a *App) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError return nil, err } - result := <-a.Srv.Store.Scheme().Save(scheme) - if result.Err != nil { - return nil, result.Err - } - return scheme, nil + return a.Srv.Store.Scheme().Save(scheme) } func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) { @@ -107,11 +87,7 @@ func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) { return nil, err } - result := <-a.Srv.Store.Scheme().Delete(schemeId) - if result.Err != nil { - return nil, result.Err - } - return result.Data.(*model.Scheme), nil + return a.Srv.Store.Scheme().Delete(schemeId) } func (a *App) GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError) { @@ -166,11 +142,11 @@ func (a *App) IsPhase2MigrationCompleted() *model.AppError { func (a *App) SchemesIterator(batchSize int) func() []*model.Scheme { offset := 0 return func() []*model.Scheme { - result := <-a.Srv.Store.Scheme().GetAllPage("", offset, batchSize) - if result.Err != nil { + schemes, err := a.Srv.Store.Scheme().GetAllPage("", offset, batchSize) + if err != nil { return []*model.Scheme{} } offset += batchSize - return result.Data.([]*model.Scheme) + return schemes } } diff --git a/store/layered_store.go b/store/layered_store.go index ce865288dc..63b9c19dc7 100644 --- a/store/layered_store.go +++ b/store/layered_store.go @@ -290,38 +290,26 @@ type LayeredSchemeStore struct { *LayeredStore } -func (s *LayeredSchemeStore) Save(scheme *model.Scheme) StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemeSave(s.TmpContext, scheme) - }) +func (s *LayeredSchemeStore) Save(scheme *model.Scheme) (*model.Scheme, *model.AppError) { + return s.LayerChainHead.SchemeSave(s.TmpContext, scheme) } -func (s *LayeredSchemeStore) Get(schemeId string) StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemeGet(s.TmpContext, schemeId) - }) +func (s *LayeredSchemeStore) Get(schemeId string) (*model.Scheme, *model.AppError) { + return s.LayerChainHead.SchemeGet(s.TmpContext, schemeId) } -func (s *LayeredSchemeStore) GetByName(schemeName string) StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemeGetByName(s.TmpContext, schemeName) - }) +func (s *LayeredSchemeStore) GetByName(schemeName string) (*model.Scheme, *model.AppError) { + return s.LayerChainHead.SchemeGetByName(s.TmpContext, schemeName) } -func (s *LayeredSchemeStore) Delete(schemeId string) StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemeDelete(s.TmpContext, schemeId) - }) +func (s *LayeredSchemeStore) Delete(schemeId string) (*model.Scheme, *model.AppError) { + return s.LayerChainHead.SchemeDelete(s.TmpContext, schemeId) } -func (s *LayeredSchemeStore) GetAllPage(scope string, offset int, limit int) StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemeGetAllPage(s.TmpContext, scope, offset, limit) - }) +func (s *LayeredSchemeStore) GetAllPage(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) { + return s.LayerChainHead.SchemeGetAllPage(s.TmpContext, scope, offset, limit) } -func (s *LayeredSchemeStore) PermanentDeleteAll() StoreChannel { - return s.RunQuery(func(supplier LayeredStoreSupplier) *LayeredStoreSupplierResult { - return supplier.SchemePermanentDeleteAll(s.TmpContext) - }) +func (s *LayeredSchemeStore) PermanentDeleteAll() *model.AppError { + return s.LayerChainHead.SchemePermanentDeleteAll(s.TmpContext) } diff --git a/store/layered_store_supplier.go b/store/layered_store_supplier.go index b46b436828..9d86d9c566 100644 --- a/store/layered_store_supplier.go +++ b/store/layered_store_supplier.go @@ -41,10 +41,10 @@ type LayeredStoreSupplier interface { RolePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *model.AppError // Schemes - SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) *LayeredStoreSupplierResult - SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult - SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult - SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult - SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) *LayeredStoreSupplierResult - SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *LayeredStoreSupplierResult + SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) + SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) + SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) + SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) + SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) ([]*model.Scheme, *model.AppError) + SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *model.AppError } diff --git a/store/local_cache_supplier_schemes.go b/store/local_cache_supplier_schemes.go index 8dd1fededf..b7a9a12607 100644 --- a/store/local_cache_supplier_schemes.go +++ b/store/local_cache_supplier_schemes.go @@ -17,41 +17,46 @@ func (s *LocalCacheSupplier) handleClusterInvalidateScheme(msg *model.ClusterMes } } -func (s *LocalCacheSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { if len(scheme.Id) != 0 { defer s.doInvalidateCacheCluster(s.schemeCache, scheme.Id) } return s.Next().SchemeSave(ctx, scheme, hints...) } -func (s *LocalCacheSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { if result := s.doStandardReadCache(ctx, s.schemeCache, schemeId, hints...); result != nil { - return result + return result.Data.(*model.Scheme), nil } - result := s.Next().SchemeGet(ctx, schemeId, hints...) + scheme, err := s.Next().SchemeGet(ctx, schemeId, hints...) + if err != nil { + return nil, err + } + result := NewSupplierResult() + result.Data = scheme s.doStandardAddToCache(ctx, s.schemeCache, schemeId, result, hints...) - return result + return scheme, nil } -func (s *LocalCacheSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { return s.Next().SchemeGetByName(ctx, schemeName, hints...) } -func (s *LocalCacheSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { defer s.doInvalidateCacheCluster(s.schemeCache, schemeId) defer s.doClearCacheCluster(s.roleCache) return s.Next().SchemeDelete(ctx, schemeId, hints...) } -func (s *LocalCacheSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) ([]*model.Scheme, *model.AppError) { return s.Next().SchemeGetAllPage(ctx, scope, offset, limit, hints...) } -func (s *LocalCacheSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *LocalCacheSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *model.AppError { defer s.doClearCacheCluster(s.schemeCache) defer s.doClearCacheCluster(s.roleCache) diff --git a/store/redis_supplier_schemes.go b/store/redis_supplier_schemes.go index ae33361486..81839197d4 100644 --- a/store/redis_supplier_schemes.go +++ b/store/redis_supplier_schemes.go @@ -9,32 +9,32 @@ import ( "github.com/mattermost/mattermost-server/model" ) -func (s *RedisSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { // TODO: Redis caching. return s.Next().SchemeSave(ctx, scheme, hints...) } -func (s *RedisSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { // TODO: Redis caching. return s.Next().SchemeGet(ctx, schemeId, hints...) } -func (s *RedisSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { // TODO: Redis caching. return s.Next().SchemeGetByName(ctx, schemeName, hints...) } -func (s *RedisSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...LayeredStoreHint) (*model.Scheme, *model.AppError) { // TODO: Redis caching. return s.Next().SchemeDelete(ctx, schemeId, hints...) } -func (s *RedisSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...LayeredStoreHint) ([]*model.Scheme, *model.AppError) { // TODO: Redis caching. return s.Next().SchemeGetAllPage(ctx, scope, offset, limit, hints...) } -func (s *RedisSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *LayeredStoreSupplierResult { +func (s *RedisSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *model.AppError { // TODO: Redis caching. return s.Next().SchemePermanentDeleteAll(ctx, hints...) } diff --git a/store/sqlstore/scheme_supplier.go b/store/sqlstore/scheme_supplier.go index ebd9a24242..f125f8b27a 100644 --- a/store/sqlstore/scheme_supplier.go +++ b/store/sqlstore/scheme_supplier.go @@ -33,52 +33,48 @@ func initSqlSupplierSchemes(sqlStore SqlStore) { } } -func (s *SqlSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { if len(scheme.Id) == 0 { - if transaction, err := s.GetMaster().Begin(); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.SaveScheme", "store.sql_scheme.save.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - defer finalizeTransaction(transaction) - result = s.createScheme(ctx, scheme, transaction, hints...) - - if result.Err == nil { - if err := transaction.Commit(); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.SchemeSave", "store.sql_scheme.save_scheme.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) - } - } + transaction, err := s.GetMaster().Begin() + if err != nil { + return nil, model.NewAppError("SqlSchemeStore.SaveScheme", "store.sql_scheme.save.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) } - } else { - if !scheme.IsValid() { - result.Err = model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.invalid_scheme.app_error", nil, "schemeId="+scheme.Id, http.StatusBadRequest) - return result + defer finalizeTransaction(transaction) + + newScheme, appErr := s.createScheme(ctx, scheme, transaction, hints...) + if appErr != nil { + return nil, appErr } - - scheme.UpdateAt = model.GetMillis() - - if rowsChanged, err := s.GetMaster().Update(scheme); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.update.app_error", nil, err.Error(), http.StatusInternalServerError) - } else if rowsChanged != 1 { - result.Err = model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.update.app_error", nil, "no record to update", http.StatusInternalServerError) + if err := transaction.Commit(); err != nil { + return nil, model.NewAppError("SqlSchemeStore.SchemeSave", "store.sql_scheme.save_scheme.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) } - - result.Data = scheme + return newScheme, nil } - return result + if !scheme.IsValid() { + return nil, model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.invalid_scheme.app_error", nil, "schemeId="+scheme.Id, http.StatusBadRequest) + } + + scheme.UpdateAt = model.GetMillis() + + rowsChanged, err := s.GetMaster().Update(scheme) + if err != nil { + return nil, model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.update.app_error", nil, err.Error(), http.StatusInternalServerError) + } + if rowsChanged != 1 { + return nil, model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.update.app_error", nil, "no record to update", http.StatusInternalServerError) + } + + return scheme, nil } -func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, transaction *gorp.Transaction, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, transaction *gorp.Transaction, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { // Fetch the default system scheme roles to populate default permissions. defaultRoleNames := []string{model.TEAM_ADMIN_ROLE_ID, model.TEAM_USER_ROLE_ID, model.TEAM_GUEST_ROLE_ID, model.CHANNEL_ADMIN_ROLE_ID, model.CHANNEL_USER_ROLE_ID, model.CHANNEL_GUEST_ROLE_ID} defaultRoles := make(map[string]*model.Role) roles, err := s.RoleGetByNames(ctx, defaultRoleNames) if err != nil { - result.Err = err - return result + return nil, err } for _, role := range roles { @@ -99,8 +95,7 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr } if len(defaultRoles) != 6 { - result.Err = model.NewAppError("SqlSchemeStore.SaveScheme", "store.sql_scheme.save.retrieve_default_scheme_roles.app_error", nil, "", http.StatusInternalServerError) - return result + return nil, model.NewAppError("SqlSchemeStore.SaveScheme", "store.sql_scheme.save.retrieve_default_scheme_roles.app_error", nil, "", http.StatusInternalServerError) } // Create the appropriate default roles for the scheme. @@ -113,12 +108,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, teamAdminRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultTeamAdminRole = savedRole.Name + savedRole, err := s.createRole(ctx, teamAdminRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultTeamAdminRole = savedRole.Name // Team User Role teamUserRole := &model.Role{ @@ -128,12 +122,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, teamUserRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultTeamUserRole = savedRole.Name + savedRole, err = s.createRole(ctx, teamUserRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultTeamUserRole = savedRole.Name // Team Guest Role teamGuestRole := &model.Role{ @@ -143,12 +136,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, teamGuestRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultTeamGuestRole = savedRole.Name + savedRole, err = s.createRole(ctx, teamGuestRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultTeamGuestRole = savedRole.Name } if scheme.Scope == model.SCHEME_SCOPE_TEAM || scheme.Scope == model.SCHEME_SCOPE_CHANNEL { // Channel Admin Role @@ -159,12 +151,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, channelAdminRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultChannelAdminRole = savedRole.Name + savedRole, err := s.createRole(ctx, channelAdminRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultChannelAdminRole = savedRole.Name // Channel User Role channelUserRole := &model.Role{ @@ -174,12 +165,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, channelUserRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultChannelUserRole = savedRole.Name + savedRole, err = s.createRole(ctx, channelUserRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultChannelUserRole = savedRole.Name // Channel Guest Role channelGuestRole := &model.Role{ @@ -189,12 +179,11 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr SchemeManaged: true, } - if savedRole, err := s.createRole(ctx, channelGuestRole, transaction); err != nil { - result.Err = err - return result - } else { - scheme.DefaultChannelGuestRole = savedRole.Name + savedRole, err = s.createRole(ctx, channelGuestRole, transaction) + if err != nil { + return nil, err } + scheme.DefaultChannelGuestRole = savedRole.Name } scheme.Id = model.NewId() @@ -206,80 +195,59 @@ func (s *SqlSupplier) createScheme(ctx context.Context, scheme *model.Scheme, tr // Validate the scheme if !scheme.IsValidForCreate() { - result.Err = model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.invalid_scheme.app_error", nil, "", http.StatusBadRequest) - return result + return nil, model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.invalid_scheme.app_error", nil, "", http.StatusBadRequest) } if err := transaction.Insert(scheme); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, model.NewAppError("SqlSchemeStore.Save", "store.sql_scheme.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError) } - result.Data = scheme - - return result + return scheme, nil } -func (s *SqlSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { var scheme model.Scheme - if err := s.GetReplica().SelectOne(&scheme, "SELECT * from Schemes WHERE Id = :Id", map[string]interface{}{"Id": schemeId}); err != nil { if err == sql.ErrNoRows { - result.Err = model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusNotFound) - } else { - result.Err = model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusNotFound) } + return nil, model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) } - result.Data = &scheme - - return result + return &scheme, nil } -func (s *SqlSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { var scheme model.Scheme if err := s.GetReplica().SelectOne(&scheme, "SELECT * from Schemes WHERE Name = :Name", map[string]interface{}{"Name": schemeName}); err != nil { if err == sql.ErrNoRows { - result.Err = model.NewAppError("SqlSchemeStore.GetByName", "store.sql_scheme.get.app_error", nil, "Name="+schemeName+", "+err.Error(), http.StatusNotFound) - } else { - result.Err = model.NewAppError("SqlSchemeStore.GetByName", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, model.NewAppError("SqlSchemeStore.GetByName", "store.sql_scheme.get.app_error", nil, "Name="+schemeName+", "+err.Error(), http.StatusNotFound) } + return nil, model.NewAppError("SqlSchemeStore.GetByName", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) } - result.Data = &scheme - - return result + return &scheme, nil } -func (s *SqlSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { // Get the scheme var scheme model.Scheme if err := s.GetReplica().SelectOne(&scheme, "SELECT * from Schemes WHERE Id = :Id", map[string]interface{}{"Id": schemeId}); err != nil { if err == sql.ErrNoRows { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusNotFound) - } else { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusNotFound) } - - return result + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.get.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) } // Update any teams or channels using this scheme to the default scheme. if scheme.Scope == model.SCHEME_SCOPE_TEAM { if _, err := s.GetMaster().Exec("UPDATE Teams SET SchemeId = '' WHERE SchemeId = :SchemeId", map[string]interface{}{"SchemeId": schemeId}); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.reset_teams.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) - return result + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.reset_teams.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) } } else if scheme.Scope == model.SCHEME_SCOPE_CHANNEL { if _, err := s.GetMaster().Exec("UPDATE Channels SET SchemeId = '' WHERE SchemeId = :SchemeId", map[string]interface{}{"SchemeId": schemeId}); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.reset_channels.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) - return result + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.reset_channels.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) } // Blow away the channel caches. @@ -305,28 +273,24 @@ func (s *SqlSupplier) SchemeDelete(ctx context.Context, schemeId string, hints . queryArgs["DeleteAt"] = time if _, err := s.GetMaster().Exec("UPDATE Roles SET UpdateAt = :UpdateAt, DeleteAt = :DeleteAt WHERE Name IN ("+inQuery+")", queryArgs); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.role_update.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) - return result + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.role_update.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) } // Delete the scheme itself. scheme.UpdateAt = time scheme.DeleteAt = time - if rowsChanged, err := s.GetMaster().Update(&scheme); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.update.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) - } else if rowsChanged != 1 { - result.Err = model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.update.app_error", nil, "no record to update", http.StatusInternalServerError) - } else { - result.Data = &scheme + rowsChanged, err := s.GetMaster().Update(&scheme) + if err != nil { + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.update.app_error", nil, "Id="+schemeId+", "+err.Error(), http.StatusInternalServerError) } - - return result + if rowsChanged != 1 { + return nil, model.NewAppError("SqlSchemeStore.Delete", "store.sql_scheme.delete.update.app_error", nil, "no record to update", http.StatusInternalServerError) + } + return &scheme, nil } -func (s *SqlSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) ([]*model.Scheme, *model.AppError) { var schemes []*model.Scheme scopeClause := "" @@ -335,20 +299,16 @@ func (s *SqlSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset } if _, err := s.GetReplica().Select(&schemes, "SELECT * from Schemes WHERE DeleteAt = 0 "+scopeClause+" ORDER BY CreateAt DESC LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Limit": limit, "Offset": offset, "Scope": scope}); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, model.NewAppError("SqlSchemeStore.Get", "store.sql_scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) } - result.Data = schemes - - return result + return schemes, nil } -func (s *SqlSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { - result := store.NewSupplierResult() - +func (s *SqlSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *model.AppError { if _, err := s.GetMaster().Exec("DELETE from Schemes"); err != nil { - result.Err = model.NewAppError("SqlSchemeStore.PermanentDeleteAll", "store.sql_scheme.permanent_delete_all.app_error", nil, err.Error(), http.StatusInternalServerError) + return model.NewAppError("SqlSchemeStore.PermanentDeleteAll", "store.sql_scheme.permanent_delete_all.app_error", nil, err.Error(), http.StatusInternalServerError) } - return result + return nil } diff --git a/store/store.go b/store/store.go index 2d4bf4873c..88a2c3b2c9 100644 --- a/store/store.go +++ b/store/store.go @@ -555,12 +555,12 @@ type RoleStore interface { } type SchemeStore interface { - Save(scheme *model.Scheme) StoreChannel - Get(schemeId string) StoreChannel - GetByName(schemeName string) StoreChannel - GetAllPage(scope string, offset int, limit int) StoreChannel - Delete(schemeId string) StoreChannel - PermanentDeleteAll() StoreChannel + Save(scheme *model.Scheme) (*model.Scheme, *model.AppError) + Get(schemeId string) (*model.Scheme, *model.AppError) + GetByName(schemeName string) (*model.Scheme, *model.AppError) + GetAllPage(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) + Delete(schemeId string) (*model.Scheme, *model.AppError) + PermanentDeleteAll() *model.AppError } type TermsOfServiceStore interface { diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 8162fb6d77..d06b456d0b 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -3039,10 +3039,12 @@ func testChannelStoreGetChannelsByScheme(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_CHANNEL, } - result := <-ss.Scheme().Save(s1) - s1 = result.Data.(*model.Scheme) - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) - s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) + s1, err = ss.Scheme().Save(s1) + require.Nil(t, err) + s2, err = ss.Scheme().Save(s2) + require.Nil(t, err) // Create and save some teams. c1 := &model.Channel{ @@ -3167,7 +3169,8 @@ func testResetAllChannelSchemes(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_CHANNEL, } - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) c1 := &model.Channel{ TeamId: model.NewId(), @@ -3191,7 +3194,7 @@ func testResetAllChannelSchemes(t *testing.T, ss store.Store) { assert.Equal(t, s1.Id, *c1.SchemeId) assert.Equal(t, s1.Id, *c2.SchemeId) - err := ss.Channel().ResetAllChannelSchemes() + err = ss.Channel().ResetAllChannelSchemes() assert.Nil(t, err) c1, _ = ss.Channel().Get(c1.Id, true) diff --git a/store/storetest/mocks/LayeredStoreDatabaseLayer.go b/store/storetest/mocks/LayeredStoreDatabaseLayer.go index 74010e6b8a..b95dfac87a 100644 --- a/store/storetest/mocks/LayeredStoreDatabaseLayer.go +++ b/store/storetest/mocks/LayeredStoreDatabaseLayer.go @@ -783,7 +783,7 @@ func (_m *LayeredStoreDatabaseLayer) Scheme() store.SchemeStore { } // SchemeDelete provides a mock function with given fields: ctx, schemeId, hints -func (_m *LayeredStoreDatabaseLayer) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -793,20 +793,29 @@ func (_m *LayeredStoreDatabaseLayer) SchemeDelete(ctx context.Context, schemeId _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeId, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeId, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGet provides a mock function with given fields: ctx, schemeId, hints -func (_m *LayeredStoreDatabaseLayer) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -816,20 +825,29 @@ func (_m *LayeredStoreDatabaseLayer) SchemeGet(ctx context.Context, schemeId str _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeId, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeId, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGetAllPage provides a mock function with given fields: ctx, scope, offset, limit, hints -func (_m *LayeredStoreDatabaseLayer) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) ([]*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -839,20 +857,29 @@ func (_m *LayeredStoreDatabaseLayer) SchemeGetAllPage(ctx context.Context, scope _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, int, int, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 []*model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, int, int, ...store.LayeredStoreHint) []*model.Scheme); ok { r0 = rf(ctx, scope, offset, limit, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).([]*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, int, int, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, scope, offset, limit, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGetByName provides a mock function with given fields: ctx, schemeName, hints -func (_m *LayeredStoreDatabaseLayer) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -862,20 +889,29 @@ func (_m *LayeredStoreDatabaseLayer) SchemeGetByName(ctx context.Context, scheme _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeName, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeName, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemePermanentDeleteAll provides a mock function with given fields: ctx, hints -func (_m *LayeredStoreDatabaseLayer) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *model.AppError { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -885,12 +921,12 @@ func (_m *LayeredStoreDatabaseLayer) SchemePermanentDeleteAll(ctx context.Contex _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.AppError + if rf, ok := ret.Get(0).(func(context.Context, ...store.LayeredStoreHint) *model.AppError); ok { r0 = rf(ctx, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.AppError) } } @@ -898,7 +934,7 @@ func (_m *LayeredStoreDatabaseLayer) SchemePermanentDeleteAll(ctx context.Contex } // SchemeSave provides a mock function with given fields: ctx, scheme, hints -func (_m *LayeredStoreDatabaseLayer) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreDatabaseLayer) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -908,16 +944,25 @@ func (_m *LayeredStoreDatabaseLayer) SchemeSave(ctx context.Context, scheme *mod _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, scheme, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, scheme, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // Session provides a mock function with given fields: diff --git a/store/storetest/mocks/LayeredStoreSupplier.go b/store/storetest/mocks/LayeredStoreSupplier.go index d74a5569eb..be946185ca 100644 --- a/store/storetest/mocks/LayeredStoreSupplier.go +++ b/store/storetest/mocks/LayeredStoreSupplier.go @@ -427,7 +427,7 @@ func (_m *LayeredStoreSupplier) RoleSave(ctx context.Context, role *model.Role, } // SchemeDelete provides a mock function with given fields: ctx, schemeId, hints -func (_m *LayeredStoreSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemeDelete(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -437,20 +437,29 @@ func (_m *LayeredStoreSupplier) SchemeDelete(ctx context.Context, schemeId strin _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeId, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeId, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGet provides a mock function with given fields: ctx, schemeId, hints -func (_m *LayeredStoreSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemeGet(ctx context.Context, schemeId string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -460,20 +469,29 @@ func (_m *LayeredStoreSupplier) SchemeGet(ctx context.Context, schemeId string, _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeId, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeId, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGetAllPage provides a mock function with given fields: ctx, scope, offset, limit, hints -func (_m *LayeredStoreSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemeGetAllPage(ctx context.Context, scope string, offset int, limit int, hints ...store.LayeredStoreHint) ([]*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -483,20 +501,29 @@ func (_m *LayeredStoreSupplier) SchemeGetAllPage(ctx context.Context, scope stri _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, int, int, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 []*model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, int, int, ...store.LayeredStoreHint) []*model.Scheme); ok { r0 = rf(ctx, scope, offset, limit, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).([]*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, int, int, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, scope, offset, limit, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemeGetByName provides a mock function with given fields: ctx, schemeName, hints -func (_m *LayeredStoreSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemeGetByName(ctx context.Context, schemeName string, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -506,20 +533,29 @@ func (_m *LayeredStoreSupplier) SchemeGetByName(ctx context.Context, schemeName _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, string, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, schemeName, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, string, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, schemeName, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SchemePermanentDeleteAll provides a mock function with given fields: ctx, hints -func (_m *LayeredStoreSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...store.LayeredStoreHint) *model.AppError { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -529,12 +565,12 @@ func (_m *LayeredStoreSupplier) SchemePermanentDeleteAll(ctx context.Context, hi _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.AppError + if rf, ok := ret.Get(0).(func(context.Context, ...store.LayeredStoreHint) *model.AppError); ok { r0 = rf(ctx, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.AppError) } } @@ -542,7 +578,7 @@ func (_m *LayeredStoreSupplier) SchemePermanentDeleteAll(ctx context.Context, hi } // SchemeSave provides a mock function with given fields: ctx, scheme, hints -func (_m *LayeredStoreSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult { +func (_m *LayeredStoreSupplier) SchemeSave(ctx context.Context, scheme *model.Scheme, hints ...store.LayeredStoreHint) (*model.Scheme, *model.AppError) { _va := make([]interface{}, len(hints)) for _i := range hints { _va[_i] = hints[_i] @@ -552,16 +588,25 @@ func (_m *LayeredStoreSupplier) SchemeSave(ctx context.Context, scheme *model.Sc _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *store.LayeredStoreSupplierResult - if rf, ok := ret.Get(0).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *store.LayeredStoreSupplierResult); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *model.Scheme); ok { r0 = rf(ctx, scheme, hints...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*store.LayeredStoreSupplierResult) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(context.Context, *model.Scheme, ...store.LayeredStoreHint) *model.AppError); ok { + r1 = rf(ctx, scheme, hints...) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SetChainNext provides a mock function with given fields: _a0 diff --git a/store/storetest/mocks/SchemeStore.go b/store/storetest/mocks/SchemeStore.go index d54e732614..a1e9d0779f 100644 --- a/store/storetest/mocks/SchemeStore.go +++ b/store/storetest/mocks/SchemeStore.go @@ -6,7 +6,6 @@ package mocks import mock "github.com/stretchr/testify/mock" import model "github.com/mattermost/mattermost-server/model" -import store "github.com/mattermost/mattermost-server/store" // SchemeStore is an autogenerated mock type for the SchemeStore type type SchemeStore struct { @@ -14,79 +13,115 @@ type SchemeStore struct { } // Delete provides a mock function with given fields: schemeId -func (_m *SchemeStore) Delete(schemeId string) store.StoreChannel { +func (_m *SchemeStore) Delete(schemeId string) (*model.Scheme, *model.AppError) { ret := _m.Called(schemeId) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(string) *model.Scheme); ok { r0 = rf(schemeId) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + r1 = rf(schemeId) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // Get provides a mock function with given fields: schemeId -func (_m *SchemeStore) Get(schemeId string) store.StoreChannel { +func (_m *SchemeStore) Get(schemeId string) (*model.Scheme, *model.AppError) { ret := _m.Called(schemeId) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(string) *model.Scheme); ok { r0 = rf(schemeId) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + r1 = rf(schemeId) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetAllPage provides a mock function with given fields: scope, offset, limit -func (_m *SchemeStore) GetAllPage(scope string, offset int, limit int) store.StoreChannel { +func (_m *SchemeStore) GetAllPage(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) { ret := _m.Called(scope, offset, limit) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok { + var r0 []*model.Scheme + if rf, ok := ret.Get(0).(func(string, int, int) []*model.Scheme); ok { r0 = rf(scope, offset, limit) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).([]*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok { + r1 = rf(scope, offset, limit) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetByName provides a mock function with given fields: schemeName -func (_m *SchemeStore) GetByName(schemeName string) store.StoreChannel { +func (_m *SchemeStore) GetByName(schemeName string) (*model.Scheme, *model.AppError) { ret := _m.Called(schemeName) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(string) *model.Scheme); ok { r0 = rf(schemeName) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + r1 = rf(schemeName) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // PermanentDeleteAll provides a mock function with given fields: -func (_m *SchemeStore) PermanentDeleteAll() store.StoreChannel { +func (_m *SchemeStore) PermanentDeleteAll() *model.AppError { ret := _m.Called() - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func() store.StoreChannel); ok { + var r0 *model.AppError + if rf, ok := ret.Get(0).(func() *model.AppError); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.AppError) } } @@ -94,17 +129,26 @@ func (_m *SchemeStore) PermanentDeleteAll() store.StoreChannel { } // Save provides a mock function with given fields: scheme -func (_m *SchemeStore) Save(scheme *model.Scheme) store.StoreChannel { +func (_m *SchemeStore) Save(scheme *model.Scheme) (*model.Scheme, *model.AppError) { ret := _m.Called(scheme) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(*model.Scheme) store.StoreChannel); ok { + var r0 *model.Scheme + if rf, ok := ret.Get(0).(func(*model.Scheme) *model.Scheme); ok { r0 = rf(scheme) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.Scheme) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(*model.Scheme) *model.AppError); ok { + r1 = rf(scheme) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } diff --git a/store/storetest/scheme_store.go b/store/storetest/scheme_store.go index d604b837a4..9b613774f4 100644 --- a/store/storetest/scheme_store.go +++ b/store/storetest/scheme_store.go @@ -88,9 +88,8 @@ func testSchemeStoreSave(t *testing.T, ss store.Store) { } // Check all fields saved correctly. - res1 := <-ss.Scheme().Save(s1) - assert.Nil(t, res1.Err) - d1 := res1.Data.(*model.Scheme) + d1, err := ss.Scheme().Save(s1) + assert.Nil(t, err) assert.Len(t, d1.Id, 26) assert.Equal(t, s1.DisplayName, d1.DisplayName) assert.Equal(t, s1.Name, d1.Name) @@ -140,9 +139,8 @@ func testSchemeStoreSave(t *testing.T, ss store.Store) { // Change the scheme description and update. d1.Description = model.NewId() - res2 := <-ss.Scheme().Save(d1) - assert.Nil(t, res2.Err) - d2 := res2.Data.(*model.Scheme) + d2, err := ss.Scheme().Save(d1) + assert.Nil(t, err) assert.Equal(t, d1.Id, d2.Id) assert.Equal(t, s1.DisplayName, d2.DisplayName) assert.Equal(t, s1.Name, d2.Name) @@ -167,8 +165,8 @@ func testSchemeStoreSave(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_TEAM, } - res3 := <-ss.Scheme().Save(s3) - assert.NotNil(t, res3.Err) + _, err = ss.Scheme().Save(s3) + assert.NotNil(t, err) } func testSchemeStoreGet(t *testing.T, ss store.Store) { @@ -180,15 +178,13 @@ func testSchemeStoreGet(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_TEAM, } - res1 := <-ss.Scheme().Save(s1) - assert.Nil(t, res1.Err) - d1 := res1.Data.(*model.Scheme) + d1, err := ss.Scheme().Save(s1) + assert.Nil(t, err) assert.Len(t, d1.Id, 26) // Get a valid scheme - res2 := <-ss.Scheme().Get(d1.Id) - assert.Nil(t, res2.Err) - d2 := res1.Data.(*model.Scheme) + d2, err := ss.Scheme().Get(d1.Id) + assert.Nil(t, err) assert.Equal(t, d1.Id, d2.Id) assert.Equal(t, s1.DisplayName, d2.DisplayName) assert.Equal(t, s1.Name, d2.Name) @@ -205,8 +201,8 @@ func testSchemeStoreGet(t *testing.T, ss store.Store) { assert.Equal(t, d1.DefaultChannelGuestRole, d2.DefaultChannelGuestRole) // Get an invalid scheme - res3 := <-ss.Scheme().Get(model.NewId()) - assert.NotNil(t, res3.Err) + _, err = ss.Scheme().Get(model.NewId()) + assert.NotNil(t, err) } func testSchemeStoreGetByName(t *testing.T, ss store.Store) { @@ -218,15 +214,13 @@ func testSchemeStoreGetByName(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_TEAM, } - res1 := <-ss.Scheme().Save(s1) - assert.Nil(t, res1.Err) - d1 := res1.Data.(*model.Scheme) + d1, err := ss.Scheme().Save(s1) + assert.Nil(t, err) assert.Len(t, d1.Id, 26) // Get a valid scheme - res2 := <-ss.Scheme().GetByName(d1.Name) - assert.Nil(t, res2.Err) - d2 := res1.Data.(*model.Scheme) + d2, err := ss.Scheme().GetByName(d1.Name) + assert.Nil(t, err) assert.Equal(t, d1.Id, d2.Id) assert.Equal(t, s1.DisplayName, d2.DisplayName) assert.Equal(t, s1.Name, d2.Name) @@ -243,8 +237,8 @@ func testSchemeStoreGetByName(t *testing.T, ss store.Store) { assert.Equal(t, d1.DefaultChannelGuestRole, d2.DefaultChannelGuestRole) // Get an invalid scheme - res3 := <-ss.Scheme().GetByName(model.NewId()) - assert.NotNil(t, res3.Err) + _, err = ss.Scheme().GetByName(model.NewId()) + assert.NotNil(t, err) } func testSchemeStoreGetAllPage(t *testing.T, ss store.Store) { @@ -277,17 +271,16 @@ func testSchemeStoreGetAllPage(t *testing.T, ss store.Store) { } for _, scheme := range schemes { - store.Must(ss.Scheme().Save(scheme)) + _, err := ss.Scheme().Save(scheme) + require.Nil(t, err) } - r1 := <-ss.Scheme().GetAllPage("", 0, 2) - assert.Nil(t, r1.Err) - s1 := r1.Data.([]*model.Scheme) + s1, err := ss.Scheme().GetAllPage("", 0, 2) + assert.Nil(t, err) assert.Len(t, s1, 2) - r2 := <-ss.Scheme().GetAllPage("", 2, 2) - assert.Nil(t, r2.Err) - s2 := r2.Data.([]*model.Scheme) + s2, err := ss.Scheme().GetAllPage("", 2, 2) + assert.Nil(t, err) assert.Len(t, s2, 2) assert.NotEqual(t, s1[0].DisplayName, s2[0].DisplayName) assert.NotEqual(t, s1[0].DisplayName, s2[1].DisplayName) @@ -298,17 +291,15 @@ func testSchemeStoreGetAllPage(t *testing.T, ss store.Store) { assert.NotEqual(t, s1[1].Name, s2[0].Name) assert.NotEqual(t, s1[1].Name, s2[1].Name) - r3 := <-ss.Scheme().GetAllPage("team", 0, 1000) - assert.Nil(t, r3.Err) - s3 := r3.Data.([]*model.Scheme) + s3, err := ss.Scheme().GetAllPage("team", 0, 1000) + assert.Nil(t, err) assert.NotZero(t, len(s3)) for _, s := range s3 { assert.Equal(t, "team", s.Scope) } - r4 := <-ss.Scheme().GetAllPage("channel", 0, 1000) - assert.Nil(t, r4.Err) - s4 := r4.Data.([]*model.Scheme) + s4, err := ss.Scheme().GetAllPage("channel", 0, 1000) + assert.Nil(t, err) assert.NotZero(t, len(s4)) for _, s := range s4 { assert.Equal(t, "channel", s.Scope) @@ -325,9 +316,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { } // Check all fields saved correctly. - res1 := <-ss.Scheme().Save(s1) - assert.Nil(t, res1.Err) - d1 := res1.Data.(*model.Scheme) + d1, err := ss.Scheme().Save(s1) + assert.Nil(t, err) assert.Len(t, d1.Id, 26) assert.Equal(t, s1.DisplayName, d1.DisplayName) assert.Equal(t, s1.Name, d1.Name) @@ -375,11 +365,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { assert.True(t, role6.SchemeManaged) // Delete the scheme. - res2 := <-ss.Scheme().Delete(d1.Id) - if !assert.Nil(t, res2.Err) { - t.Fatal(res2.Err) - } - d2 := res2.Data.(*model.Scheme) + d2, err := ss.Scheme().Delete(d1.Id) + require.Nil(t, err) assert.NotZero(t, d2.DeleteAt) // Check that the roles are deleted too. @@ -408,8 +395,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { assert.NotZero(t, role12.DeleteAt) // Try deleting a scheme that does not exist. - res3 := <-ss.Scheme().Delete(model.NewId()) - assert.NotNil(t, res3.Err) + _, err = ss.Scheme().Delete(model.NewId()) + assert.NotNil(t, err) // Try deleting a team scheme that's in use. s4 := &model.Scheme{ @@ -418,9 +405,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_TEAM, } - res4 := <-ss.Scheme().Save(s4) - assert.Nil(t, res4.Err) - d4 := res4.Data.(*model.Scheme) + d4, err := ss.Scheme().Save(s4) + assert.Nil(t, err) t4 := &model.Team{ Name: model.NewId(), @@ -432,8 +418,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { t4, err = ss.Team().Save(t4) require.Nil(t, err) - sres4 := <-ss.Scheme().Delete(d4.Id) - assert.Nil(t, sres4.Err) + _, err = ss.Scheme().Delete(d4.Id) + assert.Nil(t, err) t5, err := ss.Team().Get(t4.Id) require.Nil(t, err) @@ -446,9 +432,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_CHANNEL, } - res5 := <-ss.Scheme().Save(s5) - assert.Nil(t, res5.Err) - d5 := res5.Data.(*model.Scheme) + d5, err := ss.Scheme().Save(s5) + assert.Nil(t, err) c5 := &model.Channel{ TeamId: model.NewId(), @@ -460,8 +445,8 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { c5, err = ss.Channel().Save(c5, -1) assert.Nil(t, err) - sres5 := <-ss.Scheme().Delete(d5.Id) - assert.Nil(t, sres5.Err) + _, err = ss.Scheme().Delete(d5.Id) + assert.Nil(t, err) c6, err := ss.Channel().Get(c5.Id, true) assert.Nil(t, err) @@ -483,19 +468,21 @@ func testSchemeStorePermanentDeleteAll(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_CHANNEL, } - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) - s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) + s2, err = ss.Scheme().Save(s2) + require.Nil(t, err) - res := <-ss.Scheme().PermanentDeleteAll() - assert.Nil(t, res.Err) + err = ss.Scheme().PermanentDeleteAll() + assert.Nil(t, err) - res1 := <-ss.Scheme().Get(s1.Id) - assert.NotNil(t, res1.Err) + _, err = ss.Scheme().Get(s1.Id) + assert.NotNil(t, err) - res2 := <-ss.Scheme().Get(s2.Id) - assert.NotNil(t, res2.Err) + _, err = ss.Scheme().Get(s2.Id) + assert.NotNil(t, err) - res3 := <-ss.Scheme().GetAllPage("", 0, 100000) - assert.Nil(t, res3.Err) - assert.Len(t, res3.Data.([]*model.Scheme), 0) + schemes, err := ss.Scheme().GetAllPage("", 0, 100000) + assert.Nil(t, err) + assert.Len(t, schemes, 0) } diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 40395e50b0..a2a1a52ddb 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -1051,7 +1051,8 @@ func testGetTeamMember(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_TEAM, } - s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme) + s2, err := ss.Scheme().Save(s2) + require.Nil(t, err) t.Log(s2) t2, err := ss.Team().Save(&model.Team{ @@ -1318,8 +1319,10 @@ func testGetTeamsByScheme(t *testing.T, ss store.Store) { Scope: model.SCHEME_SCOPE_TEAM, } - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) - s2 = (<-ss.Scheme().Save(s2)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) + s2, err = ss.Scheme().Save(s2) + require.Nil(t, err) // Create and save some teams. t1 := &model.Team{ @@ -1345,7 +1348,7 @@ func testGetTeamsByScheme(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, } - _, err := ss.Team().Save(t1) + _, err = ss.Team().Save(t1) require.Nil(t, err) _, err = ss.Team().Save(t2) @@ -1447,7 +1450,8 @@ func testResetAllTeamSchemes(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_TEAM, } - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) t1 := &model.Team{ Name: model.NewId(), @@ -1465,7 +1469,7 @@ func testResetAllTeamSchemes(t *testing.T, ss store.Store) { SchemeId: &s1.Id, } - t1, err := ss.Team().Save(t1) + t1, err = ss.Team().Save(t1) require.Nil(t, err) t2, err = ss.Team().Save(t2) require.Nil(t, err) @@ -1539,7 +1543,8 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { Description: model.NewId(), Scope: model.SCHEME_SCOPE_TEAM, } - s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) + s1, err := ss.Scheme().Save(s1) + require.Nil(t, err) count1 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) assert.Equal(t, int64(0), count1) @@ -1551,7 +1556,7 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { Type: model.TEAM_OPEN, SchemeId: &s1.Id, } - _, err := ss.Team().Save(t1) + _, err = ss.Team().Save(t1) require.Nil(t, err) count2 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)