package app import ( "blcompro/config" "context" "log" "os" "os/signal" "syscall" "time" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) func RunServer() { cfg := config.NewConfig() _, err := cfg.ConnectionPostgres() if err != nil { log.Fatal("Failed to connect to database: %v", err) return } e := echo.New() e.Use(middleware.CORS()) go func() { if cfg.App.AppPort == "" { cfg.App.AppPort = os.Getenv("APP_PORT") } err := e.Start(":" + cfg.App.AppPort) if err != nil { log.Fatal("Failed to start server:", err) } }() quit := make(chan os.Signal, 1) signal.Notify(quit, os.Interrupt) signal.Notify(quit, syscall.SIGTERM) // Block until a signal is received <-quit log.Println("Shutting down server of 5 seconds...") // Gracefully shutdown the server, waiting for 5 seconds ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() e.Shutdown(ctx) }