<?php

namespace App\Observers;

use App\Models\RouteSlug;

/**
 * PRC-554 — Slug değişince Cache + Laravel route cache invalidate.
 * Boot'ta okunan slug map'i fresh kalsın diye.
 */
class RouteSlugObserver
{
    public function saved(RouteSlug $slug): void
    {
        $this->invalidate();
    }

    public function deleted(RouteSlug $slug): void
    {
        $this->invalidate();
    }

    protected function invalidate(): void
    {
        RouteSlug::flushCache();
        // Laravel route cache (varsa) — sonraki request register fazını yeniden çalıştırsın.
        try {
            \Illuminate\Support\Facades\Artisan::call('route:clear');
        } catch (\Throwable $e) {
            // No-op: dev'de route cache zaten yok.
        }
    }
}
