summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-06-11 15:24:08 +0100
committerCarlos Tadeu Panato Junior <ctadeu@gmail.com>2018-06-11 16:24:08 +0200
commitd4761a94cebfd667373e1635dd1c9ad334b3b80c (patch)
treeff1e4ff5750450ade5823b1d7a0b342cfc36c70a /store
parent566539bc67c8e467f88401551f999436e27fe70a (diff)
downloadchat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.tar.gz
chat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.tar.bz2
chat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.zip
Fix idempotency of scheme migrations. (#8935)
This fixes the issue where if the migration tries to migrate an already scheme-aware member object it would end up removing it's scheme-derived roles. Instead, only if the member object is unmigrated do we default to setting the scheme-derived role booleans to false. We tell if it is an unmigrated member object by checking if the booleans are set to null.
Diffstat (limited to 'store')
-rw-r--r--store/sqlstore/channel_store.go8
-rw-r--r--store/sqlstore/team_store.go8
2 files changed, 12 insertions, 4 deletions
diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go
index 5f336d904..476665514 100644
--- a/store/sqlstore/channel_store.go
+++ b/store/sqlstore/channel_store.go
@@ -1733,8 +1733,12 @@ func (s SqlChannelStore) MigrateChannelMembers(fromChannelId string, fromUserId
for _, member := range channelMembers {
roles := strings.Fields(member.Roles)
var newRoles []string
- member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
- member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ if !member.SchemeAdmin.Valid {
+ member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
+ }
+ if !member.SchemeUser.Valid {
+ member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ }
for _, role := range roles {
if role == model.CHANNEL_ADMIN_ROLE_ID {
member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true}
diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go
index fe4c09175..22f0bdb29 100644
--- a/store/sqlstore/team_store.go
+++ b/store/sqlstore/team_store.go
@@ -755,8 +755,12 @@ func (s SqlTeamStore) MigrateTeamMembers(fromTeamId string, fromUserId string) s
for _, member := range teamMembers {
roles := strings.Fields(member.Roles)
var newRoles []string
- member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
- member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ if !member.SchemeAdmin.Valid {
+ member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
+ }
+ if !member.SchemeUser.Valid {
+ member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ }
for _, role := range roles {
if role == model.TEAM_ADMIN_ROLE_ID {
member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true}