Files
mostlymatter/server/enterprise/message_export/membership_map.go
Christopher Poile b8e462e198 MM-60987: Move message_export code to monorepo (#28674)
* move message_export code to monorepo

* update license headers

* moving over `dedicated filestore` (#1772) from enterprise master
2024-10-15 13:03:31 -04:00

59 строки
1.6 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.enterprise for license information.
package message_export
type MembershipMapUser struct {
userId string
email string
username string
}
// Provides a clean interface for tracking the users that are present in any number of channels by channel id and user email
type MembershipMap map[string]map[string]MembershipMapUser
func (m *MembershipMap) init(channelId string) {
if *m == nil {
*m = make(map[string]map[string]MembershipMapUser)
}
if (*m)[channelId] == nil {
(*m)[channelId] = make(map[string]MembershipMapUser)
}
}
func (m *MembershipMap) AddUserToChannel(channelId string, user MembershipMapUser) {
m.init(channelId)
if !m.IsUserInChannel(channelId, user.email) {
(*m)[channelId][user.email] = user
}
}
func (m *MembershipMap) RemoveUserFromChannel(channelId string, userEmail string) {
m.init(channelId)
delete((*m)[channelId], userEmail)
}
func (m *MembershipMap) IsUserInChannel(channelId string, userEmail string) bool {
m.init(channelId)
_, exists := (*m)[channelId][userEmail]
return exists
}
func (m *MembershipMap) GetUserEmailsInChannel(channelId string) []string {
m.init(channelId)
users := make([]string, 0, len((*m)[channelId]))
for k := range (*m)[channelId] {
users = append(users, k)
}
return users
}
func (m *MembershipMap) GetUsersInChannel(channelId string) []MembershipMapUser {
m.init(channelId)
users := make([]MembershipMapUser, 0, len((*m)[channelId]))
for _, v := range (*m)[channelId] {
users = append(users, v)
}
return users
}