PLT-7216: CLI Command to move channels between teams. (#7149)

* PLT-7216: CLI Command to move channels between teams.

* Add comment
Этот коммит содержится в:
George Goldberg
2017-09-04 18:54:24 +01:00
коммит произвёл GitHub
родитель 1e78ff831e
Коммит ba2868775d
4 изменённых файлов: 154 добавлений и 0 удалений

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

@@ -1201,6 +1201,36 @@ func PermanentDeleteChannel(channel *model.Channel) *model.AppError {
return nil
}
// This function is intended for use from the CLI. It is not robust against people joining the channel while the move
// is in progress, and therefore should not be used from the API without first fixing this potential race condition.
func MoveChannel(team *model.Team, channel *model.Channel) *model.AppError {
// Check that all channel members are in the destination team.
if channelMembers, err := GetChannelMembersPage(channel.Id, 0, 10000000); err != nil {
return err
} else {
channelMemberIds := []string{}
for _, channelMember := range *channelMembers {
channelMemberIds = append(channelMemberIds, channelMember.UserId)
}
if teamMembers, err2 := GetTeamMembersByIds(team.Id, channelMemberIds); err != nil {
return err2
} else {
if len(teamMembers) != len(*channelMembers) {
return model.NewAppError("MoveChannel", "app.channel.move_channel.members_do_not_match.error", nil, "", http.StatusInternalServerError)
}
}
}
// Change the Team ID of the channel.
channel.TeamId = team.Id
if result := <-Srv.Store.Channel().Update(channel); result.Err != nil {
return result.Err
}
return nil
}
func GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) {
if result := <-Srv.Store.Channel().GetPinnedPosts(channelId); result.Err != nil {
return nil, result.Err