Files
go-grpc-gateway-template/cmd/server/main.go
2025-08-13 19:36:09 +02:00

47 lines
878 B
Go

package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"go-grpc-gateway-template/internal/config"
"go-grpc-gateway-template/internal/server"
)
func main() {
// Load configuration
cfg := config.Load()
if err := cfg.Validate(); err != nil {
log.Fatalf("Invalid configuration: %v", err)
}
// Create server
srv := server.New(cfg)
// Setup graceful shutdown
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// Handle signals
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigChan
log.Println("Received shutdown signal")
cancel()
}()
// Start server
if err := srv.Start(ctx); err != nil {
log.Printf("Server error: %v", err)
}
// Shutdown server
if err := srv.Shutdown(context.Background()); err != nil {
log.Printf("Shutdown error: %v", err)
}
}