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
```
Этот коммит содержится в:
Agniva De Sarker
2022-02-16 22:30:27 +05:30
коммит произвёл GitHub
родитель 256427f7f9
Коммит 678c7d3b8c
26 изменённых файлов: 178 добавлений и 518 удалений

Просмотреть файл

@@ -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

Просмотреть файл

@@ -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)
}()

Просмотреть файл

@@ -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")
})
}
}

Просмотреть файл

@@ -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)
}
}

Просмотреть файл

@@ -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()
}

Просмотреть файл

@@ -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)

Просмотреть файл

@@ -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))

Просмотреть файл

@@ -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))
})
}
}

Просмотреть файл

@@ -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
}

Просмотреть файл

@@ -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) {

Просмотреть файл

@@ -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))
}

Просмотреть файл

@@ -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)
}

Просмотреть файл

@@ -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)", "[]")

Просмотреть файл

@@ -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) {

Просмотреть файл

@@ -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) {

Просмотреть файл

@@ -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)
})

Просмотреть файл

@@ -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
}

Просмотреть файл

@@ -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)
}

Просмотреть файл

@@ -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
}

Просмотреть файл

@@ -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
}

Просмотреть файл

@@ -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
}

Просмотреть файл

@@ -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)

Просмотреть файл

@@ -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

Просмотреть файл

@@ -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)
}
}

Просмотреть файл

@@ -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)

Просмотреть файл

@@ -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)
}