Add redis connection check to installer (#556)

This commit is contained in:
Boy132 2024-08-22 22:20:11 +02:00 committed by GitHub
parent 818781ca66
commit 40810877e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 32 additions and 7 deletions

View File

@ -103,6 +103,9 @@ class PanelInstaller extends SimplePage implements HasForms
$variables = array_get($inputs, 'env');
$this->writeToEnvironment($variables);
// Clear config cache
Artisan::call('config:clear');
// Run migrations
Artisan::call('migrate', [
'--force' => true,

View File

@ -7,7 +7,7 @@ use Filament\Forms\Components\Wizard\Step;
use Filament\Forms\Get;
use Filament\Notifications\Notification;
use Filament\Support\Exceptions\Halt;
use Illuminate\Database\DatabaseManager;
use Illuminate\Support\Facades\DB;
use PDOException;
class DatabaseStep
@ -61,9 +61,6 @@ class DatabaseStep
->afterValidation(function (Get $get) {
$driver = $get('env.DB_CONNECTION');
if ($driver !== 'sqlite') {
/** @var DatabaseManager $database */
$database = app(DatabaseManager::class);
try {
config()->set('database.connections._panel_install_test', [
'driver' => $driver,
@ -77,7 +74,7 @@ class DatabaseStep
'strict' => true,
]);
$database->connection('_panel_install_test')->getPdo();
DB::connection('_panel_install_test')->getPdo();
} catch (PDOException $exception) {
Notification::make()
->title('Database connection failed')
@ -85,7 +82,7 @@ class DatabaseStep
->danger()
->send();
$database->disconnect('_panel_install_test');
DB::disconnect('_panel_install_test');
throw new Halt('Database connection failed');
}

View File

@ -2,8 +2,13 @@
namespace App\Filament\Pages\Installer\Steps;
use Exception;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Wizard\Step;
use Filament\Forms\Get;
use Filament\Notifications\Notification;
use Filament\Support\Exceptions\Halt;
use Illuminate\Support\Facades\Redis;
class RedisStep
{
@ -37,6 +42,26 @@ class RedisStep
->password()
->revealable()
->default(config('database.redis.default.password')),
]);
])
->afterValidation(function (Get $get) {
try {
config()->set('database.redis._panel_install_test', [
'host' => $get('env.REDIS_HOST'),
'username' => $get('env.REDIS_USERNAME'),
'password' => $get('env.REDIS_PASSWORD'),
'port' => $get('env.REDIS_PORT'),
]);
Redis::connection('_panel_install_test')->command('ping');
} catch (Exception $exception) {
Notification::make()
->title('Redis connection failed')
->body($exception->getMessage())
->danger()
->send();
throw new Halt('Redis connection failed');
}
});
}
}