<?php

namespace App\Livewire;

use Livewire\Component;
use Illuminate\Support\Facades\Cache;

class GlobalSearchComponent extends Component
{
    /**
     * Component initialization
     */
    public function mount(): void
    {
        // Initialize component state
    }

    /**
     * Render the component
     */
    public function render()
    {
        return view('livewire.global-search-component');
    }

    /**
     * Get cache key for this component
     */
    protected function getCacheKey(string $suffix = ''): string
    {
        return 'thrillwiki.' . class_basename(static::class) . '.' . $suffix;
    }

    /**
     * Remember data with caching
     */
    protected function remember(string $key, $callback, int $ttl = 3600)
    {
        return Cache::remember($this->getCacheKey($key), $ttl, $callback);
    }

    /**
     * Invalidate component cache
     */
    protected function invalidateCache(string $key = null): void
    {
        if ($key) {
            Cache::forget($this->getCacheKey($key));
        } else {
            // Clear all cache for this component
            Cache::flush();
        }
    }
}