github.com/adacta-ru/mattermost-server/v6@v6.0.0/services/searchengine/bleveengine/common.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package bleveengine 5 6 import ( 7 "strings" 8 9 "github.com/adacta-ru/mattermost-server/v6/model" 10 "github.com/adacta-ru/mattermost-server/v6/services/searchengine" 11 ) 12 13 type BLVChannel struct { 14 Id string 15 TeamId []string 16 NameSuggest []string 17 } 18 19 type BLVUser struct { 20 Id string 21 SuggestionsWithFullname []string 22 SuggestionsWithoutFullname []string 23 TeamsIds []string 24 ChannelsIds []string 25 } 26 27 type BLVPost struct { 28 Id string 29 TeamId string 30 ChannelId string 31 UserId string 32 CreateAt int64 33 Message string 34 Type string 35 Hashtags []string 36 Attachments string 37 } 38 39 func BLVChannelFromChannel(channel *model.Channel) *BLVChannel { 40 displayNameInputs := searchengine.GetSuggestionInputsSplitBy(channel.DisplayName, " ") 41 nameInputs := searchengine.GetSuggestionInputsSplitByMultiple(channel.Name, []string{"-", "_"}) 42 43 return &BLVChannel{ 44 Id: channel.Id, 45 TeamId: []string{channel.TeamId}, 46 NameSuggest: append(displayNameInputs, nameInputs...), 47 } 48 } 49 50 func BLVUserFromUserAndTeams(user *model.User, teamsIds, channelsIds []string) *BLVUser { 51 usernameSuggestions := searchengine.GetSuggestionInputsSplitByMultiple(user.Username, []string{".", "-", "_"}) 52 53 fullnameStrings := []string{} 54 if user.FirstName != "" { 55 fullnameStrings = append(fullnameStrings, user.FirstName) 56 } 57 if user.LastName != "" { 58 fullnameStrings = append(fullnameStrings, user.LastName) 59 } 60 61 fullnameSuggestions := []string{} 62 if len(fullnameStrings) > 0 { 63 fullname := strings.Join(fullnameStrings, " ") 64 fullnameSuggestions = searchengine.GetSuggestionInputsSplitBy(fullname, " ") 65 } 66 67 nicknameSuggesitons := []string{} 68 if user.Nickname != "" { 69 nicknameSuggesitons = searchengine.GetSuggestionInputsSplitBy(user.Nickname, " ") 70 } 71 72 usernameAndNicknameSuggestions := append(usernameSuggestions, nicknameSuggesitons...) 73 74 return &BLVUser{ 75 Id: user.Id, 76 SuggestionsWithFullname: append(usernameAndNicknameSuggestions, fullnameSuggestions...), 77 SuggestionsWithoutFullname: usernameAndNicknameSuggestions, 78 TeamsIds: teamsIds, 79 ChannelsIds: channelsIds, 80 } 81 } 82 83 func BLVUserFromUserForIndexing(userForIndexing *model.UserForIndexing) *BLVUser { 84 user := &model.User{ 85 Id: userForIndexing.Id, 86 Username: userForIndexing.Username, 87 Nickname: userForIndexing.Nickname, 88 FirstName: userForIndexing.FirstName, 89 LastName: userForIndexing.LastName, 90 CreateAt: userForIndexing.CreateAt, 91 DeleteAt: userForIndexing.DeleteAt, 92 } 93 94 return BLVUserFromUserAndTeams(user, userForIndexing.TeamsIds, userForIndexing.ChannelsIds) 95 } 96 97 func BLVPostFromPost(post *model.Post, teamId string) *BLVPost { 98 p := &model.PostForIndexing{ 99 TeamId: teamId, 100 } 101 post.ShallowCopy(&p.Post) 102 return BLVPostFromPostForIndexing(p) 103 } 104 105 func BLVPostFromPostForIndexing(post *model.PostForIndexing) *BLVPost { 106 return &BLVPost{ 107 Id: post.Id, 108 TeamId: post.TeamId, 109 ChannelId: post.ChannelId, 110 UserId: post.UserId, 111 CreateAt: post.CreateAt, 112 Message: post.Message, 113 Type: post.Type, 114 Hashtags: strings.Fields(post.Hashtags), 115 } 116 }