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 }