Refactor: improve code quality and worker flow

This commit is contained in:
MangoPig
2026-06-26 18:32:49 +01:00
parent adcc9afe05
commit 7e62ff6d9a
16 changed files with 1444 additions and 358 deletions
+25 -3
View File
@@ -1,10 +1,16 @@
package main
import (
"context"
"encoding/json"
"log"
"os/signal"
"syscall"
"time"
"moku-backend/internal/bootstrap"
"moku-backend/internal/process"
"moku-backend/internal/jobs"
"moku-backend/internal/worker"
)
func main() {
@@ -18,9 +24,25 @@ func main() {
}
}()
app.Logger.Info("worker ready", "service", app.ServiceName, "environment", app.Config.Environment)
jobStore := jobs.NewStore(app.Database)
runner := worker.NewRunner(jobStore, app.Logger, time.Second)
runner.Register(jobs.KindBootstrapStructureMaterialize, func(ctx context.Context, job jobs.Job) error {
var payload jobs.BootstrapStructureMaterializePayload
if len(job.Payload) > 0 {
if err := json.Unmarshal(job.Payload, &payload); err != nil {
return err
}
}
if err := process.WaitForShutdown(app.ServiceName, app.Logger); err != nil {
return bootstrap.NewService(app.Database, app.Config.POSIXRoot).ProcessBootstrapStructureMaterialization(ctx, payload.InstallationID)
})
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer stop()
app.Logger.Info("worker ready", "service", app.ServiceName, "environment", app.Config.Environment, "pollInterval", time.Second)
if err := runner.Run(ctx); err != nil {
app.Logger.Error("worker stopped", "error", err)
log.Fatal(err)
}