This commit is contained in:
Saeed Vaziry
2024-10-13 12:33:12 +02:00
parent 386d8e73a7
commit 224e0ac2b0
49 changed files with 3668 additions and 766 deletions

View File

@ -57,6 +57,15 @@ class Queue extends AbstractModel
QueueStatus::STOPPED => 'gray',
];
public static function boot(): void
{
parent::boot();
static::deleting(function (Queue $queue) {
$queue->server->processManager()->handler()->delete($queue->id, $queue->site_id);
});
}
public function getServerIdAttribute(int $value): int
{
if (! $value) {

View File

@ -18,6 +18,7 @@
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
@ -117,26 +118,33 @@ public static function boot(): void
parent::boot();
static::deleting(function (Server $server) {
$server->sites()->each(function (Site $site) {
$site->delete();
});
$server->provider()->delete();
$server->logs()->each(function (ServerLog $log) {
$log->delete();
});
$server->services()->delete();
$server->databases()->delete();
$server->databaseUsers()->delete();
$server->firewallRules()->delete();
$server->cronJobs()->delete();
$server->queues()->delete();
$server->daemons()->delete();
$server->sshKeys()->detach();
if (File::exists($server->sshKey()['public_key_path'])) {
File::delete($server->sshKey()['public_key_path']);
}
if (File::exists($server->sshKey()['private_key_path'])) {
File::delete($server->sshKey()['private_key_path']);
DB::beginTransaction();
try {
$server->sites()->each(function (Site $site) {
$site->delete();
});
$server->logs()->each(function (ServerLog $log) {
$log->delete();
});
$server->services()->delete();
$server->databases()->delete();
$server->databaseUsers()->delete();
$server->firewallRules()->delete();
$server->cronJobs()->delete();
$server->queues()->delete();
$server->daemons()->delete();
$server->sshKeys()->detach();
if (File::exists($server->sshKey()['public_key_path'])) {
File::delete($server->sshKey()['public_key_path']);
}
if (File::exists($server->sshKey()['private_key_path'])) {
File::delete($server->sshKey()['private_key_path']);
}
$server->provider()->delete();
DB::commit();
} catch (\Throwable $e) {
DB::rollBack();
throw $e;
}
});
}

View File

@ -5,7 +5,11 @@
use App\Actions\Service\Manage;
use App\Enums\ServiceStatus;
use App\Exceptions\ServiceInstallationFailed;
use App\SSH\Services\Database\Database as DatabaseAlias;
use App\SSH\Services\PHP\PHP as PHPAlias;
use App\SSH\Services\ProcessManager\ProcessManager;
use App\SSH\Services\ServiceInterface;
use App\SSH\Services\WebServer\WebServer as WebServerAlias;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Str;
@ -76,6 +80,9 @@ public function server(): BelongsTo
return $this->belongsTo(Server::class);
}
/**
* @return ProcessManager|DatabaseAlias|PHPAlias|WebServerAlias
*/
public function handler(): ServiceInterface
{
$handler = config('core.service_handlers')[$this->name];

View File

@ -88,7 +88,7 @@ public static function boot(): void
parent::boot();
static::deleting(function (Site $site) {
$site->queues()->delete();
$site->queues()->each(fn (Queue $queue) => $queue->delete());
$site->ssls()->delete();
$site->deployments()->delete();
$site->deploymentScript()->delete();