Merge branch 'master' into mark-as-unread
Этот коммит содержится в:
@@ -1036,7 +1036,7 @@ func (s SqlChannelStore) GetPublicChannelsForTeam(teamId string, offset int, lim
|
||||
PublicChannels pc ON (pc.Id = Channels.Id)
|
||||
WHERE
|
||||
pc.TeamId = :TeamId
|
||||
AND pc.DeleteAt = 0
|
||||
AND pc.DeleteAt = 0
|
||||
ORDER BY pc.DisplayName
|
||||
LIMIT :Limit
|
||||
OFFSET :Offset
|
||||
@@ -1242,10 +1242,24 @@ func (s SqlChannelStore) GetDeletedByName(teamId string, name string) (*model.Ch
|
||||
return &channel, nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
|
||||
func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) {
|
||||
channels := &model.ChannelList{}
|
||||
|
||||
if _, err := s.GetReplica().Select(channels, "SELECT * FROM Channels WHERE (TeamId = :TeamId OR TeamId = '') AND DeleteAt != 0 ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"TeamId": teamId, "Limit": limit, "Offset": offset}); err != nil {
|
||||
query := `
|
||||
SELECT * FROM Channels
|
||||
WHERE (TeamId = :TeamId OR TeamId = '')
|
||||
AND DeleteAt != 0
|
||||
AND Type != 'P'
|
||||
UNION
|
||||
SELECT * FROM Channels
|
||||
WHERE (TeamId = :TeamId OR TeamId = '')
|
||||
AND DeleteAt != 0
|
||||
AND Type = 'P'
|
||||
AND Id IN (SELECT ChannelId FROM ChannelMembers WHERE UserId = :UserId)
|
||||
ORDER BY DisplayName LIMIT :Limit OFFSET :Offset
|
||||
`
|
||||
|
||||
if _, err := s.GetReplica().Select(channels, query, map[string]interface{}{"TeamId": teamId, "Limit": limit, "Offset": offset, "UserId": userId}); err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, model.NewAppError("SqlChannelStore.GetDeleted", "store.sql_channel.get_deleted.missing.app_error", nil, "teamId="+teamId+", "+err.Error(), http.StatusNotFound)
|
||||
}
|
||||
@@ -2245,6 +2259,57 @@ func (s SqlChannelStore) SearchInTeam(teamId string, term string, includeDeleted
|
||||
})
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) SearchArchivedInTeam(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) {
|
||||
publicChannels, publicErr := s.performSearch(`
|
||||
SELECT
|
||||
Channels.*
|
||||
FROM
|
||||
Channels
|
||||
JOIN
|
||||
Channels c ON (c.Id = Channels.Id)
|
||||
WHERE
|
||||
c.TeamId = :TeamId
|
||||
SEARCH_CLAUSE
|
||||
AND c.DeleteAt != 0
|
||||
AND c.Type != 'P'
|
||||
ORDER BY c.DisplayName
|
||||
LIMIT 100
|
||||
`, term, map[string]interface{}{
|
||||
"TeamId": teamId,
|
||||
"UserId": userId,
|
||||
})
|
||||
|
||||
privateChannels, privateErr := s.performSearch(`
|
||||
SELECT
|
||||
Channels.*
|
||||
FROM
|
||||
Channels
|
||||
JOIN
|
||||
Channels c ON (c.Id = Channels.Id)
|
||||
WHERE
|
||||
c.TeamId = :TeamId
|
||||
SEARCH_CLAUSE
|
||||
AND c.DeleteAt != 0
|
||||
AND c.Type = 'P'
|
||||
AND c.Id IN (SELECT ChannelId FROM ChannelMembers WHERE UserId = :UserId)
|
||||
ORDER BY c.DisplayName
|
||||
LIMIT 100
|
||||
`, term, map[string]interface{}{
|
||||
"TeamId": teamId,
|
||||
"UserId": userId,
|
||||
})
|
||||
|
||||
output := *publicChannels
|
||||
output = append(output, *privateChannels...)
|
||||
|
||||
outputErr := publicErr
|
||||
if privateErr != nil {
|
||||
outputErr = privateErr
|
||||
}
|
||||
|
||||
return &output, outputErr
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) SearchForUserInTeam(userId string, teamId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) {
|
||||
deleteFilter := "AND c.DeleteAt = 0"
|
||||
if includeDeleted {
|
||||
|
||||
@@ -162,7 +162,7 @@ func NewSqlSupplier(settings model.SqlSettings, metrics einterfaces.MetricsInter
|
||||
os.Exit(EXIT_CREATE_TABLE)
|
||||
}
|
||||
|
||||
err = UpgradeDatabase(supplier, model.CurrentVersion)
|
||||
err = upgradeDatabase(supplier, model.CurrentVersion)
|
||||
if err != nil {
|
||||
mlog.Critical("Failed to upgrade database.", mlog.Err(err))
|
||||
time.Sleep(time.Second)
|
||||
|
||||
@@ -70,10 +70,10 @@ const (
|
||||
EXIT_TEAM_INVITEID_MIGRATION_FAILED = 1006
|
||||
)
|
||||
|
||||
// UpgradeDatabase attempts to migrate the schema to the latest supported version.
|
||||
// upgradeDatabase attempts to migrate the schema to the latest supported version.
|
||||
// The value of model.CurrentVersion is accepted as a parameter for unit testing, but it is not
|
||||
// used to stop migrations at that version.
|
||||
func UpgradeDatabase(sqlStore SqlStore, currentModelVersionString string) error {
|
||||
func upgradeDatabase(sqlStore SqlStore, currentModelVersionString string) error {
|
||||
currentModelVersion, err := semver.Parse(currentModelVersionString)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to parse current model version %s", currentModelVersionString)
|
||||
@@ -122,47 +122,47 @@ func UpgradeDatabase(sqlStore SqlStore, currentModelVersionString string) error
|
||||
|
||||
// Otherwise, apply any necessary migrations. Note that these methods currently invoke
|
||||
// os.Exit instead of returning an error.
|
||||
UpgradeDatabaseToVersion31(sqlStore)
|
||||
UpgradeDatabaseToVersion32(sqlStore)
|
||||
UpgradeDatabaseToVersion33(sqlStore)
|
||||
UpgradeDatabaseToVersion34(sqlStore)
|
||||
UpgradeDatabaseToVersion35(sqlStore)
|
||||
UpgradeDatabaseToVersion36(sqlStore)
|
||||
UpgradeDatabaseToVersion37(sqlStore)
|
||||
UpgradeDatabaseToVersion38(sqlStore)
|
||||
UpgradeDatabaseToVersion39(sqlStore)
|
||||
UpgradeDatabaseToVersion310(sqlStore)
|
||||
UpgradeDatabaseToVersion40(sqlStore)
|
||||
UpgradeDatabaseToVersion41(sqlStore)
|
||||
UpgradeDatabaseToVersion42(sqlStore)
|
||||
UpgradeDatabaseToVersion43(sqlStore)
|
||||
UpgradeDatabaseToVersion44(sqlStore)
|
||||
UpgradeDatabaseToVersion45(sqlStore)
|
||||
UpgradeDatabaseToVersion46(sqlStore)
|
||||
UpgradeDatabaseToVersion47(sqlStore)
|
||||
UpgradeDatabaseToVersion471(sqlStore)
|
||||
UpgradeDatabaseToVersion472(sqlStore)
|
||||
UpgradeDatabaseToVersion48(sqlStore)
|
||||
UpgradeDatabaseToVersion481(sqlStore)
|
||||
UpgradeDatabaseToVersion49(sqlStore)
|
||||
UpgradeDatabaseToVersion410(sqlStore)
|
||||
UpgradeDatabaseToVersion50(sqlStore)
|
||||
UpgradeDatabaseToVersion51(sqlStore)
|
||||
UpgradeDatabaseToVersion52(sqlStore)
|
||||
UpgradeDatabaseToVersion53(sqlStore)
|
||||
UpgradeDatabaseToVersion54(sqlStore)
|
||||
UpgradeDatabaseToVersion55(sqlStore)
|
||||
UpgradeDatabaseToVersion56(sqlStore)
|
||||
UpgradeDatabaseToVersion57(sqlStore)
|
||||
UpgradeDatabaseToVersion58(sqlStore)
|
||||
UpgradeDatabaseToVersion59(sqlStore)
|
||||
UpgradeDatabaseToVersion510(sqlStore)
|
||||
UpgradeDatabaseToVersion511(sqlStore)
|
||||
UpgradeDatabaseToVersion512(sqlStore)
|
||||
UpgradeDatabaseToVersion513(sqlStore)
|
||||
UpgradeDatabaseToVersion514(sqlStore)
|
||||
UpgradeDatabaseToVersion515(sqlStore)
|
||||
UpgradeDatabaseToVersion516(sqlStore)
|
||||
upgradeDatabaseToVersion31(sqlStore)
|
||||
upgradeDatabaseToVersion32(sqlStore)
|
||||
upgradeDatabaseToVersion33(sqlStore)
|
||||
upgradeDatabaseToVersion34(sqlStore)
|
||||
upgradeDatabaseToVersion35(sqlStore)
|
||||
upgradeDatabaseToVersion36(sqlStore)
|
||||
upgradeDatabaseToVersion37(sqlStore)
|
||||
upgradeDatabaseToVersion38(sqlStore)
|
||||
upgradeDatabaseToVersion39(sqlStore)
|
||||
upgradeDatabaseToVersion310(sqlStore)
|
||||
upgradeDatabaseToVersion40(sqlStore)
|
||||
upgradeDatabaseToVersion41(sqlStore)
|
||||
upgradeDatabaseToVersion42(sqlStore)
|
||||
upgradeDatabaseToVersion43(sqlStore)
|
||||
upgradeDatabaseToVersion44(sqlStore)
|
||||
upgradeDatabaseToVersion45(sqlStore)
|
||||
upgradeDatabaseToVersion46(sqlStore)
|
||||
upgradeDatabaseToVersion47(sqlStore)
|
||||
upgradeDatabaseToVersion471(sqlStore)
|
||||
upgradeDatabaseToVersion472(sqlStore)
|
||||
upgradeDatabaseToVersion48(sqlStore)
|
||||
upgradeDatabaseToVersion481(sqlStore)
|
||||
upgradeDatabaseToVersion49(sqlStore)
|
||||
upgradeDatabaseToVersion410(sqlStore)
|
||||
upgradeDatabaseToVersion50(sqlStore)
|
||||
upgradeDatabaseToVersion51(sqlStore)
|
||||
upgradeDatabaseToVersion52(sqlStore)
|
||||
upgradeDatabaseToVersion53(sqlStore)
|
||||
upgradeDatabaseToVersion54(sqlStore)
|
||||
upgradeDatabaseToVersion55(sqlStore)
|
||||
upgradeDatabaseToVersion56(sqlStore)
|
||||
upgradeDatabaseToVersion57(sqlStore)
|
||||
upgradeDatabaseToVersion58(sqlStore)
|
||||
upgradeDatabaseToVersion59(sqlStore)
|
||||
upgradeDatabaseToVersion510(sqlStore)
|
||||
upgradeDatabaseToVersion511(sqlStore)
|
||||
upgradeDatabaseToVersion512(sqlStore)
|
||||
upgradeDatabaseToVersion513(sqlStore)
|
||||
upgradeDatabaseToVersion514(sqlStore)
|
||||
upgradeDatabaseToVersion515(sqlStore)
|
||||
upgradeDatabaseToVersion516(sqlStore)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -187,14 +187,14 @@ func shouldPerformUpgrade(sqlStore SqlStore, currentSchemaVersion string, expect
|
||||
return false
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion31(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion31(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_0_0, VERSION_3_1_0) {
|
||||
sqlStore.CreateColumnIfNotExists("OutgoingWebhooks", "ContentType", "varchar(128)", "varchar(128)", "")
|
||||
saveSchemaVersion(sqlStore, VERSION_3_1_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion32(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion32(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_1_0, VERSION_3_2_0) {
|
||||
sqlStore.CreateColumnIfNotExists("TeamMembers", "DeleteAt", "bigint(20)", "bigint", "0")
|
||||
|
||||
@@ -208,7 +208,7 @@ func themeMigrationFailed(err error) {
|
||||
os.Exit(EXIT_THEME_MIGRATION)
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion33(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion33(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_2_0, VERSION_3_3_0) {
|
||||
if sqlStore.DoesColumnExist("Users", "ThemeProps") {
|
||||
params := map[string]interface{}{
|
||||
@@ -291,7 +291,7 @@ func UpgradeDatabaseToVersion33(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion34(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion34(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_3_0, VERSION_3_4_0) {
|
||||
sqlStore.CreateColumnIfNotExists("Status", "Manual", "BOOLEAN", "BOOLEAN", "0")
|
||||
sqlStore.CreateColumnIfNotExists("Status", "ActiveChannel", "varchar(26)", "varchar(26)", "")
|
||||
@@ -300,7 +300,7 @@ func UpgradeDatabaseToVersion34(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion35(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion35(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_4_0, VERSION_3_5_0) {
|
||||
sqlStore.GetMaster().Exec("UPDATE Users SET Roles = 'system_user' WHERE Roles = ''")
|
||||
sqlStore.GetMaster().Exec("UPDATE Users SET Roles = 'system_user system_admin' WHERE Roles = 'system_admin'")
|
||||
@@ -323,7 +323,7 @@ func UpgradeDatabaseToVersion35(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion36(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion36(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_5_0, VERSION_3_6_0) {
|
||||
sqlStore.CreateColumnIfNotExists("Posts", "HasReactions", "tinyint", "boolean", "0")
|
||||
|
||||
@@ -340,7 +340,7 @@ func UpgradeDatabaseToVersion36(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion37(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion37(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_6_0, VERSION_3_7_0) {
|
||||
// Add EditAt column to Posts
|
||||
sqlStore.CreateColumnIfNotExists("Posts", "EditAt", " bigint", " bigint", "0")
|
||||
@@ -349,7 +349,7 @@ func UpgradeDatabaseToVersion37(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion38(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion38(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_7_0, VERSION_3_8_0) {
|
||||
// Add the IsPinned column to posts.
|
||||
sqlStore.CreateColumnIfNotExists("Posts", "IsPinned", "boolean", "boolean", "0")
|
||||
@@ -358,7 +358,7 @@ func UpgradeDatabaseToVersion38(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion39(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion39(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_8_0, VERSION_3_9_0) {
|
||||
sqlStore.CreateColumnIfNotExists("OAuthAccessData", "Scope", "varchar(128)", "varchar(128)", model.DEFAULT_SCOPE)
|
||||
sqlStore.RemoveTableIfExists("PasswordRecovery")
|
||||
@@ -367,19 +367,19 @@ func UpgradeDatabaseToVersion39(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion310(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion310(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_9_0, VERSION_3_10_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_3_10_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion40(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion40(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_3_10_0, VERSION_4_0_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_0_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion41(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion41(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_0_0, VERSION_4_1_0) {
|
||||
// Increase maximum length of the Users table Roles column.
|
||||
if sqlStore.GetMaxLengthOfColumnIfExists("Users", "Roles") != "256" {
|
||||
@@ -392,19 +392,19 @@ func UpgradeDatabaseToVersion41(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion42(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion42(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_1_0, VERSION_4_2_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_2_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion43(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion43(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_2_0, VERSION_4_3_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_3_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion44(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion44(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_3_0, VERSION_4_4_0) {
|
||||
// Add the IsActive column to UserAccessToken.
|
||||
sqlStore.CreateColumnIfNotExists("UserAccessTokens", "IsActive", "boolean", "boolean", "1")
|
||||
@@ -413,13 +413,13 @@ func UpgradeDatabaseToVersion44(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion45(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion45(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_4_0, VERSION_4_5_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_5_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion46(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion46(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_5_0, VERSION_4_6_0) {
|
||||
sqlStore.CreateColumnIfNotExists("IncomingWebhooks", "Username", "varchar(64)", "varchar(64)", "")
|
||||
sqlStore.CreateColumnIfNotExists("IncomingWebhooks", "IconURL", "varchar(1024)", "varchar(1024)", "")
|
||||
@@ -427,7 +427,7 @@ func UpgradeDatabaseToVersion46(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion47(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion47(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_6_0, VERSION_4_7_0) {
|
||||
sqlStore.AlterColumnTypeIfExists("Users", "Position", "varchar(128)", "varchar(128)")
|
||||
sqlStore.AlterColumnTypeIfExists("OAuthAuthData", "State", "varchar(1024)", "varchar(1024)")
|
||||
@@ -437,37 +437,37 @@ func UpgradeDatabaseToVersion47(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
// If any new instances started with 4.7, they would have the bad Email column on the
|
||||
// ChannelMemberHistory table. So for those cases we need to do an upgrade between
|
||||
// 4.7.0 and 4.7.1
|
||||
func UpgradeDatabaseToVersion471(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion471(sqlStore SqlStore) {
|
||||
// If any new instances started with 4.7, they would have the bad Email column on the
|
||||
// ChannelMemberHistory table. So for those cases we need to do an upgrade between
|
||||
// 4.7.0 and 4.7.1
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_7_0, VERSION_4_7_1) {
|
||||
sqlStore.RemoveColumnIfExists("ChannelMemberHistory", "Email")
|
||||
saveSchemaVersion(sqlStore, VERSION_4_7_1)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion472(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion472(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_7_1, VERSION_4_7_2) {
|
||||
sqlStore.RemoveIndexIfExists("idx_channels_displayname", "Channels")
|
||||
saveSchemaVersion(sqlStore, VERSION_4_7_2)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion48(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion48(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_7_2, VERSION_4_8_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_8_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion481(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion481(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_8_0, VERSION_4_8_1) {
|
||||
sqlStore.RemoveIndexIfExists("idx_channels_displayname", "Channels")
|
||||
saveSchemaVersion(sqlStore, VERSION_4_8_1)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion49(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion49(sqlStore SqlStore) {
|
||||
// This version of Mattermost includes an App-Layer migration which migrates from hard-coded roles configured by
|
||||
// a number of parameters in `config.json` to a `Roles` table in the database. The migration code can be seen
|
||||
// in the file `app/app.go` in the function `DoAdvancedPermissionsMigration()`.
|
||||
@@ -485,7 +485,7 @@ func UpgradeDatabaseToVersion49(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion410(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion410(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_4_9_0, VERSION_4_10_0) {
|
||||
|
||||
sqlStore.RemoveIndexIfExists("Name_2", "Channels")
|
||||
@@ -497,7 +497,7 @@ func UpgradeDatabaseToVersion410(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion50(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion50(sqlStore SqlStore) {
|
||||
// This version of Mattermost includes an App-Layer migration which migrates from hard-coded emojis configured
|
||||
// in `config.json` to a `Permission` in the database. The migration code can be seen
|
||||
// in the file `app/app.go` in the function `DoEmojisPermissionsMigration()`.
|
||||
@@ -536,13 +536,13 @@ func UpgradeDatabaseToVersion50(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion51(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion51(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_0_0, VERSION_5_1_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_1_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion52(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion52(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_1_0, VERSION_5_2_0) {
|
||||
sqlStore.CreateColumnIfNotExists("OutgoingWebhooks", "Username", "varchar(64)", "varchar(64)", "")
|
||||
sqlStore.CreateColumnIfNotExists("OutgoingWebhooks", "IconURL", "varchar(1024)", "varchar(1024)", "")
|
||||
@@ -550,13 +550,13 @@ func UpgradeDatabaseToVersion52(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion53(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion53(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_2_0, VERSION_5_3_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_3_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion54(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion54(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_3_0, VERSION_5_4_0) {
|
||||
sqlStore.AlterColumnTypeIfExists("OutgoingWebhooks", "Description", "varchar(500)", "varchar(500)")
|
||||
sqlStore.AlterColumnTypeIfExists("IncomingWebhooks", "Description", "varchar(500)", "varchar(500)")
|
||||
@@ -569,13 +569,13 @@ func UpgradeDatabaseToVersion54(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion55(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion55(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_4_0, VERSION_5_5_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_5_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion56(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion56(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_5_0, VERSION_5_6_0) {
|
||||
sqlStore.CreateColumnIfNotExists("PluginKeyValueStore", "ExpireAt", "bigint(20)", "bigint", "0")
|
||||
|
||||
@@ -595,15 +595,15 @@ func UpgradeDatabaseToVersion56(sqlStore SqlStore) {
|
||||
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion57(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion57(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_6_0, VERSION_5_7_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_7_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion58(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion58(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_7_0, VERSION_5_8_0) {
|
||||
// idx_channels_txt was removed in `UpgradeDatabaseToVersion50`, but merged as part of
|
||||
// idx_channels_txt was removed in `upgradeDatabaseToVersion50`, but merged as part of
|
||||
// v5.1, so the migration wouldn't apply to anyone upgrading from v5.0. Remove it again to
|
||||
// bring the upgraded (from v5.0) and fresh install schemas back in sync.
|
||||
sqlStore.RemoveIndexIfExists("idx_channels_txt", "Channels")
|
||||
@@ -621,13 +621,13 @@ func UpgradeDatabaseToVersion58(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion59(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion59(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_8_0, VERSION_5_9_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_9_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion510(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion510(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_9_0, VERSION_5_10_0) {
|
||||
sqlStore.CreateColumnIfNotExistsNoDefault("Channels", "GroupConstrained", "tinyint(4)", "boolean")
|
||||
sqlStore.CreateColumnIfNotExistsNoDefault("Teams", "GroupConstrained", "tinyint(4)", "boolean")
|
||||
@@ -639,7 +639,7 @@ func UpgradeDatabaseToVersion510(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion511(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion511(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_10_0, VERSION_5_11_0) {
|
||||
// Enforce all teams have an InviteID set
|
||||
var teams []*model.Team
|
||||
@@ -658,7 +658,7 @@ func UpgradeDatabaseToVersion511(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion512(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion512(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_11_0, VERSION_5_12_0) {
|
||||
sqlStore.CreateColumnIfNotExistsNoDefault("TeamMembers", "SchemeGuest", "boolean", "boolean")
|
||||
sqlStore.CreateColumnIfNotExistsNoDefault("ChannelMembers", "SchemeGuest", "boolean", "boolean")
|
||||
@@ -674,7 +674,7 @@ func UpgradeDatabaseToVersion512(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion513(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion513(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_12_0, VERSION_5_13_0) {
|
||||
// The previous jobs ran once per minute, cluttering the Jobs table with somewhat useless entries. Clean that up.
|
||||
sqlStore.GetMaster().Exec("DELETE FROM Jobs WHERE Type = 'plugins'")
|
||||
@@ -683,19 +683,19 @@ func UpgradeDatabaseToVersion513(sqlStore SqlStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion514(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion514(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_13_0, VERSION_5_14_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_14_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion515(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion515(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_14_0, VERSION_5_15_0) {
|
||||
saveSchemaVersion(sqlStore, VERSION_5_15_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion516(sqlStore SqlStore) {
|
||||
func upgradeDatabaseToVersion516(sqlStore SqlStore) {
|
||||
if shouldPerformUpgrade(sqlStore, VERSION_5_15_0, VERSION_5_16_0) {
|
||||
if sqlStore.DriverName() == model.DATABASE_DRIVER_POSTGRES {
|
||||
sqlStore.GetMaster().Exec("ALTER TABLE Tokens ALTER COLUMN Extra TYPE varchar(2048)")
|
||||
|
||||
@@ -15,41 +15,41 @@ func TestStoreUpgrade(t *testing.T) {
|
||||
sqlStore := ss.(SqlStore)
|
||||
|
||||
t.Run("invalid currentModelVersion", func(t *testing.T) {
|
||||
err := UpgradeDatabase(sqlStore, "notaversion")
|
||||
err := upgradeDatabase(sqlStore, "notaversion")
|
||||
require.EqualError(t, err, "failed to parse current model version notaversion: No Major.Minor.Patch elements found")
|
||||
})
|
||||
|
||||
t.Run("upgrade from invalid version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "invalid")
|
||||
err := UpgradeDatabase(sqlStore, "5.8.0")
|
||||
err := upgradeDatabase(sqlStore, "5.8.0")
|
||||
require.EqualError(t, err, "failed to parse database schema version invalid: No Major.Minor.Patch elements found")
|
||||
require.Equal(t, "invalid", sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade from unsupported version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "2.0.0")
|
||||
err := UpgradeDatabase(sqlStore, "5.8.0")
|
||||
err := upgradeDatabase(sqlStore, "5.8.0")
|
||||
require.EqualError(t, err, "Database schema version 2.0.0 is no longer supported. This Mattermost server supports automatic upgrades from schema version 3.0.0 through schema version 5.8.0. Please manually upgrade to at least version 3.0.0 before continuing.")
|
||||
require.Equal(t, "2.0.0", sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade from earliest supported version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, VERSION_3_0_0)
|
||||
err := UpgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
err := upgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, CURRENT_SCHEMA_VERSION, sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade from no existing version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "")
|
||||
err := UpgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
err := upgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, CURRENT_SCHEMA_VERSION, sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade schema running earlier minor version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "5.1.0")
|
||||
err := UpgradeDatabase(sqlStore, "5.8.0")
|
||||
err := upgradeDatabase(sqlStore, "5.8.0")
|
||||
require.NoError(t, err)
|
||||
// Assert CURRENT_SCHEMA_VERSION, not 5.8.0, since the migrations will move
|
||||
// past 5.8.0 regardless of the input parameter.
|
||||
@@ -58,21 +58,21 @@ func TestStoreUpgrade(t *testing.T) {
|
||||
|
||||
t.Run("upgrade schema running later minor version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "5.29.0")
|
||||
err := UpgradeDatabase(sqlStore, "5.8.0")
|
||||
err := upgradeDatabase(sqlStore, "5.8.0")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "5.29.0", sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade schema running earlier major version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "4.1.0")
|
||||
err := UpgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
err := upgradeDatabase(sqlStore, CURRENT_SCHEMA_VERSION)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, CURRENT_SCHEMA_VERSION, sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
t.Run("upgrade schema running later major version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, "6.0.0")
|
||||
err := UpgradeDatabase(sqlStore, "5.8.0")
|
||||
err := upgradeDatabase(sqlStore, "5.8.0")
|
||||
require.EqualError(t, err, "Database schema version 6.0.0 is not supported. This Mattermost server supports only >=5.8.0, <6.0.0. Please upgrade to at least version 6.0.0 before continuing.")
|
||||
require.Equal(t, "6.0.0", sqlStore.GetCurrentSchemaVersion())
|
||||
})
|
||||
|
||||
@@ -129,7 +129,7 @@ type ChannelStore interface {
|
||||
GetByNames(team_id string, names []string, allowFromCache bool) ([]*model.Channel, *model.AppError)
|
||||
GetByNameIncludeDeleted(team_id string, name string, allowFromCache bool) (*model.Channel, *model.AppError)
|
||||
GetDeletedByName(team_id string, name string) (*model.Channel, *model.AppError)
|
||||
GetDeleted(team_id string, offset int, limit int) (*model.ChannelList, *model.AppError)
|
||||
GetDeleted(team_id string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError)
|
||||
GetChannels(teamId string, userId string, includeDeleted bool) (*model.ChannelList, *model.AppError)
|
||||
GetAllChannels(page, perPage int, opts ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError)
|
||||
GetAllChannelsCount(opts ChannelSearchOpts) (int64, *model.AppError)
|
||||
@@ -175,6 +175,7 @@ type ChannelStore interface {
|
||||
AutocompleteInTeamForSearch(teamId string, userId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError)
|
||||
SearchAllChannels(term string, opts ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError)
|
||||
SearchInTeam(teamId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError)
|
||||
SearchArchivedInTeam(teamId string, term string, userId string) (*model.ChannelList, *model.AppError)
|
||||
SearchForUserInTeam(userId string, teamId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError)
|
||||
SearchMore(userId string, teamId string, term string) (*model.ChannelList, *model.AppError)
|
||||
SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError)
|
||||
|
||||
@@ -687,13 +687,15 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) {
|
||||
o1.Name = "zz" + model.NewId() + "b"
|
||||
o1.Type = model.CHANNEL_OPEN
|
||||
|
||||
userId := model.NewId()
|
||||
|
||||
_, err := ss.Channel().Save(&o1, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = ss.Channel().Delete(o1.Id, model.GetMillis())
|
||||
require.Nil(t, err, "channel should have been deleted")
|
||||
|
||||
list, err := ss.Channel().GetDeleted(o1.TeamId, 0, 100)
|
||||
list, err := ss.Channel().GetDeleted(o1.TeamId, 0, 100, userId)
|
||||
require.Nil(t, err, err)
|
||||
require.Len(t, *list, 1, "wrong list")
|
||||
require.Equal(t, o1.Name, (*list)[0].Name, "missing channel")
|
||||
@@ -706,7 +708,7 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Channel().Save(&o2, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100)
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100, userId)
|
||||
require.Nil(t, err, err)
|
||||
require.Len(t, *list, 1, "wrong list")
|
||||
|
||||
@@ -722,15 +724,15 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) {
|
||||
err = ss.Channel().Delete(o3.Id, model.GetMillis())
|
||||
require.Nil(t, err, "channel should have been deleted")
|
||||
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100)
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 100, userId)
|
||||
require.Nil(t, err, err)
|
||||
require.Len(t, *list, 2, "wrong list length")
|
||||
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 1)
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 0, 1, userId)
|
||||
require.Nil(t, err, err)
|
||||
require.Len(t, *list, 1, "wrong list length")
|
||||
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 1, 1)
|
||||
list, err = ss.Channel().GetDeleted(o1.TeamId, 1, 1, userId)
|
||||
require.Nil(t, err, err)
|
||||
require.Len(t, *list, 1, "wrong list length")
|
||||
|
||||
|
||||
@@ -647,7 +647,7 @@ func (_m *ChannelStore) GetChannelsByScheme(schemeId string, offset int, limit i
|
||||
}
|
||||
|
||||
// GetDeleted provides a mock function with given fields: team_id, offset, limit
|
||||
func (_m *ChannelStore) GetDeleted(team_id string, offset int, limit int) (*model.ChannelList, *model.AppError) {
|
||||
func (_m *ChannelStore) GetDeleted(team_id string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) {
|
||||
ret := _m.Called(team_id, offset, limit)
|
||||
|
||||
var r0 *model.ChannelList
|
||||
@@ -1539,6 +1539,31 @@ func (_m *ChannelStore) SearchInTeam(teamId string, term string, includeDeleted
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SearchArchivedInTeam provides a mock function with given fields: teamId, term, userId
|
||||
func (_m *ChannelStore) SearchArchivedInTeam(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) {
|
||||
ret := _m.Called(teamId, term, userId)
|
||||
|
||||
var r0 *model.ChannelList
|
||||
if rf, ok := ret.Get(0).(func(string, string, string) *model.ChannelList); ok {
|
||||
r0 = rf(teamId, term, userId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.ChannelList)
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, string, string) *model.AppError); ok {
|
||||
r1 = rf(teamId, term, userId)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SearchMore provides a mock function with given fields: userId, teamId, term
|
||||
func (_m *ChannelStore) SearchMore(userId string, teamId string, term string) (*model.ChannelList, *model.AppError) {
|
||||
ret := _m.Called(userId, teamId, term)
|
||||
|
||||
@@ -904,10 +904,10 @@ func (s *TimerLayerChannelStore) GetChannelsByScheme(schemeId string, offset int
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerChannelStore) GetDeleted(team_id string, offset int, limit int) (*model.ChannelList, *model.AppError) {
|
||||
func (s *TimerLayerChannelStore) GetDeleted(team_id string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.ChannelStore.GetDeleted(team_id, offset, limit)
|
||||
resultVar0, resultVar1 := s.ChannelStore.GetDeleted(team_id, offset, limit, userId)
|
||||
|
||||
elapsed := float64(timemodule.Since(start)) / float64(timemodule.Second)
|
||||
if s.Root.Metrics != nil {
|
||||
|
||||
Ссылка в новой задаче
Block a user