From ab99f0656fabed8a62a8c6340be7d538cc7bf8d9 Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Mon, 17 Sep 2018 15:51:26 +0100 Subject: 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. --- app/export_converters.go | 113 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 app/export_converters.go (limited to 'app/export_converters.go') 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, + } +} -- cgit v1.2.3-1-g7c22