coolify/app/Actions/Service/DeleteService.php

46 lines
1.3 KiB
PHP
Raw Normal View History

2023-12-08 18:32:08 +01:00
<?php
namespace App\Actions\Service;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\Service;
class DeleteService
{
use AsAction;
public function handle(Service $service)
{
2024-01-30 17:16:52 +01:00
$server = data_get($service, 'server');
if ($server->isFunctional()) {
StopService::run($service);
}
$storagesToDelete = collect([]);
2023-12-08 18:32:08 +01:00
2024-01-30 17:16:52 +01:00
$service->environment_variables()->delete();
$commands = [];
foreach ($service->applications()->get() as $application) {
$storages = $application->persistentStorages()->get();
foreach ($storages as $storage) {
$storagesToDelete->push($storage);
2023-12-08 18:32:08 +01:00
}
2024-01-30 17:16:52 +01:00
$application->forceDelete();
}
foreach ($service->databases()->get() as $database) {
$storages = $database->persistentStorages()->get();
foreach ($storages as $storage) {
$storagesToDelete->push($storage);
2023-12-08 18:32:08 +01:00
}
2024-01-30 17:16:52 +01:00
$database->forceDelete();
}
if ($server->isFunctional()) {
foreach ($storagesToDelete as $storage) {
$commands[] = "docker volume rm -f $storage->name";
2024-01-29 16:03:45 +01:00
}
2024-01-30 17:16:52 +01:00
$commands[] = "docker rm -f $service->uuid";
instant_remote_process($commands, $server, false);
2024-01-29 16:03:45 +01:00
}
2024-01-30 17:16:52 +01:00
$service->forceDelete();
2023-12-08 18:32:08 +01:00
}
}