orbis/internal/app/app.go

62 lines
1.5 KiB
Go
Raw Permalink Normal View History

2025-01-06 21:52:07 +01:00
package app
import (
"log/slog"
2025-01-06 22:24:56 +01:00
2025-01-19 11:33:38 +01:00
"git.front.kjuulh.io/kjuulh/orbis/internal/deadletter"
"git.front.kjuulh.io/kjuulh/orbis/internal/executor"
"git.front.kjuulh.io/kjuulh/orbis/internal/modelschedule"
2025-01-06 22:24:56 +01:00
"git.front.kjuulh.io/kjuulh/orbis/internal/scheduler"
2025-01-17 20:51:50 +01:00
"git.front.kjuulh.io/kjuulh/orbis/internal/worker"
"git.front.kjuulh.io/kjuulh/orbis/internal/workprocessor"
"git.front.kjuulh.io/kjuulh/orbis/internal/workscheduler"
2025-01-06 21:52:07 +01:00
)
type App struct {
logger *slog.Logger
}
func NewApp() *App {
return &App{
logger: setupLogging(),
}
}
func (a *App) Logger() *slog.Logger {
return a.logger
}
2025-01-06 22:24:56 +01:00
func (a *App) Scheduler() *scheduler.Scheduler {
2025-01-18 12:30:13 +01:00
return scheduler.NewScheduler(a.logger.With("component", "scheduler"), Postgres(), a.Executor(), a.Worker())
}
func (a *App) Executor() *executor.Executor {
return executor.NewExecutor(
a.logger.With("component", "executor"),
ModelRegistry(),
a.ModelSchedule(),
a.Worker(),
a.WorkScheduler(),
)
2025-01-06 22:24:56 +01:00
}
2025-01-17 20:51:50 +01:00
func (a *App) Worker() *worker.Worker {
return worker.NewWorker(Postgres(), a.logger, a.WorkProcessor())
}
func (a *App) WorkScheduler() *workscheduler.WorkScheduler {
return workscheduler.NewWorkScheduler(Postgres(), a.logger)
}
func (a *App) WorkProcessor() *workprocessor.WorkProcessor {
2025-01-19 11:33:38 +01:00
return workprocessor.NewWorkProcessor(a.WorkScheduler(), a.logger, a.DeadLetter())
}
func (a *App) DeadLetter() *deadletter.DeadLetter {
return deadletter.NewDeadLetter(Postgres(), a.logger)
}
func (a *App) ModelSchedule() *modelschedule.ModelSchedule {
return modelschedule.NewModelSchedule(a.logger, Postgres())
2025-01-17 20:51:50 +01:00
}