Files
coolify/app/Actions/Database/StartDatabase.php
T

64 lines
2.1 KiB
PHP
Raw Normal View History

2024-07-02 13:39:44 +02:00
<?php
namespace App\Actions\Database;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Lorisleiva\Actions\Concerns\AsAction;
use Lorisleiva\Actions\Decorators\JobDecorator;
2024-07-02 13:39:44 +02:00
class StartDatabase
{
use AsAction;
public function configureJob(JobDecorator $job): void
{
$job->onQueue(deployment_queue());
}
2024-07-02 13:39:44 +02:00
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse $database)
{
$server = $database->destination->server;
if (! $server->isFunctional()) {
return 'Server is not functional';
}
switch ($database->getMorphClass()) {
case StandalonePostgresql::class:
2024-07-02 13:39:44 +02:00
$activity = StartPostgresql::run($database);
break;
case StandaloneRedis::class:
2024-07-02 13:39:44 +02:00
$activity = StartRedis::run($database);
break;
case StandaloneMongodb::class:
2024-07-02 13:39:44 +02:00
$activity = StartMongodb::run($database);
break;
case StandaloneMysql::class:
2024-07-02 13:39:44 +02:00
$activity = StartMysql::run($database);
break;
case StandaloneMariadb::class:
2024-07-02 13:39:44 +02:00
$activity = StartMariadb::run($database);
break;
case StandaloneKeydb::class:
2024-07-02 13:39:44 +02:00
$activity = StartKeydb::run($database);
break;
case StandaloneDragonfly::class:
2024-07-02 13:39:44 +02:00
$activity = StartDragonfly::run($database);
break;
case StandaloneClickhouse::class:
2024-07-02 13:39:44 +02:00
$activity = StartClickhouse::run($database);
break;
}
if ($database->is_public && $database->public_port) {
StartDatabaseProxy::dispatch($database);
2024-07-02 13:39:44 +02:00
}
return $activity;
}
}