2025-06-01 15:46:37 +00:00

53 lines
961 B
Go

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)
}