Storage::exists('installed.lock'), 'database' => config('database.default'), ]); } #[Apidoc\Title('测试数据库连接')] #[Apidoc\Url('/api/install/database-test')] #[Apidoc\Method('POST')] public function databaseTest(Request $request): JsonResponse { $data = $request->validate([ 'host' => ['required', 'string'], 'port' => ['required', 'integer'], 'database' => ['required', 'string'], 'username' => ['required', 'string'], 'password' => ['nullable', 'string'], ]); config()->set('database.connections.install_test', [ 'driver' => 'mysql', 'host' => $data['host'], 'port' => $data['port'], 'database' => $data['database'], 'username' => $data['username'], 'password' => $data['password'] ?? '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', ]); DB::connection('install_test')->select('select 1'); return ApiResponse::success(['ok' => true], '数据库连接成功'); } #[Apidoc\Title('执行安装')] #[Apidoc\Url('/api/install/run')] #[Apidoc\Method('POST')] public function run(Request $request): JsonResponse { $data = $request->validate([ 'admin_email' => ['required', 'email'], 'admin_password' => ['required', 'string', 'min:6'], 'fresh' => ['boolean'], ]); Artisan::call('quickquiz:install', [ '--admin-email' => $data['admin_email'], '--admin-password' => $data['admin_password'], '--fresh' => (bool) ($data['fresh'] ?? false), ]); return ApiResponse::success([ 'output' => Artisan::output(), 'installed' => true, ], '安装完成'); } }