github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/app/slashcommands/auto_channels.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package slashcommands
     5  
     6  import (
     7  	"github.com/masterhung0112/hk_server/v5/app"
     8  	"github.com/masterhung0112/hk_server/v5/app/request"
     9  	"github.com/masterhung0112/hk_server/v5/model"
    10  	"github.com/masterhung0112/hk_server/v5/utils"
    11  )
    12  
    13  type AutoChannelCreator struct {
    14  	a                  *app.App
    15  	userID             string
    16  	team               *model.Team
    17  	Fuzzy              bool
    18  	DisplayNameLen     utils.Range
    19  	DisplayNameCharset string
    20  	NameLen            utils.Range
    21  	NameCharset        string
    22  	ChannelType        string
    23  }
    24  
    25  func NewAutoChannelCreator(a *app.App, team *model.Team, userID string) *AutoChannelCreator {
    26  	return &AutoChannelCreator{
    27  		a:                  a,
    28  		team:               team,
    29  		userID:             userID,
    30  		Fuzzy:              false,
    31  		DisplayNameLen:     ChannelDisplayNameLen,
    32  		DisplayNameCharset: utils.ALPHANUMERIC,
    33  		NameLen:            ChannelNameLen,
    34  		NameCharset:        utils.LOWERCASE,
    35  		ChannelType:        ChannelType,
    36  	}
    37  }
    38  
    39  func (cfg *AutoChannelCreator) createRandomChannel(c *request.Context) (*model.Channel, error) {
    40  	var displayName string
    41  	if cfg.Fuzzy {
    42  		displayName = utils.FuzzName()
    43  	} else {
    44  		displayName = utils.RandomName(cfg.NameLen, cfg.NameCharset)
    45  	}
    46  	name := utils.RandomName(cfg.NameLen, cfg.NameCharset)
    47  
    48  	channel := &model.Channel{
    49  		TeamId:      cfg.team.Id,
    50  		DisplayName: displayName,
    51  		Name:        name,
    52  		Type:        cfg.ChannelType,
    53  		CreatorId:   cfg.userID,
    54  	}
    55  
    56  	channel, err := cfg.a.CreateChannel(c, channel, true)
    57  	if err != nil {
    58  		return nil, err
    59  	}
    60  	return channel, nil
    61  }
    62  
    63  func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils.Range) ([]*model.Channel, error) {
    64  	numChannels := utils.RandIntFromRange(num)
    65  	channels := make([]*model.Channel, numChannels)
    66  
    67  	for i := 0; i < numChannels; i++ {
    68  		var err error
    69  		channels[i], err = cfg.createRandomChannel(c)
    70  		if err != nil {
    71  			return nil, err
    72  		}
    73  	}
    74  
    75  	return channels, nil
    76  }