package main import ( "context" "log" "net/http" "gitea.perlbach24.de/scripte/nexarch/internal/config" "gitea.perlbach24.de/scripte/nexarch/internal/db" "gitea.perlbach24.de/scripte/nexarch/internal/tenant" ) func main() { cfg, err := config.Load() if err != nil { log.Fatalf("config: %v", err) } ctx := context.Background() registryPool, err := db.Connect(ctx, cfg.RegistryDSN) if err != nil { log.Fatalf("registry db: %v", err) } defer registryPool.Close() adminPool, err := db.Connect(ctx, cfg.AdminDSN) if err != nil { log.Fatalf("admin db: %v", err) } defer adminPool.Close() registry := tenant.NewRegistry(registryPool) provisioner := tenant.NewProvisioner(adminPool, registry, cfg.TenantDSNTemplate) tenantHandler := tenant.NewHandler(provisioner) mux := http.NewServeMux() mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) // Vorlaeufiger Pfad ohne Versionierung/Auth — wird mit API-01/IAM-01 abgeloest. mux.HandleFunc("/internal/tenants", tenantHandler.CreateTenant) log.Printf("nexarch-core listening on %s", cfg.ListenAddr) if err := http.ListenAndServe(cfg.ListenAddr, mux); err != nil { log.Fatalf("server: %v", err) } }