49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\Services\CreateStatefulServiceUpdateOperation;
|
|
use App\Enums\ServiceType;
|
|
use App\Http\Requests\StoreServiceUpdateRequest;
|
|
use App\Models\Organisation;
|
|
use App\Models\Server;
|
|
use App\Models\Service;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Inertia\Response;
|
|
|
|
class ServiceUpdateController extends Controller
|
|
{
|
|
public function create(Organisation $organisation, Server $server, Service $service): Response
|
|
{
|
|
abort_unless((int) $server->organisation_id === (int) $organisation->id && (int) $service->server_id === (int) $server->id, 404);
|
|
abort_unless(in_array($service->type, [ServiceType::POSTGRES, ServiceType::VALKEY], true), 404);
|
|
|
|
return inertia('services/updates/Create', [
|
|
'server' => $server,
|
|
'service' => $service,
|
|
'backupAvailable' => (bool) ($service->config['backup_enabled'] ?? false),
|
|
]);
|
|
}
|
|
|
|
public function store(
|
|
StoreServiceUpdateRequest $request,
|
|
Organisation $organisation,
|
|
Server $server,
|
|
Service $service,
|
|
CreateStatefulServiceUpdateOperation $createStatefulServiceUpdateOperation,
|
|
): RedirectResponse {
|
|
abort_unless((int) $server->organisation_id === (int) $organisation->id && (int) $service->server_id === (int) $server->id, 404);
|
|
|
|
$createStatefulServiceUpdateOperation->execute(
|
|
service: $service,
|
|
imageDigest: $request->string('image_digest')->toString(),
|
|
backupRequested: $request->boolean('backup_requested'),
|
|
);
|
|
|
|
return redirect()->route('servers.show', [
|
|
'organisation' => $organisation->id,
|
|
'server' => $server->id,
|
|
]);
|
|
}
|
|
}
|