2023-12-08 17:32:08 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Actions\Service;
|
|
|
|
|
|
2024-09-23 10:10:46 +00:00
|
|
|
use App\Models\Service;
|
2023-12-08 17:32:08 +00:00
|
|
|
|
|
|
|
|
class DeleteService
|
|
|
|
|
{
|
2026-08-20 09:10:14 +00:00
|
|
|
public function cleanupRemote(Service $service, bool $deleteVolumes, bool $deleteConnectedNetworks, bool $deleteConfigurations): void
|
2023-12-08 17:32:08 +00:00
|
|
|
{
|
2026-08-20 09:10:14 +00:00
|
|
|
$server = data_get($service, 'server');
|
|
|
|
|
if ($deleteVolumes && $server->isFunctional()) {
|
|
|
|
|
$commands = [];
|
|
|
|
|
foreach ($service->applications()->get() as $application) {
|
|
|
|
|
foreach ($application->persistentStorages()->get() as $storage) {
|
2026-03-26 10:06:30 +00:00
|
|
|
$commands[] = 'docker volume rm -f '.escapeshellarg($storage->name);
|
2024-08-09 00:11:42 +00:00
|
|
|
}
|
2023-12-08 17:32:08 +00:00
|
|
|
}
|
2024-01-30 16:38:07 +00:00
|
|
|
foreach ($service->databases()->get() as $database) {
|
2026-08-20 09:10:14 +00:00
|
|
|
foreach ($database->persistentStorages()->get() as $storage) {
|
|
|
|
|
$commands[] = 'docker volume rm -f '.escapeshellarg($storage->name);
|
|
|
|
|
}
|
2024-01-29 15:03:45 +00:00
|
|
|
}
|
2026-08-20 09:10:14 +00:00
|
|
|
foreach ($commands as $command) {
|
|
|
|
|
instant_remote_process([$command], $server, false);
|
2024-02-14 14:14:06 +00:00
|
|
|
}
|
2026-08-20 09:10:14 +00:00
|
|
|
}
|
2024-08-07 23:02:48 +00:00
|
|
|
|
2026-08-20 09:10:14 +00:00
|
|
|
if ($deleteConnectedNetworks) {
|
|
|
|
|
$service->deleteConnectedNetworks();
|
|
|
|
|
}
|
|
|
|
|
if ($deleteConfigurations) {
|
|
|
|
|
$service->deleteConfigurations();
|
|
|
|
|
}
|
|
|
|
|
instant_remote_process(["docker rm -f $service->uuid"], $server, throwError: false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deleteLocal(Service $service): void
|
|
|
|
|
{
|
|
|
|
|
foreach ($service->applications()->get() as $application) {
|
|
|
|
|
$application->forceDelete();
|
|
|
|
|
}
|
|
|
|
|
foreach ($service->databases()->get() as $database) {
|
|
|
|
|
$database->forceDelete();
|
|
|
|
|
}
|
|
|
|
|
foreach ($service->scheduled_tasks as $task) {
|
|
|
|
|
$task->delete();
|
2024-01-29 15:03:45 +00:00
|
|
|
}
|
2026-08-20 09:10:14 +00:00
|
|
|
$service->environment_variables()->delete();
|
|
|
|
|
$service->tags()->detach();
|
|
|
|
|
$service->forceDelete();
|
2023-12-08 17:32:08 +00:00
|
|
|
}
|
2024-08-09 00:15:40 +00:00
|
|
|
}
|