package main import ( "fmt" "log" "furtuna-be/config" _ "furtuna-be/docs" "furtuna-be/internal/app" "furtuna-be/internal/common/db" "furtuna-be/internal/common/logger" "furtuna-be/internal/repository" "furtuna-be/internal/routes" "furtuna-be/internal/services" ) func main() { loggerSingleton := logger.NewMainLoggerSingleton() loggerSingleton.Info("Starting server") cfg := config.LoadConfig() dbConn, err := db.NewPostgres(cfg.Database) if err != nil { log.Fatal(err) } server := app.NewServer(cfg) repo := repository.NewRepoManagerImpl(dbConn, cfg) service := services.NewServiceManagerImpl(cfg, repo) routes.RegisterPublicRoutes(server, service, repo) routes.RegisterPrivateRoutes(server, service, repo) routes.RegisterCustomerRoutes(server, service, repo) server.StartScheduler() log.Fatal(server.Listen(fmt.Sprint(":", cfg.Server.Port))) }