Add Wildberries product fetching and rate limiting functionality
This commit is contained in:
		@@ -8,9 +8,12 @@ import (
 | 
			
		||||
	"google.golang.org/grpc"
 | 
			
		||||
	"net"
 | 
			
		||||
	"os"
 | 
			
		||||
	"sipro-mps/internal/config"
 | 
			
		||||
	"sipro-mps/internal/marketplace"
 | 
			
		||||
	ozon "sipro-mps/internal/ozon/products"
 | 
			
		||||
	"sipro-mps/internal/redis"
 | 
			
		||||
	"sipro-mps/internal/tasks/client"
 | 
			
		||||
	wb "sipro-mps/internal/wb/products"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func logMessage(level string, format string, a ...interface{}) {
 | 
			
		||||
@@ -50,7 +53,11 @@ func createGrpcServer(pool *pgxpool.Pool) {
 | 
			
		||||
		fmt.Printf("failed to register Ozon Products gRPC server: %v\n", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = wb.RegisterAdapterGRPC(grpcServer, *repo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Printf("failed to register Wildberries 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...")
 | 
			
		||||
@@ -61,26 +68,64 @@ func createGrpcServer(pool *pgxpool.Pool) {
 | 
			
		||||
	fmt.Println("gRPC server created.")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	// Initializing the dotenv file
 | 
			
		||||
func initDotenv() error {
 | 
			
		||||
	err := godotenv.Load()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logMessage("error", "Error loading .env file: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
		return fmt.Errorf("error loading .env file: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	logMessage("info", "Dotenv file loaded successfully. 🌱")
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func initRedisClient(ctx context.Context) error {
 | 
			
		||||
	err := redis.InitClient(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error initializing Redis client: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	//defer redis.CloseClient()
 | 
			
		||||
	logMessage("info", "Redis client initialized successfully. 🟥")
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
func initRedisLocker() error {
 | 
			
		||||
	err := redis.InitLocker()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error initializing Redis locker: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	logMessage("info", "Redis locker initialized successfully. 🟥")
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	err := initDotenv()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logMessage("error", "Failed to load .env file: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	logMessage("info", "Starting the SIPRO Marketplace Server... 🚀1")
 | 
			
		||||
	ctx := context.Background()
 | 
			
		||||
 | 
			
		||||
	// Initializing the Redis client
 | 
			
		||||
	err = redis.InitClient(ctx)
 | 
			
		||||
	err = initRedisClient(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logMessage("error", "Failed to initialize Redis client: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer redis.CloseClient()
 | 
			
		||||
	logMessage("info", "Redis client initialized successfully. 🟥")
 | 
			
		||||
 | 
			
		||||
	// Initializing the Redis locker
 | 
			
		||||
	err = initRedisLocker()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logMessage("error", "Failed to initialize Redis locker: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer redis.CloseLocker()
 | 
			
		||||
	cfg, err := config.LoadConfig()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logMessage("error", "Failed to load configuration: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	client.InitClient(*cfg.Redis)
 | 
			
		||||
	// Initializing pgx connection
 | 
			
		||||
	dbpool, err := pgxpool.New(ctx, os.Getenv("POSTGRES_URL"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -88,11 +133,6 @@ func main() {
 | 
			
		||||
		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)
 | 
			
		||||
//}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user