<?php

namespace Shopping\Sphinx;

use PDO;
use PDOException;

class SphinxConnection {
    private PDO $pdo;

    public function __construct(
        string $host,
        int    $port,
        string $username = '',
        string $password = ''
    ) {
        $dsn = "mysql:host={$host};port={$port}";

        try {
            $this->pdo = new PDO(
                $dsn,
                $username,
                $password,
                [
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                    PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => false,
                ]
            );
        } catch (PDOException $e) {
            throw new \RuntimeException(
                'Failed to connect to Sphinx: ' . $e->getMessage()
            );
        }
    }

    public function getPdo(): PDO {
        return $this->pdo;
    }
}
