<?php

declare(strict_types=1);

namespace App\Domain\WebServer\Adapters;

/**
 * Nginx + PHP-FPM (Unix socket veya TCP).
 *
 * İki mod:
 *   - standalone: Nginx tek başına, .htaccess yok (rewrite kuralları elle yazılır)
 *   - reverse-proxy: Nginx önde, Apache arkada (.htaccess Apache okur)
 *
 * Default: standalone. Phase 2'de reverse-proxy mode opsiyonel olarak.
 */
class NginxAdapter extends AbstractWebServerAdapter
{
    public function name(): string
    {
        return 'Nginx';
    }

    public function key(): string
    {
        return 'nginx';
    }

    public function description(): string
    {
        return 'Düşük bellek kullanımıyla yüksek eşzamanlı bağlantı destekler. '
            . 'Statik içerik, reverse proxy ve load balancing için optimum.';
    }

    public function packageName(): string
    {
        return 'nginx';
    }

    public function serviceName(): string
    {
        return 'nginx';
    }

    public function strengths(): array
    {
        return [
            'Düşük RAM, yüksek concurrency',
            'Statik içerik için lider',
            'Reverse proxy + load balancer',
            'HTTP/2 + HTTP/3 desteği',
        ];
    }

    public function performanceScore(): int
    {
        return 85;
    }

    protected function binaryPaths(): array
    {
        return [
            '/usr/sbin/nginx',
            '/usr/local/nginx/sbin/nginx',
        ];
    }
}
