github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/cache/cache.go (about)

     1  package cache
     2  
     3  import (
     4  	"context"
     5  	"sync"
     6  
     7  	"github.com/ngocphuongnb/tetua/app/entities"
     8  	"github.com/ngocphuongnb/tetua/app/repositories"
     9  	"github.com/ngocphuongnb/tetua/app/utils"
    10  )
    11  
    12  var RolesPermissions = []*entities.RolePermissions{}
    13  var Topics = []*entities.Topic{}
    14  var Roles []*entities.Role
    15  
    16  func All() error {
    17  	var err1 error
    18  	var err2 error
    19  	var wg sync.WaitGroup
    20  
    21  	wg.Add(2)
    22  	go func(wg *sync.WaitGroup) {
    23  		defer wg.Done()
    24  		err1 = CacheTopics()
    25  	}(&wg)
    26  	go func(wg *sync.WaitGroup) {
    27  		defer wg.Done()
    28  		err2 = CachePermissions()
    29  	}(&wg)
    30  	wg.Wait()
    31  
    32  	return utils.FirstError(err1, err2)
    33  }
    34  
    35  func CacheTopics(ctxs ...context.Context) (err error) {
    36  	ctxs = append(ctxs, context.Background())
    37  	Topics, err = repositories.Topic.All(ctxs[0])
    38  	return
    39  }
    40  
    41  func CachePermissions(ctxs ...context.Context) (err error) {
    42  	ctxs = append(ctxs, context.Background())
    43  	Roles, err = repositories.Role.All(ctxs[0])
    44  
    45  	if err != nil {
    46  		return err
    47  	}
    48  
    49  	for _, role := range Roles {
    50  		permissions := []*entities.PermissionValue{}
    51  
    52  		for _, permission := range role.Permissions {
    53  			permissions = append(permissions, &entities.PermissionValue{
    54  				Action: permission.Action,
    55  				Value:  entities.GetPermTypeValue(permission.Value),
    56  			})
    57  		}
    58  
    59  		RolesPermissions = append(RolesPermissions, &entities.RolePermissions{
    60  			RoleID:      role.ID,
    61  			Permissions: permissions,
    62  		})
    63  	}
    64  
    65  	return nil
    66  }