Files
lucent-laravel/src/Setup/Step/DatabaseSetupStep.php
T

60 lines
1.6 KiB
PHP
Raw Normal View History

2024-09-06 23:30:12 +03:00
<?php
namespace Lucent\Setup\Step;
use Illuminate\Database\QueryException;
2024-09-07 13:22:58 +03:00
use Lucent\Database\Database;
2024-09-06 23:30:12 +03:00
use Lucent\Setup\Data\SetupStep;
class DatabaseSetupStep implements IStep
{
public function __invoke(): SetupStep
{
$name = "Database Connection";
2024-09-07 13:22:58 +03:00
$databaseConnectionName = config("lucent.database");
2024-09-06 23:30:12 +03:00
2024-09-11 16:21:51 +03:00
2024-09-07 13:22:58 +03:00
$databaseConfig = config('database.connections.'.$databaseConnectionName);
2024-09-11 16:21:51 +03:00
2024-09-07 13:22:58 +03:00
if (empty($databaseConfig)) {
2024-09-06 23:30:12 +03:00
$instructions = <<<EOD
2024-09-07 13:22:58 +03:00
# You need to setup a database connection for $databaseConnectionName in database.php config. You can choose either sqlite or pgsql
2024-09-06 23:30:12 +03:00
# example:
'connections' => [
2024-09-07 13:22:58 +03:00
'$databaseConnectionName' => [
2024-09-06 23:30:12 +03:00
'driver' => 'sqlite',
'url' => env('LUCENT_DATABASE_URL'),
'database' => env('LUCENT_DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
EOD;
return SetupStep::makeFail($name, $instructions);
}
2024-09-11 16:21:51 +03:00
if(!in_array($driver = $databaseConfig["driver"],["sqlite","pgsql"])){
$instructions = <<<EOD
You can choose either sqlite or pgsql. You current config is: $driver
EOD;
return SetupStep::makeFail($name, $instructions);
}
2024-09-06 23:30:12 +03:00
try {
2024-09-07 13:22:58 +03:00
Database::make()->table("records")->get();
} catch (QueryException $e) {
2024-09-06 23:30:12 +03:00
$instructions = <<<EOD
# Make sure you run:
php artisan lucent:setup-db
EOD;
return SetupStep::makeFail($name, $instructions);
}
return SetupStep::makeSuccess($name, "Database Connection successfully created");
}
}