<?php

namespace App\Services\Documents;

use App\Models\DocumentSetting;
use Illuminate\Support\Facades\Cache;

class DocumentSettings
{
    private const CACHE_KEY = 'document_settings_singleton_v1';

    public function get(): DocumentSetting
    {
        return Cache::remember(self::CACHE_KEY, 300, fn () => DocumentSetting::instance());
    }

    public function refresh(): DocumentSetting
    {
        Cache::forget(self::CACHE_KEY);

        return $this->get();
    }

    public function fresh(): DocumentSetting
    {
        return $this->refresh();
    }

    /**
     * Convenience accessor for custom defaults.
     *
     * @return array<string,mixed>
     */
    public function customDefaults(): array
    {
        $settings = $this->get();

        return is_array($settings->custom_defaults ?? null) ? $settings->custom_defaults : [];
    }
}
