summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
Diffstat (limited to 'store')
-rw-r--r--store/sql_channel_store.go3
-rw-r--r--store/sql_post_store.go16
-rw-r--r--store/sql_post_store_test.go2
-rw-r--r--store/sql_store.go148
-rw-r--r--store/sql_team_store.go10
-rw-r--r--store/sql_user_store.go28
6 files changed, 103 insertions, 104 deletions
diff --git a/store/sql_channel_store.go b/store/sql_channel_store.go
index d503d2225..d2e3943df 100644
--- a/store/sql_channel_store.go
+++ b/store/sql_channel_store.go
@@ -37,8 +37,7 @@ func NewSqlChannelStore(sqlStore *SqlStore) ChannelStore {
}
func (s SqlChannelStore) UpgradeSchemaIfNeeded() {
- s.CreateColumnIfNotExists("Channels", "ExtraUpdateAt", "TotalMsgCount", "bigint(20)", "0")
- s.CreateColumnIfNotExists("Channels", "CreatorId", "ExtraUpdateAt", "varchar(26)", "")
+ s.CreateColumnIfNotExists("Channels", "CreatorId", "varchar(26)", "character varying(26)", "")
}
func (s SqlChannelStore) CreateIndexesIfNotExists() {
diff --git a/store/sql_post_store.go b/store/sql_post_store.go
index 4a3e7e4ed..297d60397 100644
--- a/store/sql_post_store.go
+++ b/store/sql_post_store.go
@@ -37,11 +37,6 @@ func NewSqlPostStore(sqlStore *SqlStore) PostStore {
}
func (s SqlPostStore) UpgradeSchemaIfNeeded() {
-
- // These execs are for upgrading currently created databases to full utf8mb4 compliance
- // Will be removed as seen fit for upgrading
- s.GetMaster().Exec("ALTER TABLE Posts charset=utf8mb4")
- s.GetMaster().Exec("ALTER TABLE Posts MODIFY COLUMN Message varchar(4000) CHARACTER SET utf8mb4")
}
func (s SqlPostStore) CreateIndexesIfNotExists() {
@@ -293,7 +288,7 @@ func (s SqlPostStore) GetPostsSince(channelId string, time int64) StoreChannel {
WHERE
(UpdateAt > :Time
AND ChannelId = :ChannelId)
- LIMIT 100)
+ LIMIT 1000)
UNION
(SELECT
*
@@ -309,7 +304,7 @@ func (s SqlPostStore) GetPostsSince(channelId string, time int64) StoreChannel {
WHERE
UpdateAt > :Time
AND ChannelId = :ChannelId
- LIMIT 100) temp_tab))
+ LIMIT 1000) temp_tab))
ORDER BY CreateAt DESC`,
map[string]interface{}{"ChannelId": channelId, "Time": time})
@@ -321,7 +316,9 @@ func (s SqlPostStore) GetPostsSince(channelId string, time int64) StoreChannel {
for _, p := range posts {
list.AddPost(p)
- list.AddOrder(p.Id)
+ if p.UpdateAt > time {
+ list.AddOrder(p.Id)
+ }
}
result.Data = list
@@ -379,7 +376,8 @@ func (s SqlPostStore) getParentsPosts(channelId string, offset int, limit int) S
ChannelId = :ChannelId1
AND DeleteAt = 0
ORDER BY CreateAt DESC
- LIMIT :Limit OFFSET :Offset) q3) q1 ON q1.RootId = q2.RootId
+ LIMIT :Limit OFFSET :Offset) q3
+ WHERE q3.RootId != '') q1 ON q1.RootId = q2.Id
WHERE
ChannelId = :ChannelId2
AND DeleteAt = 0
diff --git a/store/sql_post_store_test.go b/store/sql_post_store_test.go
index 7754b8275..d48dea51c 100644
--- a/store/sql_post_store_test.go
+++ b/store/sql_post_store_test.go
@@ -374,7 +374,7 @@ func TestPostStoreGetPostsWtihDetails(t *testing.T) {
t.Fatal("invalid order")
}
- if len(r1.Posts) != 6 {
+ if len(r1.Posts) != 5 { //the last 4, + o1 (o3 and o2a's parent)
t.Fatal("wrong size")
}
diff --git a/store/sql_store.go b/store/sql_store.go
index 0d4f76a72..98c67d668 100644
--- a/store/sql_store.go
+++ b/store/sql_store.go
@@ -123,13 +123,29 @@ func setupConnection(con_type string, driver string, dataSource string, maxIdle
}
func (ss SqlStore) DoesColumnExist(tableName string, columnName string) bool {
- // XXX TODO FIXME this should be removed after 0.6.0
if utils.Cfg.SqlSettings.DriverName == "postgres" {
- return false
- }
+ count, err := ss.GetMaster().SelectInt(
+ `SELECT COUNT(0)
+ FROM pg_attribute
+ WHERE attrelid = $1::regclass
+ AND attname = $2
+ AND NOT attisdropped`,
+ strings.ToLower(tableName),
+ strings.ToLower(columnName),
+ )
+
+ if err != nil {
+ l4g.Critical("Failed to check if column exists %v", err)
+ time.Sleep(time.Second)
+ panic("Failed to check if column exists " + err.Error())
+ }
+
+ return count > 0
- count, err := ss.GetMaster().SelectInt(
- `SELECT
+ } else if utils.Cfg.SqlSettings.DriverName == "mysql" {
+
+ count, err := ss.GetMaster().SelectInt(
+ `SELECT
COUNT(0) AS column_exists
FROM
information_schema.COLUMNS
@@ -137,81 +153,101 @@ func (ss SqlStore) DoesColumnExist(tableName string, columnName string) bool {
TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = ?
AND COLUMN_NAME = ?`,
- tableName,
- columnName,
- )
- if err != nil {
- l4g.Critical("Failed to check if column exists %v", err)
+ tableName,
+ columnName,
+ )
+
+ if err != nil {
+ l4g.Critical("Failed to check if column exists %v", err)
+ time.Sleep(time.Second)
+ panic("Failed to check if column exists " + err.Error())
+ }
+
+ return count > 0
+
+ } else {
+ l4g.Critical("Failed to check if column exists because of missing driver")
time.Sleep(time.Second)
- panic("Failed to check if column exists " + err.Error())
+ panic("Failed to check if column exists because of missing driver")
}
- return count > 0
}
-func (ss SqlStore) CreateColumnIfNotExists(tableName string, columnName string, afterName string, colType string, defaultValue string) bool {
-
- // XXX TODO FIXME this should be removed after 0.6.0
- if utils.Cfg.SqlSettings.DriverName == "postgres" {
- return false
- }
+func (ss SqlStore) CreateColumnIfNotExists(tableName string, columnName string, mySqlColType string, postgresColType string, defaultValue string) bool {
if ss.DoesColumnExist(tableName, columnName) {
return false
}
- _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " ADD " + columnName + " " + colType + " DEFAULT '" + defaultValue + "'" + " AFTER " + afterName)
- if err != nil {
- l4g.Critical("Failed to create column %v", err)
+ if utils.Cfg.SqlSettings.DriverName == "postgres" {
+ _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType + " DEFAULT '" + defaultValue + "'")
+ if err != nil {
+ l4g.Critical("Failed to create column %v", err)
+ time.Sleep(time.Second)
+ panic("Failed to create column " + err.Error())
+ }
+
+ return true
+
+ } else if utils.Cfg.SqlSettings.DriverName == "mysql" {
+ _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType + " DEFAULT '" + defaultValue + "'")
+ if err != nil {
+ l4g.Critical("Failed to create column %v", err)
+ time.Sleep(time.Second)
+ panic("Failed to create column " + err.Error())
+ }
+
+ return true
+
+ } else {
+ l4g.Critical("Failed to create column because of missing driver")
time.Sleep(time.Second)
- panic("Failed to create column " + err.Error())
+ panic("Failed to create column because of missing driver")
}
-
- return true
}
-func (ss SqlStore) RemoveColumnIfExists(tableName string, columnName string) bool {
+// func (ss SqlStore) RemoveColumnIfExists(tableName string, columnName string) bool {
- // XXX TODO FIXME this should be removed after 0.6.0
- if utils.Cfg.SqlSettings.DriverName == "postgres" {
- return false
- }
+// // XXX TODO FIXME this should be removed after 0.6.0
+// if utils.Cfg.SqlSettings.DriverName == "postgres" {
+// return false
+// }
- if !ss.DoesColumnExist(tableName, columnName) {
- return false
- }
+// if !ss.DoesColumnExist(tableName, columnName) {
+// return false
+// }
- _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " DROP COLUMN " + columnName)
- if err != nil {
- l4g.Critical("Failed to drop column %v", err)
- time.Sleep(time.Second)
- panic("Failed to drop column " + err.Error())
- }
+// _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " DROP COLUMN " + columnName)
+// if err != nil {
+// l4g.Critical("Failed to drop column %v", err)
+// time.Sleep(time.Second)
+// panic("Failed to drop column " + err.Error())
+// }
- return true
-}
+// return true
+// }
-func (ss SqlStore) RenameColumnIfExists(tableName string, oldColumnName string, newColumnName string, colType string) bool {
+// func (ss SqlStore) RenameColumnIfExists(tableName string, oldColumnName string, newColumnName string, colType string) bool {
- // XXX TODO FIXME this should be removed after 0.6.0
- if utils.Cfg.SqlSettings.DriverName == "postgres" {
- return false
- }
+// // XXX TODO FIXME this should be removed after 0.6.0
+// if utils.Cfg.SqlSettings.DriverName == "postgres" {
+// return false
+// }
- if !ss.DoesColumnExist(tableName, oldColumnName) {
- return false
- }
+// if !ss.DoesColumnExist(tableName, oldColumnName) {
+// return false
+// }
- _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " CHANGE " + oldColumnName + " " + newColumnName + " " + colType)
+// _, err := ss.GetMaster().Exec("ALTER TABLE " + tableName + " CHANGE " + oldColumnName + " " + newColumnName + " " + colType)
- if err != nil {
- l4g.Critical("Failed to rename column %v", err)
- time.Sleep(time.Second)
- panic("Failed to drop column " + err.Error())
- }
+// if err != nil {
+// l4g.Critical("Failed to rename column %v", err)
+// time.Sleep(time.Second)
+// panic("Failed to drop column " + err.Error())
+// }
- return true
-}
+// return true
+// }
func (ss SqlStore) CreateIndexIfNotExists(indexName string, tableName string, columnName string) {
ss.createIndexIfNotExists(indexName, tableName, columnName, false)
diff --git a/store/sql_team_store.go b/store/sql_team_store.go
index 7b0be0540..2784f8630 100644
--- a/store/sql_team_store.go
+++ b/store/sql_team_store.go
@@ -5,7 +5,6 @@ package store
import (
"github.com/mattermost/platform/model"
- "github.com/mattermost/platform/utils"
)
type SqlTeamStore struct {
@@ -29,15 +28,6 @@ func NewSqlTeamStore(sqlStore *SqlStore) TeamStore {
}
func (s SqlTeamStore) UpgradeSchemaIfNeeded() {
- defaultValue := "0"
- if utils.Cfg.TeamSettings.AllowValetDefault {
- defaultValue = "1"
- }
- s.CreateColumnIfNotExists("Teams", "AllowValet", "AllowedDomains", "tinyint(1)", defaultValue)
- if !s.DoesColumnExist("Teams", "DisplayName") {
- s.RenameColumnIfExists("Teams", "Name", "DisplayName", "varchar(64)")
- s.RenameColumnIfExists("Teams", "Domain", "Name", "varchar(64)")
- }
}
func (s SqlTeamStore) CreateIndexesIfNotExists() {
diff --git a/store/sql_user_store.go b/store/sql_user_store.go
index 4b1189c2e..64a18545a 100644
--- a/store/sql_user_store.go
+++ b/store/sql_user_store.go
@@ -5,9 +5,9 @@ package store
import (
"fmt"
- "strings"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
+ "strings"
)
type SqlUserStore struct {
@@ -40,32 +40,8 @@ func NewSqlUserStore(sqlStore *SqlStore) UserStore {
}
func (us SqlUserStore) UpgradeSchemaIfNeeded() {
- us.CreateColumnIfNotExists("Users", "LastPictureUpdate", "LastPasswordUpdate", "bigint(20)", "0")
-
- // migrating the FullName column to Nickname and adding the FirstName and LastName columns for MM-825
- if us.RenameColumnIfExists("Users", "FullName", "Nickname", "varchar(64)") {
- us.CreateColumnIfNotExists("Users", "FirstName", "Nickname", "varchar(64)", "")
- us.CreateColumnIfNotExists("Users", "LastName", "FirstName", "varchar(64)", "")
-
- // infer values of first and last name by splitting the previous full name
- if _, err := us.GetMaster().Exec("UPDATE Users SET FirstName = SUBSTRING_INDEX(SUBSTRING_INDEX(Nickname, ' ', 1), ' ', -1)"); err != nil {
- panic("Failed to set first name from nickname " + err.Error())
- }
-
- // only set the last name from full names that are comprised of multiple words (ie that have at least one space in them)
- if _, err := us.GetMaster().Exec("Update Users SET LastName = SUBSTRING(Nickname, INSTR(Nickname, ' ') + 1) " +
- "WHERE CHAR_LENGTH(REPLACE(Nickname, ' ', '')) < CHAR_LENGTH(Nickname)"); err != nil {
- panic("Failed to set last name from nickname " + err.Error())
- }
- }
-
- us.CreateColumnIfNotExists("Users", "AuthService", "AuthData", "varchar(32)", "") // for OAuth Client
-
- us.CreateColumnIfNotExists("Users", "FailedAttempts", "LastPictureUpdate", "int(11)", "0")
}
-//func (ss SqlStore) CreateColumnIfNotExists(tableName string, columnName string, afterName string, colType string, defaultValue string) bool {
-
func (us SqlUserStore) CreateIndexesIfNotExists() {
us.CreateIndexIfNotExists("idx_users_team_id", "Users", "TeamId")
us.CreateIndexIfNotExists("idx_users_email", "Users", "Email")
@@ -168,7 +144,7 @@ func (us SqlUserStore) Update(user *model.User, allowActiveUpdate bool) StoreCha
nonUsernameKeys := []string{}
splitKeys := strings.Split(user.NotifyProps["mention_keys"], ",")
for _, key := range splitKeys {
- if key != oldUser.Username && key != "@" + oldUser.Username {
+ if key != oldUser.Username && key != "@"+oldUser.Username {
nonUsernameKeys = append(nonUsernameKeys, key)
}
}