Moved infra/ to internal/ sub-dir
This commit is contained in:
28
src/internal/chronos/cache_permissions_job.go
Normal file
28
src/internal/chronos/cache_permissions_job.go
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package chronos
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
|
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CachePermissionsJob struct {
|
||||||
|
sch *Chronos
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCachePermissionsJob(sch *Chronos) CachePermissionsJob {
|
||||||
|
return CachePermissionsJob{sch: sch}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j CachePermissionsJob) Run() {
|
||||||
|
userRepo := repository.NewUserRepository(j.sch.GetDatabase())
|
||||||
|
roleRepo := repository.NewRoleRepository(j.sch.GetDatabase())
|
||||||
|
urlRepo := repository.NewURLAccessRepository(j.sch.GetDatabase())
|
||||||
|
authSrv := service.NewAuthService(userRepo, j.sch.GetCache())
|
||||||
|
guardSrv := service.NewGuardService(authSrv, j.sch.GetCache(), userRepo, roleRepo, urlRepo)
|
||||||
|
|
||||||
|
guardSrv.CacheAllPermissions()
|
||||||
|
fmt.Println(time.Now().String() + " permission successfully cached")
|
||||||
|
}
|
||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/common"
|
"git.ego.freeddns.org/egommerce/identity-service/common"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/chronos/jobs"
|
|
||||||
|
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
@@ -23,10 +22,10 @@ func New(c *common.Config) *Chronos {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Chronos) Start() error {
|
func (c *Chronos) Start() error {
|
||||||
job := jobs.NewCachePermissionsJob()
|
job := NewCachePermissionsJob(c)
|
||||||
s := clockwerk.New()
|
sch := clockwerk.New()
|
||||||
s.Every(30 * time.Second).Do(job)
|
sch.Every(30 * time.Second).Do(job)
|
||||||
s.Start()
|
sch.Start()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -35,18 +34,18 @@ func (c *Chronos) RegisterHandler(name string, fn func() any) {
|
|||||||
c.handlers[name] = fn()
|
c.handlers[name] = fn()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Chronos) OnShutdown() {
|
func (c *Chronos) OnShutdown() {
|
||||||
log.Println("Chronos is going down...")
|
log.Println("Chronos is going down...")
|
||||||
|
|
||||||
// s.GetDatabase().Close()
|
// c.GetDatabase().Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin helper funcitons
|
// Plugin helper funcitons - refactor needed cause funcs are duplcated in server.go
|
||||||
// TODO: move functions below to some common place
|
// TODO: move functions below to some common place
|
||||||
func (s *Chronos) GetCache() *redis.Client {
|
func (c *Chronos) GetCache() *redis.Client {
|
||||||
return (s.handlers["cache"]).(*redis.Client)
|
return (c.handlers["cache"]).(*redis.Client)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Chronos) GetDatabase() *pgxpool.Pool {
|
func (c *Chronos) GetDatabase() *pgxpool.Pool {
|
||||||
return (s.handlers["database"]).(*pgxpool.Pool)
|
return (c.handlers["database"]).(*pgxpool.Pool)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
package jobs
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type CachePermissionsJob struct{}
|
|
||||||
|
|
||||||
func NewCachePermissionsJob() CachePermissionsJob {
|
|
||||||
return CachePermissionsJob{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (j CachePermissionsJob) Run() {
|
|
||||||
fmt.Println(time.Now().String() + " Every 30 seconds")
|
|
||||||
}
|
|
||||||
@@ -2,16 +2,16 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
repo "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Server) AccessHandlerFn(c *fiber.Ctx) error {
|
func (s *Server) AccessHandlerFn(c *fiber.Ctx) error {
|
||||||
userRepo := repo.NewUserRepository(s.GetDatabase())
|
userRepo := repository.NewUserRepository(s.GetDatabase())
|
||||||
roleRepo := repo.NewRoleRepository(s.GetDatabase())
|
roleRepo := repository.NewRoleRepository(s.GetDatabase())
|
||||||
urlRepo := repo.NewURLAccessRepository(s.GetDatabase())
|
urlRepo := repository.NewURLAccessRepository(s.GetDatabase())
|
||||||
authSrv := service.NewAuthService(userRepo, s.GetCache())
|
authSrv := service.NewAuthService(userRepo, s.GetCache())
|
||||||
guardSrv := service.NewGuardService(authSrv, s.GetCache(), userRepo, roleRepo, urlRepo)
|
guardSrv := service.NewGuardService(authSrv, s.GetCache(), userRepo, roleRepo, urlRepo)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
||||||
|
|
||||||
@@ -15,9 +15,9 @@ func (s *Server) LoginHandlerFn(c *fiber.Ctx) error {
|
|||||||
return s.Error(c, fiber.StatusBadRequest, "Error parsing input")
|
return s.Error(c, fiber.StatusBadRequest, "Error parsing input")
|
||||||
}
|
}
|
||||||
|
|
||||||
userRepo := domain.NewUserRepository(s.GetDatabase())
|
userRepo := repository.NewUserRepository(s.GetDatabase())
|
||||||
roleRepo := domain.NewRoleRepository(s.GetDatabase())
|
roleRepo := repository.NewRoleRepository(s.GetDatabase())
|
||||||
urlRepo := domain.NewURLAccessRepository(s.GetDatabase())
|
urlRepo := repository.NewURLAccessRepository(s.GetDatabase())
|
||||||
authSrv := service.NewAuthService(userRepo, s.GetCache())
|
authSrv := service.NewAuthService(userRepo, s.GetCache())
|
||||||
guardSrv := service.NewGuardService(authSrv, s.GetCache(), userRepo, roleRepo, urlRepo)
|
guardSrv := service.NewGuardService(authSrv, s.GetCache(), userRepo, roleRepo, urlRepo)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ func (s *Server) RefreshHandlerFn(c *fiber.Ctx) error {
|
|||||||
return s.Error(c, fiber.StatusBadRequest, "Error parsing headers")
|
return s.Error(c, fiber.StatusBadRequest, "Error parsing headers")
|
||||||
}
|
}
|
||||||
|
|
||||||
repo := domain.NewUserRepository(s.GetDatabase())
|
repo := repository.NewUserRepository(s.GetDatabase())
|
||||||
authSrv := service.NewAuthService(repo, s.GetCache())
|
authSrv := service.NewAuthService(repo, s.GetCache())
|
||||||
|
|
||||||
token, err := ui.NewRefreshTokenActionUI(authSrv).Execute(header)
|
token, err := ui.NewRefreshTokenActionUI(authSrv).Execute(header)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/ui"
|
||||||
|
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
@@ -14,7 +14,7 @@ func (s *Server) RegisterHandlerFn(c *fiber.Ctx) error {
|
|||||||
return s.Error(c, fiber.StatusBadRequest, "Error parsing input")
|
return s.Error(c, fiber.StatusBadRequest, "Error parsing input")
|
||||||
}
|
}
|
||||||
|
|
||||||
repo := domain.NewUserRepository(s.GetDatabase())
|
repo := repository.NewUserRepository(s.GetDatabase())
|
||||||
|
|
||||||
id, err := ui.NewRegisterActionUI(repo, s.GetCache()).Execute(data)
|
id, err := ui.NewRegisterActionUI(repo, s.GetCache()).Execute(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ func (s *Server) Error(c *fiber.Ctx, code int, msg string) error {
|
|||||||
return c.Status(code).JSON(dto.ErrorResponseDTO{Error: msg})
|
return c.Status(code).JSON(dto.ErrorResponseDTO{Error: msg})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin helper funcitons
|
// Plugin helper funcitons - refactor needed cause funcs are duplcated in chronos.go
|
||||||
func (s *Server) GetCache() *redis.Client {
|
func (s *Server) GetCache() *redis.Client {
|
||||||
return (s.handlers["cache"]).(*redis.Client)
|
return (s.handlers["cache"]).(*redis.Client)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity"
|
entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity"
|
||||||
|
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
|
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
)
|
)
|
||||||
@@ -29,11 +29,11 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AuthService struct {
|
type AuthService struct {
|
||||||
userRepo *domain.UserRepository
|
userRepo *repository.UserRepository
|
||||||
cache *redis.Client
|
cache *redis.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAuthService(userRepo *domain.UserRepository, cache *redis.Client) *AuthService {
|
func NewAuthService(userRepo *repository.UserRepository, cache *redis.Client) *AuthService {
|
||||||
return &AuthService{
|
return &AuthService{
|
||||||
userRepo: userRepo,
|
userRepo: userRepo,
|
||||||
cache: cache,
|
cache: cache,
|
||||||
|
|||||||
@@ -9,19 +9,19 @@ import (
|
|||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity"
|
entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity"
|
||||||
|
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GuardService struct {
|
type GuardService struct {
|
||||||
authSrv *AuthService
|
authSrv *AuthService
|
||||||
cache *redis.Client
|
cache *redis.Client
|
||||||
userRepo *domain.UserRepository
|
userRepo *repository.UserRepository
|
||||||
roleRepo *domain.RoleRepository
|
roleRepo *repository.RoleRepository
|
||||||
urlRepo *domain.URLAccessRepository
|
urlRepo *repository.URLAccessRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGuardService(authSrv *AuthService, cache *redis.Client, userRepo *domain.UserRepository, roleRepo *domain.RoleRepository, urlRepo *domain.URLAccessRepository) *GuardService {
|
func NewGuardService(authSrv *AuthService, cache *redis.Client, userRepo *repository.UserRepository, roleRepo *repository.RoleRepository, urlRepo *repository.URLAccessRepository) *GuardService {
|
||||||
return &GuardService{
|
return &GuardService{
|
||||||
authSrv: authSrv,
|
authSrv: authSrv,
|
||||||
cache: cache,
|
cache: cache,
|
||||||
@@ -49,9 +49,6 @@ func (g *GuardService) CheckUserPermissions(authHeader *dto.AuthorizationHeaderD
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move below functions to a worker and fire-up it in the CRONJOB
|
|
||||||
// func (g *GuardService) fetchURLAccessFromCache() {}
|
|
||||||
|
|
||||||
func (g *GuardService) CacheAllPermissions() error {
|
func (g *GuardService) CacheAllPermissions() error {
|
||||||
urls, err := g.urlRepo.FindAll()
|
urls, err := g.urlRepo.FindAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -81,3 +78,5 @@ func (g *GuardService) CacheAllPermissions() error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func (g *GuardService) fetchURLAccessFromCache() {}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package ui
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
|
||||||
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/infra/repository"
|
||||||
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
"git.ego.freeddns.org/egommerce/identity-service/internal/service"
|
||||||
|
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
@@ -12,7 +12,7 @@ type RegisterActionUI struct {
|
|||||||
authSrv *service.AuthService
|
authSrv *service.AuthService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRegisterActionUI(repo *domain.UserRepository, cache *redis.Client) *RegisterActionUI {
|
func NewRegisterActionUI(repo *repository.UserRepository, cache *redis.Client) *RegisterActionUI {
|
||||||
return &RegisterActionUI{
|
return &RegisterActionUI{
|
||||||
authSrv: service.NewAuthService(repo, cache),
|
authSrv: service.NewAuthService(repo, cache),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user