diff options
author | George Goldberg <george@gberg.me> | 2018-09-17 15:51:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-17 15:51:26 +0100 |
commit | ab99f0656fabed8a62a8c6340be7d538cc7bf8d9 (patch) | |
tree | bb68ee1d0c743be23bba470f5d81ef11dc134182 /app/export_converters.go | |
parent | 5786b0d6d57b90bbb0c262235dd9d19b497b5fae (diff) | |
download | chat-ab99f0656fabed8a62a8c6340be7d538cc7bf8d9.tar.gz chat-ab99f0656fabed8a62a8c6340be7d538cc7bf8d9.tar.bz2 chat-ab99f0656fabed8a62a8c6340be7d538cc7bf8d9.zip |
MM-11781: Basic Data Export Command Line. (#9296)
* MM-11781: Basic Data Export Command Line.
* ChannelStore new unit tests.
* TeamStore new unit tests.
* Unit test for new UserStore function.
* Unit tests for post store new methods.
* Review fixes.
* Fix duplicate command name.
Diffstat (limited to 'app/export_converters.go')
-rw-r--r-- | app/export_converters.go | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/app/export_converters.go b/app/export_converters.go new file mode 100644 index 000000000..cafe360cb --- /dev/null +++ b/app/export_converters.go @@ -0,0 +1,113 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package app + +import ( + "github.com/mattermost/mattermost-server/model" + "strings" +) + +func ImportLineFromTeam(team *model.TeamForExport) *LineImportData { + return &LineImportData{ + Type: "team", + Team: &TeamImportData{ + Name: &team.Name, + DisplayName: &team.DisplayName, + Type: &team.Type, + Description: &team.Description, + AllowOpenInvite: &team.AllowOpenInvite, + Scheme: team.SchemeName, + }, + } +} + +func ImportLineFromChannel(channel *model.ChannelForExport) *LineImportData { + return &LineImportData{ + Type: "channel", + Channel: &ChannelImportData{ + Team: &channel.TeamName, + Name: &channel.Name, + DisplayName: &channel.DisplayName, + Type: &channel.Type, + Header: &channel.Header, + Purpose: &channel.Purpose, + Scheme: channel.SchemeName, + }, + } +} + +func ImportLineFromUser(user *model.User) *LineImportData { + // Bulk Importer doesn't accept "empty string" for AuthService. + var authService *string + if user.AuthService != "" { + authService = &user.AuthService + } + + return &LineImportData{ + Type: "user", + User: &UserImportData{ + Username: &user.Username, + Email: &user.Email, + AuthService: authService, + AuthData: user.AuthData, + Nickname: &user.Nickname, + FirstName: &user.FirstName, + LastName: &user.LastName, + Position: &user.Position, + Roles: &user.Roles, + Locale: &user.Locale, + }, + } +} + +func ImportUserTeamDataFromTeamMember(member *model.TeamMemberForExport) *UserTeamImportData { + rolesList := strings.Fields(member.Roles) + if member.SchemeAdmin { + rolesList = append(rolesList, model.TEAM_ADMIN_ROLE_ID) + } + if member.SchemeUser { + rolesList = append(rolesList, model.TEAM_USER_ROLE_ID) + } + roles := strings.Join(rolesList, " ") + return &UserTeamImportData{ + Name: &member.TeamName, + Roles: &roles, + } +} + +func ImportUserChannelDataFromChannelMember(member *model.ChannelMemberForExport) *UserChannelImportData { + rolesList := strings.Fields(member.Roles) + if member.SchemeAdmin { + rolesList = append(rolesList, model.CHANNEL_ADMIN_ROLE_ID) + } + if member.SchemeUser { + rolesList = append(rolesList, model.CHANNEL_USER_ROLE_ID) + } + roles := strings.Join(rolesList, " ") + return &UserChannelImportData{ + Name: &member.ChannelName, + Roles: &roles, + } +} + +func ImportLineForPost(post *model.PostForExport) *LineImportData { + return &LineImportData{ + Type: "post", + Post: &PostImportData{ + Team: &post.TeamName, + Channel: &post.ChannelName, + User: &post.Username, + Message: &post.Message, + CreateAt: &post.CreateAt, + }, + } +} + +func ImportReplyFromPost(post *model.ReplyForExport) *ReplyImportData { + return &ReplyImportData{ + User: &post.Username, + Message: &post.Message, + CreateAt: &post.CreateAt, + } +} |