2023-08-21 03:50:30 -04:00
package pluginapi
import (
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/public/plugin"
)
// GroupService exposes methods to manipulate groups.
type GroupService struct {
api plugin . API
}
// Get gets a group by ID.
//
// Minimum server version: 5.18
func ( g * GroupService ) Get ( groupID string ) ( * model . Group , error ) {
group , appErr := g . api . GetGroup ( groupID )
return group , normalizeAppErr ( appErr )
}
// GetByName gets a group by name.
//
// Minimum server version: 5.18
func ( g * GroupService ) GetByName ( name string ) ( * model . Group , error ) {
group , appErr := g . api . GetGroupByName ( name )
return group , normalizeAppErr ( appErr )
}
// GetMemberUsers gets a page of users from the given group.
//
// Minimum server version: 5.35
func ( g * GroupService ) GetMemberUsers ( groupID string , page , perPage int ) ( [ ] * model . User , error ) {
users , appErr := g . api . GetGroupMemberUsers ( groupID , page , perPage )
return users , normalizeAppErr ( appErr )
}
// GetBySource gets a list of all groups for the given source.
//
// @tag Group
// Minimum server version: 5.35
func ( g * GroupService ) GetBySource ( groupSource model . GroupSource ) ( [ ] * model . Group , error ) {
groups , appErr := g . api . GetGroupsBySource ( groupSource )
return groups , normalizeAppErr ( appErr )
}
// ListForUser gets the groups a user is in.
//
// Minimum server version: 5.18
func ( g * GroupService ) ListForUser ( userID string ) ( [ ] * model . Group , error ) {
groups , appErr := g . api . GetGroupsForUser ( userID )
return groups , normalizeAppErr ( appErr )
}
2025-03-13 12:00:15 -04:00
// UpsertMember adds a user to a group or updates their existing membership.
//
// Minimum server version: 10.7
func ( g * GroupService ) UpsertMember ( groupID string , userID string ) ( * model . GroupMember , error ) {
member , appErr := g . api . UpsertGroupMember ( groupID , userID )
return member , normalizeAppErr ( appErr )
}
// UpsertMembers adds multiple users to a group or updates their existing memberships.
//
// Minimum server version: 10.7
func ( g * GroupService ) UpsertMembers ( groupID string , userIDs [ ] string ) ( [ ] * model . GroupMember , error ) {
members , appErr := g . api . UpsertGroupMembers ( groupID , userIDs )
return members , normalizeAppErr ( appErr )
}
// GetByRemoteID gets a group by its remote ID.
//
// Minimum server version: 10.7
func ( g * GroupService ) GetByRemoteID ( remoteID string , groupSource model . GroupSource ) ( * model . Group , error ) {
group , appErr := g . api . GetGroupByRemoteID ( remoteID , groupSource )
return group , normalizeAppErr ( appErr )
}
// Create creates a new group.
//
// Minimum server version: 10.7
func ( g * GroupService ) Create ( group * model . Group ) ( * model . Group , error ) {
group , appErr := g . api . CreateGroup ( group )
return group , normalizeAppErr ( appErr )
}
// Update updates a group.
//
// Minimum server version: 10.7
func ( g * GroupService ) Update ( group * model . Group ) ( * model . Group , error ) {
group , appErr := g . api . UpdateGroup ( group )
return group , normalizeAppErr ( appErr )
}
// Delete soft deletes a group.
//
// Minimum server version: 10.7
func ( g * GroupService ) Delete ( groupID string ) ( * model . Group , error ) {
group , appErr := g . api . DeleteGroup ( groupID )
return group , normalizeAppErr ( appErr )
}
// Restore restores a soft deleted group.
//
// Minimum server version: 10.7
func ( g * GroupService ) Restore ( groupID string ) ( * model . Group , error ) {
group , appErr := g . api . RestoreGroup ( groupID )
return group , normalizeAppErr ( appErr )
}
// DeleteMember removes a user from a group.
//
// Minimum server version: 10.7
func ( g * GroupService ) DeleteMember ( groupID string , userID string ) ( * model . GroupMember , error ) {
member , appErr := g . api . DeleteGroupMember ( groupID , userID )
return member , normalizeAppErr ( appErr )
}
// GetSyncable gets a group syncable.
//
// Minimum server version: 10.7
func ( g * GroupService ) GetSyncable ( groupID string , syncableID string , syncableType model . GroupSyncableType ) ( * model . GroupSyncable , error ) {
syncable , appErr := g . api . GetGroupSyncable ( groupID , syncableID , syncableType )
return syncable , normalizeAppErr ( appErr )
}
// GetSyncables gets all group syncables for the given group.
//
// Minimum server version: 10.7
func ( g * GroupService ) GetSyncables ( groupID string , syncableType model . GroupSyncableType ) ( [ ] * model . GroupSyncable , error ) {
syncables , appErr := g . api . GetGroupSyncables ( groupID , syncableType )
return syncables , normalizeAppErr ( appErr )
}
// UpsertSyncable creates or updates a group syncable.
//
// Minimum server version: 10.7
func ( g * GroupService ) UpsertSyncable ( groupSyncable * model . GroupSyncable ) ( * model . GroupSyncable , error ) {
syncable , appErr := g . api . UpsertGroupSyncable ( groupSyncable )
return syncable , normalizeAppErr ( appErr )
}
// UpdateSyncable updates a group syncable.
//
// Minimum server version: 10.7
func ( g * GroupService ) UpdateSyncable ( groupSyncable * model . GroupSyncable ) ( * model . GroupSyncable , error ) {
syncable , appErr := g . api . UpdateGroupSyncable ( groupSyncable )
return syncable , normalizeAppErr ( appErr )
}
// DeleteSyncable deletes a group syncable.
//
// Minimum server version: 10.7
func ( g * GroupService ) DeleteSyncable ( groupID string , syncableID string , syncableType model . GroupSyncableType ) ( * model . GroupSyncable , error ) {
syncable , appErr := g . api . DeleteGroupSyncable ( groupID , syncableID , syncableType )
return syncable , normalizeAppErr ( appErr )
}
// GetGroups returns a list of all groups with the given options and restrictions.
//
// Minimum server version: 10.7
func ( g * GroupService ) GetGroups ( page , perPage int , opts model . GroupSearchOpts , viewRestrictions * model . ViewUsersRestrictions ) ( [ ] * model . Group , error ) {
groups , appErr := g . api . GetGroups ( page , perPage , opts , viewRestrictions )
return groups , normalizeAppErr ( appErr )
}
2025-05-21 14:44:34 -04:00
// CreateDefaultSyncableMemberships creates default syncable memberships based off the provided parameters.
//
// Minimum server version: 10.9
func ( g * GroupService ) CreateDefaultSyncableMemberships ( params model . CreateDefaultMembershipParams ) error {
appErr := g . api . CreateDefaultSyncableMemberships ( params )
return normalizeAppErr ( appErr )
}
// DeleteGroupConstrainedMemberships deletes team and channel memberships of users who aren't members of the allowed groups of all group-constrained teams and channels.
//
// Minimum server version: 10.9
func ( g * GroupService ) DeleteGroupConstrainedMemberships ( ) error {
appErr := g . api . DeleteGroupConstrainedMemberships ( )
return normalizeAppErr ( appErr )
}