[MM-10768] Migrate "Channel.SaveDirectChannel" to Sync by default (#10846)
Этот коммит содержится в:
коммит произвёл
Hanzei
родитель
2d3e417833
Коммит
fab2e349b3
@@ -487,7 +487,7 @@ func (s SqlChannelStore) Save(channel *model.Channel, maxChannelsPerTeam int64)
|
||||
})
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) CreateDirectChannel(userId string, otherUserId string) store.StoreChannel {
|
||||
func (s SqlChannelStore) CreateDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) {
|
||||
channel := new(model.Channel)
|
||||
|
||||
channel.DisplayName = ""
|
||||
@@ -510,64 +510,62 @@ func (s SqlChannelStore) CreateDirectChannel(userId string, otherUserId string)
|
||||
return s.SaveDirectChannel(channel, cm1, cm2)
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) SaveDirectChannel(directchannel *model.Channel, member1 *model.ChannelMember, member2 *model.ChannelMember) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
if directchannel.DeleteAt != 0 {
|
||||
result.Err = model.NewAppError("SqlChannelStore.Save", "store.sql_channel.save.archived_channel.app_error", nil, "", http.StatusBadRequest)
|
||||
return
|
||||
func (s SqlChannelStore) SaveDirectChannel(directchannel *model.Channel, member1 *model.ChannelMember, member2 *model.ChannelMember) (*model.Channel, *model.AppError) {
|
||||
if directchannel.DeleteAt != 0 {
|
||||
return nil, model.NewAppError("SqlChannelStore.Save", "store.sql_channel.save.archived_channel.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if directchannel.Type != model.CHANNEL_DIRECT {
|
||||
return nil, model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.not_direct.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
transaction, err := s.GetMaster().Begin()
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
defer finalizeTransaction(transaction)
|
||||
|
||||
directchannel.TeamId = ""
|
||||
// After updating saveChannelT() should be:
|
||||
// newChannel, appErr := s.saveChannelT(transaction, directchannel, 0)
|
||||
channelResult := s.saveChannelT(transaction, directchannel, 0)
|
||||
var newChannel *model.Channel
|
||||
if channelResult.Data != nil {
|
||||
newChannel = channelResult.Data.(*model.Channel)
|
||||
}
|
||||
appErr := channelResult.Err
|
||||
|
||||
if appErr != nil {
|
||||
return newChannel, appErr
|
||||
}
|
||||
|
||||
// Members need new channel ID
|
||||
member1.ChannelId = newChannel.Id
|
||||
member2.ChannelId = newChannel.Id
|
||||
|
||||
member1Result := s.saveMemberT(transaction, member1, newChannel)
|
||||
member2Result := member1Result
|
||||
if member1.UserId != member2.UserId {
|
||||
member2Result = s.saveMemberT(transaction, member2, newChannel)
|
||||
}
|
||||
|
||||
if member1Result.Err != nil || member2Result.Err != nil {
|
||||
details := ""
|
||||
if member1Result.Err != nil {
|
||||
details += "Member1Err: " + member1Result.Err.Message
|
||||
}
|
||||
|
||||
if directchannel.Type != model.CHANNEL_DIRECT {
|
||||
result.Err = model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.not_direct.app_error", nil, "", http.StatusBadRequest)
|
||||
return
|
||||
if member2Result.Err != nil {
|
||||
details += "Member2Err: " + member2Result.Err.Message
|
||||
}
|
||||
return nil, model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.add_members.app_error", nil, details, http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
transaction, err := s.GetMaster().Begin()
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
defer finalizeTransaction(transaction)
|
||||
if err := transaction.Commit(); err != nil {
|
||||
return nil, model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.commit.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
directchannel.TeamId = ""
|
||||
channelResult := s.saveChannelT(transaction, directchannel, 0)
|
||||
return newChannel, nil
|
||||
|
||||
if channelResult.Err != nil {
|
||||
result.Err = channelResult.Err
|
||||
result.Data = channelResult.Data
|
||||
return
|
||||
}
|
||||
|
||||
newChannel := channelResult.Data.(*model.Channel)
|
||||
// Members need new channel ID
|
||||
member1.ChannelId = newChannel.Id
|
||||
member2.ChannelId = newChannel.Id
|
||||
|
||||
member1Result := s.saveMemberT(transaction, member1, newChannel)
|
||||
member2Result := member1Result
|
||||
if member1.UserId != member2.UserId {
|
||||
member2Result = s.saveMemberT(transaction, member2, newChannel)
|
||||
}
|
||||
|
||||
if member1Result.Err != nil || member2Result.Err != nil {
|
||||
details := ""
|
||||
if member1Result.Err != nil {
|
||||
details += "Member1Err: " + member1Result.Err.Message
|
||||
}
|
||||
if member2Result.Err != nil {
|
||||
details += "Member2Err: " + member2Result.Err.Message
|
||||
}
|
||||
result.Err = model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.add_members.app_error", nil, details, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
if err := transaction.Commit(); err != nil {
|
||||
result.Err = model.NewAppError("SqlChannelStore.SaveDirectChannel", "store.sql_channel.save_direct_channel.commit.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
*result = channelResult
|
||||
})
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) saveChannelT(transaction *gorp.Transaction, channel *model.Channel, maxChannelsPerTeam int64) store.StoreResult {
|
||||
@@ -621,9 +619,9 @@ func (s SqlChannelStore) Update(channel *model.Channel) (*model.Channel, *model.
|
||||
}
|
||||
defer finalizeTransaction(transaction)
|
||||
|
||||
updatedChannel, apperr := s.updateChannelT(transaction, channel)
|
||||
if apperr != nil {
|
||||
return nil, apperr
|
||||
updatedChannel, appErr := s.updateChannelT(transaction, channel)
|
||||
if appErr != nil {
|
||||
return nil, appErr
|
||||
}
|
||||
|
||||
// Additionally propagate the write to the PublicChannels table.
|
||||
|
||||
Ссылка в новой задаче
Block a user