<?php

namespace Acms\Services\Setup;

use Acms\Services\Facades\Application;
use Acms\Services\Facades\Database;
use SQL;
use Exception;

/**
 * インストール済みか（blog_id=1 が存在するか）を判定する。
 *
 * 旧 AbstractSetup::isInstalled のロジックを、middleware / Action から使える単独のクエリサービスへ
 * 切り出したもの。DB 未設定・未接続でも例外を握って false を返す（fresh install で安全）。
 */
final class InstallStatus
{
    public function isInstalled(): bool
    {
        try {
            $dsn = dsn();
            if ($dsn['name'] === '') {
                return false;
            }

            $SQL = SQL::newSelect('blog');
            $SQL->addWhereOpr('blog_id', 1);
            if (Database::query($SQL->get(dsn()), 'row')) {
                return true;
            }

            Application::checkException();
        } catch (Exception $e) {
            Application::deleteExceptionStack();
        }

        return false;
    }
}
