github.com/s7techlab/cckit@v0.10.5/examples/token/service/config/token.go (about)

     1  package config
     2  
     3  import (
     4  	"errors"
     5  
     6  	"google.golang.org/protobuf/types/known/emptypb"
     7  
     8  	"github.com/s7techlab/cckit/router"
     9  )
    10  
    11  var (
    12  	ErrTokenAlreadyExists = errors.New(`token already exists`)
    13  )
    14  
    15  type TokenGetter interface {
    16  	GetToken(router.Context, *TokenId) (*Token, error)
    17  	GetDefaultToken(router.Context, *emptypb.Empty) (*Token, error)
    18  }
    19  
    20  func TokenByTypeGroup(tokenType *TokenType, tokenGroup *TokenGroup) []string {
    21  	return append([]string{tokenType.GetName()}, tokenGroup.GetName()...)
    22  }
    23  
    24  func CreateDefaultToken(
    25  	ctx router.Context, configSvc ConfigServiceChaincode, createToken *CreateTokenTypeRequest) ([]string, error) {
    26  
    27  	existsTokenType, _ := configSvc.GetTokenType(ctx, &TokenTypeId{Name: createToken.Name})
    28  	if existsTokenType != nil {
    29  		return nil, ErrTokenAlreadyExists
    30  	}
    31  
    32  	// init token on first Init call
    33  	tokenType, err := configSvc.CreateTokenType(ctx, createToken)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  
    38  	token := TokenByTypeGroup(tokenType, nil)
    39  
    40  	if _, err = configSvc.SetConfig(ctx, &Config{DefaultToken: token}); err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	return token, nil
    45  }