Files
Sipro-Marketplaces/cmd/server/main.go

99 lines
2.4 KiB
Go
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"context"
"fmt"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/joho/godotenv"
"google.golang.org/grpc"
"net"
"os"
"sipro-mps/internal/marketplace"
ozon "sipro-mps/internal/ozon/products"
"sipro-mps/internal/redis"
)
func logMessage(level string, format string, a ...interface{}) {
const (
green = "\033[32m"
red = "\033[31m"
yellow = "\033[33m"
blue = "\033[34m"
reset = "\033[0m"
)
switch level {
case "info":
fmt.Printf("%s✅ [INFO]%s %s %s\n", green, reset, fmt.Sprintf(format, a...), "")
case "error":
fmt.Printf("%s❌ [ERROR]%s %s %s\n", red, reset, fmt.Sprintf(format, a...), "🚨")
default:
fmt.Printf("%s[LOG]%s %s\n", blue, reset, fmt.Sprintf(format, a...))
}
}
func createGrpcServer(pool *pgxpool.Pool) {
lis, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Printf("failed to listen: %v\n", err)
return
}
grpcServer := grpc.NewServer()
repo, err := marketplace.RegisterAdapterGRPC(grpcServer, pool)
if err != nil {
fmt.Printf("failed to register gRPC server: %v\n", err)
return
}
_, err = ozon.RegisterAdapterGRPC(grpcServer, *repo)
if err != nil {
fmt.Printf("failed to register Ozon Products gRPC server: %v\n", err)
return
}
fmt.Println("gRPC server registered successfully.")
// Start serving gRPC requests
fmt.Println("gRPC server is starting on port 8080...")
if err := grpcServer.Serve(lis); err != nil {
fmt.Printf("failed to serve: %v\n", err)
}
fmt.Println("gRPC server created.")
}
func main() {
// Initializing the dotenv file
err := godotenv.Load()
if err != nil {
logMessage("error", "Error loading .env file: %v", err)
return
}
logMessage("info", "Dotenv file loaded successfully. 🌱")
ctx := context.Background()
// Initializing the Redis client
err = redis.InitClient(ctx)
if err != nil {
logMessage("error", "Failed to initialize Redis client: %v", err)
return
}
defer redis.CloseClient()
logMessage("info", "Redis client initialized successfully. 🟥")
// Initializing pgx connection
dbpool, err := pgxpool.New(ctx, os.Getenv("POSTGRES_URL"))
if err != nil {
logMessage("error", "Failed to connect to PostgreSQL: %v", err)
return
}
defer dbpool.Close()
logMessage("info", "Connected to PostgreSQL successfully. 🐘")
createGrpcServer(dbpool)
}
//for _, item := range items {
// //logMessage("info", "Product ID: %s, Name: %s, Price: %d", item.Price, item.Name, item.Price)
//}