<?php

namespace App\Logging;

use Monolog\LogRecord;
use Monolog\Processor\ProcessorInterface;

/**
 * Monolog processor — `Log::*` context'inde unutulan hassas alanları
 * son satır filtresi olarak yakalar.
 *
 * `config/logging.php` içinde `tap` veya `processors` ile bağlanır.
 * Call-site `SensitiveDataRedactor::redact()` zaten çağırmışsa idempotent —
 * tekrar gezmek zarar vermez.
 */
final class SensitiveContextProcessor implements ProcessorInterface
{
    public function __invoke(LogRecord $record): LogRecord
    {
        if (empty($record->context)) {
            return $record;
        }

        $redactedContext = SensitiveDataRedactor::redact($record->context);

        if ($redactedContext === $record->context) {
            return $record;
        }

        return $record->with(context: $redactedContext);
    }
}
