Added Chronos to schedule tasks, restructured config as common pkg, updated server pkg
This commit is contained in:
52
src/internal/chronos/chronos.go
Normal file
52
src/internal/chronos/chronos.go
Normal 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)
|
||||
}
|
||||
16
src/internal/chronos/jobs/cache_permissions_job.go
Normal file
16
src/internal/chronos/jobs/cache_permissions_job.go
Normal file
@@ -0,0 +1,16 @@
|
||||
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")
|
||||
}
|
||||
Reference in New Issue
Block a user