<?php

namespace App\Services\Install;

use Illuminate\Support\Facades\Storage;

/**
 * Kurulum durumu (PRC-867).
 *
 * Kurulum tamamlanınca `storage/app/installed` kilit dosyası yazılır; guard
 * middleware bunu okur (DB'ye dokunmaz — fresh install'da DB migrate edilmemiş
 * olabilir). Kilit varsa /install bloke, yoksa tüm web istekleri /install'a yönlenir.
 */
class InstallService
{
    private const LOCK = 'installed';

    public function isInstalled(): bool
    {
        return Storage::disk('local')->exists(self::LOCK);
    }

    public function markInstalled(array $meta = []): void
    {
        Storage::disk('local')->put(self::LOCK, json_encode(array_merge([
            'installed_at' => now()->toIso8601String(),
            'version' => config('app.version'),
        ], $meta), JSON_PRETTY_PRINT));
    }
}
