first commit

This commit is contained in:
2025-04-13 20:27:20 +03:00
commit b20847c998
21 changed files with 1327 additions and 0 deletions

102
cmd/server/main.go Normal file
View File

@@ -0,0 +1,102 @@
package main
import (
adapters2 "Sipro-Marketplaces/internal/test/adapters"
"context"
"database/sql"
"log"
"os"
"os/signal"
"sync"
"syscall"
"Sipro-Marketplaces/internal/config"
"Sipro-Marketplaces/internal/db"
"github.com/gofiber/fiber/v2"
"google.golang.org/grpc"
)
type Server struct {
httpApp *fiber.App
grpcServer *grpc.Server
db *sql.DB
}
func NewServer(cfg config.Config) (*Server, error) {
dbConn, err := db.NewConnection(cfg.DB)
if err != nil {
return nil, err
}
httpApp := fiber.New()
//adapters.RegisterHTTPRoutes(httpApp, testService)
kal := httpApp.Group("/test")
adapters2.RegisterRouter(&kal)
grpcServer := grpc.NewServer()
return &Server{
httpApp: httpApp,
grpcServer: grpcServer,
db: dbConn,
}, nil
}
func (s *Server) Start(cfg config.Config) error {
var wg sync.WaitGroup
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
wg.Add(1)
go func() {
defer wg.Done()
log.Printf("Starting HTTP server on %s", cfg.HTTP)
if err := s.httpApp.Listen(cfg.HTTP); err != nil {
log.Printf("HTTP server failed: %v", err)
cancel()
}
}()
wg.Add(1)
go func() {
defer wg.Done()
log.Printf("Starting gRPC server on %s", cfg.GRPC)
}()
wg.Add(1)
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
select {
case <-quit:
log.Println("Shutting down...")
case <-ctx.Done():
log.Println("Context cancelled, shutting down...")
}
s.shutdown()
wg.Wait()
return nil
}
func (s *Server) shutdown() {
log.Println("Initiating graceful shutdown...")
if err := s.httpApp.Shutdown(); err != nil {
log.Printf("Failed to stop HTTP: %v", err)
}
s.grpcServer.GracefulStop()
if err := s.db.Close(); err != nil {
log.Printf("Failed to close DB: %v", err)
}
log.Println("Shutdown complete")
}
func main() {
cfg := config.Load()
server, err := NewServer(cfg)
if err != nil {
log.Fatalf("Failed to initialize server: %v", err)
}
if err := server.Start(cfg); err != nil {
log.Fatalf("Server failed: %v", err)
}
}