<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;

class PlatformSetting extends Model
{
    protected $primaryKey = 'key';
    public $incrementing = false;
    protected $keyType = 'string';

    protected $fillable = ['key', 'value'];

    protected static function booted(): void
    {
        // أي تعديل على إعداد لازم يمسح الكاش تبعه فوراً
        static::saved(function (PlatformSetting $setting) {
            Cache::forget('platform_setting:' . $setting->key);
        });
    }

    /**
     * جلب قيمة إعداد (مع كاش لمدة ساعة لتقليل ضغط قاعدة البيانات).
     */
    public static function get(string $key, mixed $default = null): mixed
    {
        return Cache::remember('platform_setting:' . $key, 3600, function () use ($key, $default) {
            $setting = static::find($key);
            return $setting?->value ?? $default;
        });
    }

    public static function set(string $key, mixed $value): void
    {
        static::updateOrCreate(['key' => $key], ['value' => (string) $value]);
    }
}
