From 678c7d3b8c14c3bcaa689acfdb7318c81c8f0278 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Wed, 16 Feb 2022 22:30:27 +0530 Subject: [PATCH] Replace remaining GetMaster() queries (#19545) There are still some remaining which access the raw DB struct. There will be a separate PR to clean those up. ```release-note NONE ``` --- Makefile | 2 +- app/channel_category_test.go | 4 +- app/config_test.go | 6 +- app/helper_test.go | 12 +- app/plugin_api_tests/test_db_driver/main.go | 9 +- app/post_test.go | 3 +- app/user_test.go | 8 +- store/localcachelayer/layer_test.go | 2 +- store/sqlstore/integrity.go | 5 +- store/sqlstore/sqlx_wrapper.go | 34 ++++ store/sqlstore/store.go | 29 +-- store/sqlstore/store_test.go | 6 +- store/sqlstore/upgrade.go | 8 +- store/storetest/bot_store.go | 4 +- store/storetest/channel_store.go | 94 +++++----- store/storetest/channel_store_categories.go | 37 ++-- store/storetest/mocks/JSONSerializable.go | 26 --- store/storetest/mocks/ObjectCache.go | 99 ---------- store/storetest/mocks/SqlStore.go | 45 ----- store/storetest/mocks/dbSelecter.go | 29 --- store/storetest/mocks/sqlxExecutor.go | 195 -------------------- store/storetest/post_store.go | 11 +- store/storetest/reaction_store.go | 22 +-- store/storetest/retention_policy_store.go | 2 +- store/storetest/role_store.go | 2 +- store/storetest/user_store.go | 2 +- 26 files changed, 178 insertions(+), 518 deletions(-) delete mode 100644 store/storetest/mocks/JSONSerializable.go delete mode 100644 store/storetest/mocks/ObjectCache.go delete mode 100644 store/storetest/mocks/SqlStore.go delete mode 100644 store/storetest/mocks/dbSelecter.go delete mode 100644 store/storetest/mocks/sqlxExecutor.go diff --git a/Makefile b/Makefile index 04a5d448d3..dbc81ff60d 100644 --- a/Makefile +++ b/Makefile @@ -275,7 +275,7 @@ i18n-check: ## Exit on empty translation strings and translation source strings store-mocks: ## Creates mock files. $(GO) install github.com/vektra/mockery/...@v1.1.2 - $(GOBIN)/mockery -dir store -all -output store/storetest/mocks -note 'Regenerate this file using `make store-mocks`.' + $(GOBIN)/mockery -dir store -name ".*Store" -output store/storetest/mocks -note 'Regenerate this file using `make store-mocks`.' telemetry-mocks: ## Creates mock files. $(GO) install github.com/vektra/mockery/...@v1.1.2 diff --git a/app/channel_category_test.go b/app/channel_category_test.go index a44b4e1d28..6f586ddfd7 100644 --- a/app/channel_category_test.go +++ b/app/channel_category_test.go @@ -124,10 +124,10 @@ func TestGetSidebarCategories(t *testing.T) { // Temporarily renaming a table to force a DB error. sqlStore := mainHelper.GetSQLStore() - _, err := sqlStore.GetMaster().Exec("ALTER TABLE SidebarCategories RENAME TO SidebarCategoriesTest") + _, err := sqlStore.GetMasterX().Exec("ALTER TABLE SidebarCategories RENAME TO SidebarCategoriesTest") require.NoError(t, err) defer func() { - _, err := sqlStore.GetMaster().Exec("ALTER TABLE SidebarCategoriesTest RENAME TO SidebarCategories") + _, err := sqlStore.GetMasterX().Exec("ALTER TABLE SidebarCategoriesTest RENAME TO SidebarCategories") require.NoError(t, err) }() diff --git a/app/config_test.go b/app/config_test.go index 8f994b9a63..f24eda326a 100644 --- a/app/config_test.go +++ b/app/config_test.go @@ -126,12 +126,12 @@ func TestEnsureInstallationDate(t *testing.T) { for _, tc := range tt { t.Run(tc.Name, func(t *testing.T) { sqlStore := th.GetSqlStore() - sqlStore.GetMaster().Exec("DELETE FROM Users") + sqlStore.GetMasterX().Exec("DELETE FROM Users") for _, createAt := range tc.UsersCreationDates { user := th.CreateUser() user.CreateAt = createAt - sqlStore.GetMaster().Exec("UPDATE Users SET CreateAt = :CreateAt WHERE Id = :UserId", map[string]interface{}{"CreateAt": createAt, "UserId": user.Id}) + sqlStore.GetMasterX().Exec("UPDATE Users SET CreateAt = ? WHERE Id = ?", createAt, user.Id) } if tc.PrevInstallationDate == nil { @@ -156,7 +156,7 @@ func TestEnsureInstallationDate(t *testing.T) { assert.True(t, *tc.ExpectedInstallationDate <= value && *tc.ExpectedInstallationDate+1000 >= value) } - sqlStore.GetMaster().Exec("DELETE FROM Users") + sqlStore.GetMasterX().Exec("DELETE FROM Users") }) } } diff --git a/app/helper_test.go b/app/helper_test.go index ea2e002646..19be290d87 100644 --- a/app/helper_test.go +++ b/app/helper_test.go @@ -560,34 +560,34 @@ func (th *TestHelper) ConfigureInbucketMail() { func (*TestHelper) ResetRoleMigration() { sqlStore := mainHelper.GetSQLStore() - if _, err := sqlStore.GetMaster().Exec("DELETE from Roles"); err != nil { + if _, err := sqlStore.GetMasterX().Exec("DELETE from Roles"); err != nil { panic(err) } mainHelper.GetClusterInterface().SendClearRoleCacheMessage() - if _, err := sqlStore.GetMaster().Exec("DELETE from Systems where Name = :Name", map[string]interface{}{"Name": model.AdvancedPermissionsMigrationKey}); err != nil { + if _, err := sqlStore.GetMasterX().Exec("DELETE from Systems where Name = ?", model.AdvancedPermissionsMigrationKey); err != nil { panic(err) } } func (*TestHelper) ResetEmojisMigration() { sqlStore := mainHelper.GetSQLStore() - if _, err := sqlStore.GetMaster().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' create_emojis', '') WHERE builtin=True"); err != nil { + if _, err := sqlStore.GetMasterX().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' create_emojis', '') WHERE builtin=True"); err != nil { panic(err) } - if _, err := sqlStore.GetMaster().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' delete_emojis', '') WHERE builtin=True"); err != nil { + if _, err := sqlStore.GetMasterX().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' delete_emojis', '') WHERE builtin=True"); err != nil { panic(err) } - if _, err := sqlStore.GetMaster().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' delete_others_emojis', '') WHERE builtin=True"); err != nil { + if _, err := sqlStore.GetMasterX().Exec("UPDATE Roles SET Permissions=REPLACE(Permissions, ' delete_others_emojis', '') WHERE builtin=True"); err != nil { panic(err) } mainHelper.GetClusterInterface().SendClearRoleCacheMessage() - if _, err := sqlStore.GetMaster().Exec("DELETE from Systems where Name = :Name", map[string]interface{}{"Name": EmojisPermissionsMigrationKey}); err != nil { + if _, err := sqlStore.GetMasterX().Exec("DELETE from Systems where Name = ?", EmojisPermissionsMigrationKey); err != nil { panic(err) } } diff --git a/app/plugin_api_tests/test_db_driver/main.go b/app/plugin_api_tests/test_db_driver/main.go index ed764f8564..cec9cad094 100644 --- a/app/plugin_api_tests/test_db_driver/main.go +++ b/app/plugin_api_tests/test_db_driver/main.go @@ -41,12 +41,13 @@ func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model store.GetMaster().Db = handle store.SetMasterX(handle) + wrapper := sqlstore.NewStoreTestWrapper(store) // Testing with a handful of stores - storetest.TestPostStore(p.t, store, store) - storetest.TestUserStore(p.t, store, store) + storetest.TestPostStore(p.t, store, wrapper) + storetest.TestUserStore(p.t, store, wrapper) storetest.TestTeamStore(p.t, store) - storetest.TestChannelStore(p.t, store, store) - storetest.TestBotStore(p.t, store, store) + storetest.TestChannelStore(p.t, store, wrapper) + storetest.TestBotStore(p.t, store, wrapper) store.GetMaster().Db.Close() } diff --git a/app/post_test.go b/app/post_test.go index 29d55f10e1..16b2757eb2 100644 --- a/app/post_test.go +++ b/app/post_test.go @@ -821,7 +821,8 @@ func TestCreatePost(t *testing.T) { sqlStore := th.GetSqlStore() sql := fmt.Sprintf("select count(*) from Posts where Id = '%[1]s' or OriginalId = '%[1]s';", previewPost.Id) - val, err2 := sqlStore.GetMaster().SelectInt(sql) + var val int64 + err2 := sqlStore.GetMasterX().Get(&val, sql) require.NoError(t, err2) require.EqualValues(t, int64(1), val) diff --git a/app/user_test.go b/app/user_test.go index 8d94f4b511..85da99034a 100644 --- a/app/user_test.go +++ b/app/user_test.go @@ -927,11 +927,11 @@ func TestPermanentDeleteUser(t *testing.T) { }) assert.Nil(t, err) - var bots1 []*model.Bot - var bots2 []*model.Bot + bots1 := []*model.Bot{} + bots2 := []*model.Bot{} sqlStore := mainHelper.GetSQLStore() - _, err1 := sqlStore.GetMaster().Select(&bots1, "SELECT * FROM Bots") + err1 := sqlStore.GetMasterX().Select(&bots1, "SELECT * FROM Bots") assert.NoError(t, err1) assert.Equal(t, 1, len(bots1)) @@ -942,7 +942,7 @@ func TestPermanentDeleteUser(t *testing.T) { err = th.App.PermanentDeleteUser(th.Context, retUser1) assert.Nil(t, err) - _, err1 = sqlStore.GetMaster().Select(&bots2, "SELECT * FROM Bots") + err1 = sqlStore.GetMasterX().Select(&bots2, "SELECT * FROM Bots") assert.NoError(t, err1) assert.Equal(t, 0, len(bots2)) diff --git a/store/localcachelayer/layer_test.go b/store/localcachelayer/layer_test.go index 4b6442e37c..16f01b837c 100644 --- a/store/localcachelayer/layer_test.go +++ b/store/localcachelayer/layer_test.go @@ -61,7 +61,7 @@ func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storete if testing.Short() { t.SkipNow() } - f(t, st.Store, st.SqlStore) + f(t, st.Store, sqlstore.NewStoreTestWrapper(st.SqlStore)) }) } } diff --git a/store/sqlstore/integrity.go b/store/sqlstore/integrity.go index 9be36af048..a1e3a6c918 100644 --- a/store/sqlstore/integrity.go +++ b/store/sqlstore/integrity.go @@ -21,7 +21,7 @@ type relationalCheckConfig struct { } func getOrphanedRecords(ss *SqlStore, cfg relationalCheckConfig) ([]model.OrphanedRecord, error) { - var records []model.OrphanedRecord + records := []model.OrphanedRecord{} sub := ss.getQueryBuilder(). Select("TRUE"). @@ -54,8 +54,7 @@ func getOrphanedRecords(ss *SqlStore, cfg relationalCheckConfig) ([]model.Orphan query, args, _ := main.ToSql() - _, err := ss.GetMaster().Select(&records, query, args...) - + err := ss.GetMasterX().Select(&records, query, args...) return records, err } diff --git a/store/sqlstore/sqlx_wrapper.go b/store/sqlstore/sqlx_wrapper.go index d811c9364a..c2d666ab24 100644 --- a/store/sqlstore/sqlx_wrapper.go +++ b/store/sqlstore/sqlx_wrapper.go @@ -14,10 +14,32 @@ import ( "github.com/jmoiron/sqlx" + "github.com/mattermost/gorp" "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/shared/mlog" + "github.com/mattermost/mattermost-server/v6/store/storetest" ) +type StoreTestWrapper struct { + orig *SqlStore +} + +func NewStoreTestWrapper(orig *SqlStore) *StoreTestWrapper { + return &StoreTestWrapper{orig} +} + +func (w *StoreTestWrapper) GetMaster() *gorp.DbMap { + return w.orig.GetMaster() +} + +func (w *StoreTestWrapper) GetMasterX() storetest.SqlXExecutor { + return w.orig.GetMasterX() +} + +func (w *StoreTestWrapper) DriverName() string { + return w.orig.DriverName() +} + // sqlxExecutor exposes sqlx operations. It is used to enable some internal store methods to // accept both transactions (*sqlxTxWrapper) and common db handlers (*sqlxDbWrapper). type sqlxExecutor interface { @@ -106,6 +128,18 @@ func (w *sqlxDBWrapper) Exec(query string, args ...interface{}) (sql.Result, err return w.ExecRaw(query, args...) } +func (w *sqlxDBWrapper) ExecNoTimeout(query string, args ...interface{}) (sql.Result, error) { + query = w.DB.Rebind(query) + + if w.trace { + defer func(then time.Time) { + printArgs(query, time.Since(then), args) + }(time.Now()) + } + + return w.DB.ExecContext(context.Background(), query, args...) +} + // ExecRaw is like Exec but without any rebinding of params. You need to pass // the exact param types of your target database. func (w *sqlxDBWrapper) ExecRaw(query string, args ...interface{}) (sql.Result, error) { diff --git a/store/sqlstore/store.go b/store/sqlstore/store.go index 82cbcb5b3c..3b433bcf20 100644 --- a/store/sqlstore/store.go +++ b/store/sqlstore/store.go @@ -354,7 +354,8 @@ func (ss *SqlStore) DriverName() string { } func (ss *SqlStore) GetCurrentSchemaVersion() string { - version, _ := ss.GetMaster().SelectStr("SELECT Value FROM Systems WHERE Name='Version'") + var version string + _ = ss.GetMasterX().Get(&version, "SELECT Value FROM Systems WHERE Name='Version'") return version } @@ -540,7 +541,8 @@ func (ss *SqlStore) MarkSystemRanUnitTests() { func (ss *SqlStore) DoesTableExist(tableName string) bool { if ss.DriverName() == model.DatabaseDriverPostgres { - count, err := ss.GetMaster().SelectInt( + var count int64 + err := ss.GetMasterX().Get(&count, `SELECT count(relname) FROM pg_class WHERE relname=$1`, strings.ToLower(tableName), ) @@ -552,8 +554,8 @@ func (ss *SqlStore) DoesTableExist(tableName string) bool { return count > 0 } else if ss.DriverName() == model.DatabaseDriverMysql { - - count, err := ss.GetMaster().SelectInt( + var count int64 + err := ss.GetMasterX().Get(&count, `SELECT COUNT(0) AS table_exists FROM @@ -579,7 +581,8 @@ func (ss *SqlStore) DoesTableExist(tableName string) bool { func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool { if ss.DriverName() == model.DatabaseDriverPostgres { - count, err := ss.GetMaster().SelectInt( + var count int64 + err := ss.GetMasterX().Get(&count, `SELECT COUNT(0) FROM pg_attribute WHERE attrelid = $1::regclass @@ -600,8 +603,8 @@ func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool { return count > 0 } else if ss.DriverName() == model.DatabaseDriverMysql { - - count, err := ss.GetMaster().SelectInt( + var count int64 + err := ss.GetMasterX().Get(&count, `SELECT COUNT(0) AS column_exists FROM @@ -628,7 +631,8 @@ func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool { func (ss *SqlStore) DoesTriggerExist(triggerName string) bool { if ss.DriverName() == model.DatabaseDriverPostgres { - count, err := ss.GetMaster().SelectInt(` + var count int64 + err := ss.GetMasterX().Get(&count, ` SELECT COUNT(0) FROM @@ -644,7 +648,8 @@ func (ss *SqlStore) DoesTriggerExist(triggerName string) bool { return count > 0 } else if ss.DriverName() == model.DatabaseDriverMysql { - count, err := ss.GetMaster().SelectInt(` + var count int64 + err := ss.GetMasterX().Get(&count, ` SELECT COUNT(0) FROM @@ -673,7 +678,7 @@ func (ss *SqlStore) CreateColumnIfNotExists(tableName string, columnName string, } if ss.DriverName() == model.DatabaseDriverPostgres { - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType + " DEFAULT '" + defaultValue + "'") + _, err := ss.GetMasterX().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType + " DEFAULT '" + defaultValue + "'") if err != nil { mlog.Fatal("Failed to create column", mlog.Err(err)) } @@ -681,7 +686,7 @@ func (ss *SqlStore) CreateColumnIfNotExists(tableName string, columnName string, return true } else if ss.DriverName() == model.DatabaseDriverMysql { - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType + " DEFAULT '" + defaultValue + "'") + _, err := ss.GetMasterX().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType + " DEFAULT '" + defaultValue + "'") if err != nil { mlog.Fatal("Failed to create column", mlog.Err(err)) } @@ -699,7 +704,7 @@ func (ss *SqlStore) RemoveTableIfExists(tableName string) bool { return false } - _, err := ss.GetMaster().ExecNoTimeout("DROP TABLE " + tableName) + _, err := ss.GetMasterX().ExecNoTimeout("DROP TABLE " + tableName) if err != nil { mlog.Fatal("Failed to drop table", mlog.Err(err)) } diff --git a/store/sqlstore/store_test.go b/store/sqlstore/store_test.go index 88b52a7804..0ac631b6fb 100644 --- a/store/sqlstore/store_test.go +++ b/store/sqlstore/store_test.go @@ -90,7 +90,7 @@ func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storete if testing.Short() { t.SkipNow() } - f(t, st.Store, st.SqlStore) + f(t, st.Store, &StoreTestWrapper{st.SqlStore}) }) } } @@ -760,7 +760,7 @@ func TestExecNoTimeout(t *testing.T) { } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { query = `SELECT pg_sleep(2);` } - _, err := sqlStore.GetMaster().ExecNoTimeout(query) + _, err := sqlStore.GetMasterX().ExecNoTimeout(query) require.NoError(t, err) }) } @@ -781,6 +781,6 @@ func TestMySQLReadTimeout(t *testing.T) { store.initConnection() defer store.Close() - _, err = store.GetMaster().ExecNoTimeout(`SELECT SLEEP(3)`) + _, err = store.GetMasterX().ExecNoTimeout(`SELECT SLEEP(3)`) require.NoError(t, err) } diff --git a/store/sqlstore/upgrade.go b/store/sqlstore/upgrade.go index fc3b9dc531..084d3ce61b 100644 --- a/store/sqlstore/upgrade.go +++ b/store/sqlstore/upgrade.go @@ -323,10 +323,10 @@ func upgradeDatabaseToVersion34(sqlStore *SqlStore) { func upgradeDatabaseToVersion35(sqlStore *SqlStore) { if shouldPerformUpgrade(sqlStore, Version340, Version350) { - sqlStore.GetMaster().Exec("UPDATE TeamMembers SET Roles = 'team_user' WHERE Roles = ''") - sqlStore.GetMaster().Exec("UPDATE TeamMembers SET Roles = 'team_user team_admin' WHERE Roles = 'admin'") - sqlStore.GetMaster().Exec("UPDATE ChannelMembers SET Roles = 'channel_user' WHERE Roles = ''") - sqlStore.GetMaster().Exec("UPDATE ChannelMembers SET Roles = 'channel_user channel_admin' WHERE Roles = 'admin'") + sqlStore.GetMasterX().Exec("UPDATE TeamMembers SET Roles = 'team_user' WHERE Roles = ''") + sqlStore.GetMasterX().Exec("UPDATE TeamMembers SET Roles = 'team_user team_admin' WHERE Roles = 'admin'") + sqlStore.GetMasterX().Exec("UPDATE ChannelMembers SET Roles = 'channel_user' WHERE Roles = ''") + sqlStore.GetMasterX().Exec("UPDATE ChannelMembers SET Roles = 'channel_user channel_admin' WHERE Roles = 'admin'") // The rest of the migration from Filenames -> FileIds is done lazily in api.GetFileInfosForPost sqlStore.CreateColumnIfNotExists("Posts", "FileIds", "varchar(150)", "varchar(150)", "[]") diff --git a/store/storetest/bot_store.go b/store/storetest/bot_store.go index 4ab20bfa29..1521573ca9 100644 --- a/store/storetest/bot_store.go +++ b/store/storetest/bot_store.go @@ -74,7 +74,7 @@ func testBotStoreGet(t *testing.T, ss store.Store, s SqlStore) { defer func() { require.NoError(t, ss.User().PermanentDelete(b2.UserId)) }() // Artificially set b2.LastIconUpdate to NULL to verify handling of same. - _, sqlErr := s.GetMaster().Exec("UPDATE Bots SET LastIconUpdate = NULL WHERE UserId = '" + b2.UserId + "'") + _, sqlErr := s.GetMasterX().Exec("UPDATE Bots SET LastIconUpdate = NULL WHERE UserId = '" + b2.UserId + "'") require.NoError(t, sqlErr) t.Run("get non-existent bot", func(t *testing.T) { @@ -162,7 +162,7 @@ func testBotStoreGetAll(t *testing.T, ss store.Store, s SqlStore) { defer func() { require.NoError(t, ss.User().PermanentDelete(b2.UserId)) }() // Artificially set b2.LastIconUpdate to NULL to verify handling of same. - _, sqlErr := s.GetMaster().Exec("UPDATE Bots SET LastIconUpdate = NULL WHERE UserId = '" + b2.UserId + "'") + _, sqlErr := s.GetMasterX().Exec("UPDATE Bots SET LastIconUpdate = NULL WHERE UserId = '" + b2.UserId + "'") require.NoError(t, sqlErr) t.Run("get original bots", func(t *testing.T) { diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 7acf48edda..858d81c96c 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -5,6 +5,7 @@ package storetest import ( "context" + "database/sql" "encoding/json" "errors" "sort" @@ -13,7 +14,7 @@ import ( "testing" "time" - "github.com/mattermost/gorp" + "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -24,10 +25,21 @@ import ( ) type SqlStore interface { - GetMaster() *gorp.DbMap + GetMasterX() SqlXExecutor DriverName() string } +type SqlXExecutor interface { + Get(dest interface{}, query string, args ...interface{}) error + NamedExec(query string, arg interface{}) (sql.Result, error) + Exec(query string, args ...interface{}) (sql.Result, error) + ExecRaw(query string, args ...interface{}) (sql.Result, error) + NamedQuery(query string, arg interface{}) (*sqlx.Rows, error) + QueryRowX(query string, args ...interface{}) *sqlx.Row + QueryX(query string, args ...interface{}) (*sqlx.Rows, error) + Select(dest interface{}, query string, args ...interface{}) error +} + func cleanupChannels(t *testing.T, ss store.Store) { list, err := ss.Channel().GetAllChannels(0, 100000, store.ChannelSearchOpts{IncludeDeleted: true}) require.NoError(t, err, "error cleaning all channels", err) @@ -267,7 +279,7 @@ func testChannelStoreSaveDirectChannel(t *testing.T, ss store.Store, s SqlStore) require.Len(t, members, 1, "should have saved just 1 member") // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreCreateDirectChannel(t *testing.T, ss store.Store) { @@ -461,7 +473,7 @@ func testChannelStoreGet(t *testing.T, ss store.Store, s SqlStore) { require.True(t, errors.As(err, &nfErr)) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreGetChannelsByIds(t *testing.T, ss store.Store) { @@ -3818,7 +3830,7 @@ func testChannelStoreGetAllChannels(t *testing.T, ss store.Store, s SqlStore) { assert.Equal(t, *list[0].PolicyID, policy.ID) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { @@ -5544,8 +5556,8 @@ func testChannelStoreSearchArchivedInTeam(t *testing.T, ss store.Store, s SqlSto t.Run("error", func(t *testing.T) { // trigger a SQL error - s.GetMaster().Exec("ALTER TABLE Channels RENAME TO Channels_renamed") - defer s.GetMaster().Exec("ALTER TABLE Channels_renamed RENAME TO Channels") + s.GetMasterX().Exec("ALTER TABLE Channels RENAME TO Channels_renamed") + defer s.GetMasterX().Exec("ALTER TABLE Channels_renamed RENAME TO Channels") list, err := ss.Channel().SearchArchivedInTeam(teamId, "term", userId) require.Error(t, err) @@ -7145,45 +7157,45 @@ func testMaterializedPublicChannels(t *testing.T, ss store.Store, s SqlStore) { Type: model.ChannelTypeOpen, } - _, execerr := s.GetMaster().ExecNoTimeout(` + _, execerr := s.GetMasterX().NamedExec(` INSERT INTO PublicChannels(Id, DeleteAt, TeamId, DisplayName, Name, Header, Purpose) VALUES - (:Id, :DeleteAt, :TeamId, :DisplayName, :Name, :Header, :Purpose); + (:id, :deleteat, :teamid, :displayname, :name, :header, :purpose); `, map[string]interface{}{ - "Id": o3.Id, - "DeleteAt": o3.DeleteAt, - "TeamId": o3.TeamId, - "DisplayName": o3.DisplayName, - "Name": o3.Name, - "Header": o3.Header, - "Purpose": o3.Purpose, + "id": o3.Id, + "deleteat": o3.DeleteAt, + "teamid": o3.TeamId, + "displayname": o3.DisplayName, + "name": o3.Name, + "header": o3.Header, + "purpose": o3.Purpose, }) require.NoError(t, execerr) o3.DisplayName = "Open Channel 3 - Modified" - _, execerr = s.GetMaster().ExecNoTimeout(` + _, execerr = s.GetMasterX().NamedExec(` INSERT INTO Channels(Id, CreateAt, UpdateAt, DeleteAt, TeamId, Type, DisplayName, Name, Header, Purpose, LastPostAt, LastRootPostAt, TotalMsgCount, ExtraUpdateAt, CreatorId, TotalMsgCountRoot) VALUES - (:Id, :CreateAt, :UpdateAt, :DeleteAt, :TeamId, :Type, :DisplayName, :Name, :Header, :Purpose, :LastPostAt, :LastRootPostAt, :TotalMsgCount, :ExtraUpdateAt, :CreatorId, 0); + (:id, :createat, :updateat, :deleteat, :teamid, :type, :displayname, :name, :header, :purpose, :lastpostat, :lastrootpostat, :totalmsgcount, :extraupdateat, :creatorid, 0); `, map[string]interface{}{ - "Id": o3.Id, - "CreateAt": o3.CreateAt, - "UpdateAt": o3.UpdateAt, - "DeleteAt": o3.DeleteAt, - "TeamId": o3.TeamId, - "Type": o3.Type, - "DisplayName": o3.DisplayName, - "Name": o3.Name, - "Header": o3.Header, - "Purpose": o3.Purpose, - "LastPostAt": o3.LastPostAt, - "LastRootPostAt": o3.LastRootPostAt, - "TotalMsgCount": o3.TotalMsgCount, - "ExtraUpdateAt": o3.ExtraUpdateAt, - "CreatorId": o3.CreatorId, + "id": o3.Id, + "createat": o3.CreateAt, + "updateat": o3.UpdateAt, + "deleteat": o3.DeleteAt, + "teamid": o3.TeamId, + "type": o3.Type, + "displayname": o3.DisplayName, + "name": o3.Name, + "header": o3.Header, + "purpose": o3.Purpose, + "lastpostat": o3.LastPostAt, + "lastrootpostat": o3.LastRootPostAt, + "totalmsgcount": o3.TotalMsgCount, + "extraupdateat": o3.ExtraUpdateAt, + "creatorid": o3.CreatorId, }) require.NoError(t, execerr) @@ -7204,14 +7216,12 @@ func testMaterializedPublicChannels(t *testing.T, ss store.Store, s SqlStore) { _, nErr = ss.Channel().Save(&o4, -1) require.NoError(t, nErr) - _, execerr = s.GetMaster().ExecNoTimeout(` + _, execerr = s.GetMasterX().Exec(` DELETE FROM PublicChannels WHERE - Id = :Id - `, map[string]interface{}{ - "Id": o4.Id, - }) + Id = ? + `, o4.Id) require.NoError(t, execerr) o4.DisplayName += " - Modified" @@ -7393,7 +7403,7 @@ func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, ss store.Store, s assert.Equal(t, u3.Id, d2[0].UserId) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreExportAllDirectChannels(t *testing.T, ss store.Store, s SqlStore) { @@ -7450,7 +7460,7 @@ func testChannelStoreExportAllDirectChannels(t *testing.T, ss store.Store, s Sql assert.ElementsMatch(t, []string{o1.DisplayName, o2.DisplayName}, []string{d1[0].DisplayName, d1[1].DisplayName}) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T, ss store.Store, s SqlStore) { @@ -7512,7 +7522,7 @@ func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T assert.Equal(t, o1.DisplayName, d1[0].DisplayName) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, ss store.Store, s SqlStore) { @@ -7562,7 +7572,7 @@ func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, ss stor assert.Equal(t, 0, len(d1)) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testChannelStoreGetChannelsBatchForIndexing(t *testing.T, ss store.Store) { diff --git a/store/storetest/channel_store_categories.go b/store/storetest/channel_store_categories.go index 8ae188f52d..f7ab9b84a4 100644 --- a/store/storetest/channel_store_categories.go +++ b/store/storetest/channel_store_categories.go @@ -619,13 +619,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, nErr) // Confirm that they're not in the Channels category in the DB - count, countErr := s.GetMaster().SelectInt(` + var count int64 + countErr := s.GetMasterX().Get(&count, ` SELECT COUNT(*) FROM SidebarChannels WHERE - CategoryId = :CategoryId`, map[string]interface{}{"CategoryId": channelsCategory.Id}) + CategoryId = ?`, channelsCategory.Id) require.NoError(t, countErr) assert.Equal(t, int64(0), count) @@ -1749,11 +1750,12 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, err) // Confirm that we start with the right number of categories and SidebarChannels entries - count, err := s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + var count int64 + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(4), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(2), count) @@ -1762,11 +1764,11 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { assert.NoError(t, err) // Confirm that all the categories and SidebarChannel entries have been deleted - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(0), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(0), count) }) @@ -1797,11 +1799,12 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, err) // Confirm that we start with the right number of categories and SidebarChannels entries - count, err := s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + var count int64 + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(4), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(2), count) @@ -1810,11 +1813,11 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { assert.NoError(t, err) // Confirm that nothing has been deleted - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(4), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(2), count) }) @@ -1870,11 +1873,12 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, err) // Confirm that we start with the right number of categories and SidebarChannels entries - count, err := s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + var count int64 + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(8), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) require.Equal(t, int64(4), count) @@ -1883,11 +1887,11 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { assert.NoError(t, err) // Confirm that we have the correct number of categories and SidebarChannels entries left over - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarCategories WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarCategories WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(4), count) - count, err = s.GetMaster().SelectInt("SELECT COUNT(*) FROM SidebarChannels WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}) + err = s.GetMasterX().Get(&count, "SELECT COUNT(*) FROM SidebarChannels WHERE UserId = ?", userId) require.NoError(t, err) assert.Equal(t, int64(2), count) @@ -1980,13 +1984,14 @@ func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { assert.Len(t, res.Categories, 3) // ...and that the corresponding SidebarChannel entries were deleted - count, countErr := s.GetMaster().SelectInt(` + var count int64 + countErr := s.GetMasterX().Get(&count, ` SELECT COUNT(*) FROM SidebarChannels WHERE - CategoryId = :CategoryId`, map[string]interface{}{"CategoryId": newCategory.Id}) + CategoryId = ?`, newCategory.Id) require.NoError(t, countErr) assert.Equal(t, int64(0), count) }) diff --git a/store/storetest/mocks/JSONSerializable.go b/store/storetest/mocks/JSONSerializable.go deleted file mode 100644 index 4ef82ee79a..0000000000 --- a/store/storetest/mocks/JSONSerializable.go +++ /dev/null @@ -1,26 +0,0 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. - -// Regenerate this file using `make store-mocks`. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// JSONSerializable is an autogenerated mock type for the JSONSerializable type -type JSONSerializable struct { - mock.Mock -} - -// ToJSON provides a mock function with given fields: -func (_m *JSONSerializable) ToJSON() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} diff --git a/store/storetest/mocks/ObjectCache.go b/store/storetest/mocks/ObjectCache.go deleted file mode 100644 index 4eeb2fe4d0..0000000000 --- a/store/storetest/mocks/ObjectCache.go +++ /dev/null @@ -1,99 +0,0 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. - -// Regenerate this file using `make store-mocks`. - -package mocks - -import ( - mock "github.com/stretchr/testify/mock" -) - -// ObjectCache is an autogenerated mock type for the ObjectCache type -type ObjectCache struct { - mock.Mock -} - -// AddWithDefaultExpires provides a mock function with given fields: key, value -func (_m *ObjectCache) AddWithDefaultExpires(key interface{}, value interface{}) { - _m.Called(key, value) -} - -// AddWithExpiresInSecs provides a mock function with given fields: key, value, expireAtSecs -func (_m *ObjectCache) AddWithExpiresInSecs(key interface{}, value interface{}, expireAtSecs int64) { - _m.Called(key, value, expireAtSecs) -} - -// Get provides a mock function with given fields: key -func (_m *ObjectCache) Get(key interface{}) (interface{}, bool) { - ret := _m.Called(key) - - var r0 interface{} - if rf, ok := ret.Get(0).(func(interface{}) interface{}); ok { - r0 = rf(key) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(interface{}) - } - } - - var r1 bool - if rf, ok := ret.Get(1).(func(interface{}) bool); ok { - r1 = rf(key) - } else { - r1 = ret.Get(1).(bool) - } - - return r0, r1 -} - -// GetInvalidateClusterEvent provides a mock function with given fields: -func (_m *ObjectCache) GetInvalidateClusterEvent() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// Len provides a mock function with given fields: -func (_m *ObjectCache) Len() int { - ret := _m.Called() - - var r0 int - if rf, ok := ret.Get(0).(func() int); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(int) - } - - return r0 -} - -// Name provides a mock function with given fields: -func (_m *ObjectCache) Name() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// Purge provides a mock function with given fields: -func (_m *ObjectCache) Purge() { - _m.Called() -} - -// Remove provides a mock function with given fields: key -func (_m *ObjectCache) Remove(key interface{}) { - _m.Called(key) -} diff --git a/store/storetest/mocks/SqlStore.go b/store/storetest/mocks/SqlStore.go deleted file mode 100644 index 90add3da28..0000000000 --- a/store/storetest/mocks/SqlStore.go +++ /dev/null @@ -1,45 +0,0 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. - -// Regenerate this file using `make store-mocks`. - -package mocks - -import ( - gorp "github.com/mattermost/gorp" - mock "github.com/stretchr/testify/mock" -) - -// SqlStore is an autogenerated mock type for the SqlStore type -type SqlStore struct { - mock.Mock -} - -// DriverName provides a mock function with given fields: -func (_m *SqlStore) DriverName() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// GetMaster provides a mock function with given fields: -func (_m *SqlStore) GetMaster() *gorp.DbMap { - ret := _m.Called() - - var r0 *gorp.DbMap - if rf, ok := ret.Get(0).(func() *gorp.DbMap); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*gorp.DbMap) - } - } - - return r0 -} diff --git a/store/storetest/mocks/dbSelecter.go b/store/storetest/mocks/dbSelecter.go deleted file mode 100644 index 52283f4414..0000000000 --- a/store/storetest/mocks/dbSelecter.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. - -// Regenerate this file using `make store-mocks`. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// dbSelecter is an autogenerated mock type for the dbSelecter type -type dbSelecter struct { - mock.Mock -} - -// Select provides a mock function with given fields: i, query, args -func (_m *dbSelecter) Select(i interface{}, query string, args ...interface{}) error { - var _ca []interface{} - _ca = append(_ca, i, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 error - if rf, ok := ret.Get(0).(func(interface{}, string, ...interface{}) error); ok { - r0 = rf(i, query, args...) - } else { - r0 = ret.Error(0) - } - - return r0 -} diff --git a/store/storetest/mocks/sqlxExecutor.go b/store/storetest/mocks/sqlxExecutor.go deleted file mode 100644 index a2c9620d11..0000000000 --- a/store/storetest/mocks/sqlxExecutor.go +++ /dev/null @@ -1,195 +0,0 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. - -// Regenerate this file using `make store-mocks`. - -package mocks - -import ( - sql "database/sql" - - mock "github.com/stretchr/testify/mock" - - sqlx "github.com/jmoiron/sqlx" -) - -// sqlxExecutor is an autogenerated mock type for the sqlxExecutor type -type sqlxExecutor struct { - mock.Mock -} - -// Exec provides a mock function with given fields: query, args -func (_m *sqlxExecutor) Exec(query string, args ...interface{}) (sql.Result, error) { - var _ca []interface{} - _ca = append(_ca, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 sql.Result - if rf, ok := ret.Get(0).(func(string, ...interface{}) sql.Result); ok { - r0 = rf(query, args...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(sql.Result) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, ...interface{}) error); ok { - r1 = rf(query, args...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ExecRaw provides a mock function with given fields: query, args -func (_m *sqlxExecutor) ExecRaw(query string, args ...interface{}) (sql.Result, error) { - var _ca []interface{} - _ca = append(_ca, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 sql.Result - if rf, ok := ret.Get(0).(func(string, ...interface{}) sql.Result); ok { - r0 = rf(query, args...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(sql.Result) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, ...interface{}) error); ok { - r1 = rf(query, args...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: dest, query, args -func (_m *sqlxExecutor) Get(dest interface{}, query string, args ...interface{}) error { - var _ca []interface{} - _ca = append(_ca, dest, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 error - if rf, ok := ret.Get(0).(func(interface{}, string, ...interface{}) error); ok { - r0 = rf(dest, query, args...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// NamedExec provides a mock function with given fields: query, arg -func (_m *sqlxExecutor) NamedExec(query string, arg interface{}) (sql.Result, error) { - ret := _m.Called(query, arg) - - var r0 sql.Result - if rf, ok := ret.Get(0).(func(string, interface{}) sql.Result); ok { - r0 = rf(query, arg) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(sql.Result) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, interface{}) error); ok { - r1 = rf(query, arg) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NamedQuery provides a mock function with given fields: query, arg -func (_m *sqlxExecutor) NamedQuery(query string, arg interface{}) (*sqlx.Rows, error) { - ret := _m.Called(query, arg) - - var r0 *sqlx.Rows - if rf, ok := ret.Get(0).(func(string, interface{}) *sqlx.Rows); ok { - r0 = rf(query, arg) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*sqlx.Rows) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, interface{}) error); ok { - r1 = rf(query, arg) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// QueryRowX provides a mock function with given fields: query, args -func (_m *sqlxExecutor) QueryRowX(query string, args ...interface{}) *sqlx.Row { - var _ca []interface{} - _ca = append(_ca, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 *sqlx.Row - if rf, ok := ret.Get(0).(func(string, ...interface{}) *sqlx.Row); ok { - r0 = rf(query, args...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*sqlx.Row) - } - } - - return r0 -} - -// QueryX provides a mock function with given fields: query, args -func (_m *sqlxExecutor) QueryX(query string, args ...interface{}) (*sqlx.Rows, error) { - var _ca []interface{} - _ca = append(_ca, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 *sqlx.Rows - if rf, ok := ret.Get(0).(func(string, ...interface{}) *sqlx.Rows); ok { - r0 = rf(query, args...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*sqlx.Rows) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, ...interface{}) error); ok { - r1 = rf(query, args...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Select provides a mock function with given fields: dest, query, args -func (_m *sqlxExecutor) Select(dest interface{}, query string, args ...interface{}) error { - var _ca []interface{} - _ca = append(_ca, dest, query) - _ca = append(_ca, args...) - ret := _m.Called(_ca...) - - var r0 error - if rf, ok := ret.Get(0).(func(interface{}, string, ...interface{}) error); ok { - r0 = rf(dest, query, args...) - } else { - r0 = ret.Error(0) - } - - return r0 -} diff --git a/store/storetest/post_store.go b/store/storetest/post_store.go index 596606dd25..98bc053bb6 100644 --- a/store/storetest/post_store.go +++ b/store/storetest/post_store.go @@ -2217,7 +2217,7 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlStor require.Len(t, r4.Order, 3, "should have 3 posts") // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) { @@ -3268,7 +3268,7 @@ func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Stor assert.Equal(t, p1.Message, r1[0].Message) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss store.Store, s SqlStore) { @@ -3334,7 +3334,7 @@ func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss sto assert.Equal(t, 0, len(r1)) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss store.Store, s SqlStore) { @@ -3410,7 +3410,7 @@ func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss sto assert.ElementsMatch(t, postIds[:100], exportedPostIds) // Manually truncate Channels table until testlib can handle cleanups - s.GetMaster().Exec("TRUNCATE Channels") + s.GetMasterX().Exec("TRUNCATE Channels") } func testHasAutoResponsePostByUserSince(t *testing.T, ss store.Store) { @@ -3539,8 +3539,7 @@ func testGetPostsSinceForSync(t *testing.T, ss store.Store, s SqlStore) { t.Run("UpdateAt collisions", func(t *testing.T) { // this test requires all the UpdateAt timestamps to be the same. - args := map[string]interface{}{"UpdateAt": model.GetMillis()} - result, err := s.GetMaster().Exec("UPDATE Posts SET UpdateAt = :UpdateAt", args) + result, err := s.GetMasterX().Exec("UPDATE Posts SET UpdateAt = ?", model.GetMillis()) require.NoError(t, err) rows, err := result.RowsAffected() require.NoError(t, err) diff --git a/store/storetest/reaction_store.go b/store/storetest/reaction_store.go index 026267acab..f9946521eb 100644 --- a/store/storetest/reaction_store.go +++ b/store/storetest/reaction_store.go @@ -384,21 +384,21 @@ func testReactionGetForPostSince(t *testing.T, ss store.Store, s SqlStore) { func forceUpdateAt(reaction *model.Reaction, updateAt int64, s SqlStore) error { params := map[string]interface{}{ - "UserId": reaction.UserId, - "PostId": reaction.PostId, - "EmojiName": reaction.EmojiName, - "UpdateAt": updateAt, + "userid": reaction.UserId, + "postid": reaction.PostId, + "emojiname": reaction.EmojiName, + "updateat": updateAt, } - sqlResult, err := s.GetMaster().Exec(` + sqlResult, err := s.GetMasterX().NamedExec(` UPDATE Reactions SET - UpdateAt=:UpdateAt + UpdateAt=:updateat WHERE - UserId = :UserId AND - PostId = :PostId AND - EmojiName = :EmojiName`, params, + UserId = :userid AND + PostId = :postid AND + EmojiName = :emojiname`, params, ) if err != nil { @@ -417,10 +417,10 @@ func forceUpdateAt(reaction *model.Reaction, updateAt int64, s SqlStore) error { } func forceNULL(reaction *model.Reaction, s SqlStore) error { - if _, err := s.GetMaster().Exec(`UPDATE Reactions SET UpdateAt = NULL WHERE UpdateAt = 0`); err != nil { + if _, err := s.GetMasterX().Exec(`UPDATE Reactions SET UpdateAt = NULL WHERE UpdateAt = 0`); err != nil { return err } - if _, err := s.GetMaster().Exec(`UPDATE Reactions SET DeleteAt = NULL WHERE DeleteAt = 0`); err != nil { + if _, err := s.GetMasterX().Exec(`UPDATE Reactions SET DeleteAt = NULL WHERE DeleteAt = 0`); err != nil { return err } return nil diff --git a/store/storetest/retention_policy_store.go b/store/storetest/retention_policy_store.go index d46f5df785..fbdd1e21ee 100644 --- a/store/storetest/retention_policy_store.go +++ b/store/storetest/retention_policy_store.go @@ -153,7 +153,7 @@ func cleanupRetentionPolicyTest(s SqlStore) { // Manually clear tables until testlib can handle cleanups tables := []string{"RetentionPolicies", "RetentionPoliciesChannels", "RetentionPoliciesTeams"} for _, table := range tables { - if _, err := s.GetMaster().Exec("DELETE FROM " + table); err != nil { + if _, err := s.GetMasterX().Exec("DELETE FROM " + table); err != nil { panic(err) } } diff --git a/store/storetest/role_store.go b/store/storetest/role_store.go index 4213903c76..b86e258d07 100644 --- a/store/storetest/role_store.go +++ b/store/storetest/role_store.go @@ -578,7 +578,7 @@ func testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t *t require.NoError(t, err) // blank-out the guest role to simulate an old team scheme, ensure it's blank - result, sqlErr := s.GetMaster().Exec(fmt.Sprintf("UPDATE Schemes SET DefaultChannelGuestRole = '' WHERE Id = '%s'", teamScheme.Id)) + result, sqlErr := s.GetMasterX().Exec(fmt.Sprintf("UPDATE Schemes SET DefaultChannelGuestRole = '' WHERE Id = '%s'", teamScheme.Id)) require.NoError(t, sqlErr) rows, serr := result.RowsAffected() require.NoError(t, serr) diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index 28960a7ffe..825fe26219 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -23,7 +23,7 @@ const ( ) func cleanupStatusStore(t *testing.T, s SqlStore) { - _, execerr := s.GetMaster().ExecNoTimeout(` DELETE FROM Status `) + _, execerr := s.GetMasterX().Exec(`DELETE FROM Status`) require.NoError(t, execerr) }