Refactor to remove slices and environments, replace with instances.

This commit is contained in:
2025-09-15 12:19:13 +01:00
parent a91780d1d5
commit 65d3142d03
24 changed files with 454 additions and 290 deletions

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
use App\Enums\ServerStatus;
use App\Models\Application;
use App\Models\Organisation;
use Illuminate\Http\Request;
@@ -9,7 +11,7 @@ class ApplicationController extends Controller
{
public function index(Request $request)
{
$organisation = Organisation::with('applications')->findOrFail($request->route('organisation'));
$organisation = Organisation::with('applications.instances.server')->findOrFail($request->route('organisation'));
return inertia('applications/Index', [
'applications' => $organisation->applications,
@@ -19,7 +21,18 @@ class ApplicationController extends Controller
public function show(Request $request)
{
$id = $request->route('application');
$application = Application::with(['instances.server', 'organisation'])->findOrFail($id);
return inertia('applications/Show');
return inertia('applications/Show', [
'application' => $application,
'servers' => inertia()->optional(function () use ($application) {
return $application
->organisation
?->servers()
->where('status', ServerStatus::ACTIVE)
->with('services')
->get() ?? [];
}),
]);
}
}

View File

@@ -1,29 +0,0 @@
<?php
namespace App\Http\Controllers;
use App\Enums\ServerStatus;
use App\Models\Environment;
use Illuminate\Http\Request;
class EnvironmentController extends Controller
{
public function show(Request $request)
{
$id = $request->route('environment');
$environment = Environment::with('application')->findOrFail($id);
return inertia('environments/Show', [
'environment' => $environment,
'servers' => inertia()->optional(function () use ($environment) {
return $environment
->application
?->organisation
?->servers()
->where('status', ServerStatus::ACTIVE)
->with('services')
->get() ?? [];
}),
]);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Http\Controllers;
use App\Actions\Applications\CreateInstance;
use App\Models\Application;
use App\Models\Server;
use Illuminate\Http\Request;
class InstanceController extends Controller
{
public function store(Request $request, Application $application)
{
$validated = $request->validate([
'server_id' => 'required|exists:servers,id',
'branch' => 'required|string|max:255',
'config' => 'sometimes|array',
]);
$server = Server::findOrFail($validated['server_id']);
$instance = (new CreateInstance())->execute(
$application,
$server,
$validated['branch'],
$validated['config'] ?? []
);
return redirect()
->route('applications.show', [
'organisation' => $application->organisation_id,
'application' => $application->id
])
->with('success', 'Instance created successfully');
}
}