Added Chronos to schedule tasks, restructured config as common pkg, updated server pkg

This commit is contained in:
PB
2025-10-23 07:30:05 +02:00
parent 5279e34b2c
commit ed325c7faa
16 changed files with 148 additions and 72 deletions

View File

@@ -0,0 +1,52 @@
package chronos
import (
"log"
"time"
"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/jackc/pgx/v5/pgxpool"
"github.com/onatm/clockwerk"
)
type Chronos struct {
handlers map[string]any
}
func New(c *common.Config) *Chronos {
return &Chronos{
handlers: make(map[string]any),
}
}
func (c *Chronos) Start() error {
job := jobs.NewCachePermissionsJob()
s := clockwerk.New()
s.Every(30 * time.Second).Do(job)
s.Start()
return nil
}
func (c *Chronos) RegisterHandler(name string, fn func() any) {
c.handlers[name] = fn()
}
func (s *Chronos) OnShutdown() {
log.Println("Chronos is going down...")
// s.GetDatabase().Close()
}
// Plugin helper funcitons
// TODO: move functions below to some common place
func (s *Chronos) GetCache() *redis.Client {
return (s.handlers["cache"]).(*redis.Client)
}
func (s *Chronos) GetDatabase() *pgxpool.Pool {
return (s.handlers["database"]).(*pgxpool.Pool)
}