geoIpDatabaseService->updateDatabase(true); if ($result['success']) { return $this->success( 'settings.geoip.update_success', $result['data'] ?? null ); } return $this->error( $this->mapStatusToMessageKey((string) $result['status']), $this->mapStatusToHttpCode((string) $result['status']), $result['message'] ?? null ); } /** * Service 상태 코드를 i18n 메시지 키로 매핑합니다. * * @param string $status Service 상태 코드 * @return string i18n 키 */ private function mapStatusToMessageKey(string $status): string { return match ($status) { 'missing_license_key' => 'settings.geoip.license_key_missing', 'unauthorized' => 'settings.geoip.license_key_invalid', 'connection_failed' => 'settings.geoip.connection_failed', default => 'settings.geoip.update_failed', }; } /** * Service 상태 코드를 HTTP 상태 코드로 매핑합니다. * * @param string $status Service 상태 코드 * @return int HTTP 상태 코드 */ private function mapStatusToHttpCode(string $status): int { return match ($status) { 'missing_license_key' => 400, 'unauthorized' => 401, default => 500, }; } }