package main import ( "context" "log/slog" "os" docinitrunner "queryorchestration/api/docInitRunner" "queryorchestration/internal/client" documentclean "queryorchestration/internal/document/clean" documentinit "queryorchestration/internal/document/init" documenttext "queryorchestration/internal/document/text" "queryorchestration/internal/job" "queryorchestration/internal/job/collector" "queryorchestration/internal/server/runner" "queryorchestration/internal/serviceconfig" documentcleanc "queryorchestration/internal/serviceconfig/queue/documentclean" _ "github.com/lib/pq" ) type DocInitConfig struct { runner.BaseConfig documentcleanc.DocCleanConfig } func main() { ctx := context.Background() cfg := &DocInitConfig{} if err := serviceconfig.InitializeConfig(cfg); err != nil { slog.Error("Error initializing config", "err", err) os.Exit(1) } cfg.ControllerFunc = func() runner.Controller { text := documenttext.New() clean := documentclean.New() cli := client.New(cfg) col := collector.New(cfg, &collector.Services{ Clean: clean, Text: text, }) j := job.New(cfg, &job.Services{ Collector: col, Client: cli, }) doc := documentinit.New(cfg, &documentinit.Services{ Job: j, }) return docinitrunner.New(cfg.GetValidator(), &docinitrunner.Services{ Document: doc, }) } server, err := runner.New(ctx, cfg) if err != nil { slog.Error(err.Error()) os.Exit(1) } server.Listen(ctx) }