summaryrefslogtreecommitdiffstats
path: root/app/export_converters.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-09-17 15:51:26 +0100
committerGitHub <noreply@github.com>2018-09-17 15:51:26 +0100
commitab99f0656fabed8a62a8c6340be7d538cc7bf8d9 (patch)
treebb68ee1d0c743be23bba470f5d81ef11dc134182 /app/export_converters.go
parent5786b0d6d57b90bbb0c262235dd9d19b497b5fae (diff)
downloadchat-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.go113
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,
+ }
+}