mirror of
https://github.com/tiennm99/coolify.git
synced 2026-09-13 00:18:55 +00:00
Split V5 dashboard behavior into domain controllers and policies, add agent token rotation/revocation, status reconciliation jobs, ingress firewall syncing, and canvas connection APIs. Add migrations for V5 status tracking, server capabilities, resource connection aliases, and revoked agent tokens.
64 lines
2.0 KiB
PHP
64 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\V5\Concerns;
|
|
|
|
use App\Models\Team;
|
|
use App\Models\V5\Application as V5Application;
|
|
use App\Models\V5\Server as V5Server;
|
|
use App\Support\V5\CanvasResourceSerializer;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
trait SerializesCanvasResources
|
|
{
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
protected function serializeApplication(V5Application $application): array
|
|
{
|
|
return app(CanvasResourceSerializer::class)->serializeApplication($application);
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
protected function serializeCaddyIngress(V5Server $server, int $index = 0): array
|
|
{
|
|
return app(CanvasResourceSerializer::class)->serializeCaddyIngress($server, $index);
|
|
}
|
|
|
|
/**
|
|
* @return array<int, array<string, mixed>>
|
|
*/
|
|
protected function caddyIngresses(mixed $currentTeam): array
|
|
{
|
|
if (! $currentTeam instanceof Team) {
|
|
return [];
|
|
}
|
|
|
|
return V5Server::query()
|
|
->where('team_id', $currentTeam->id)
|
|
->orderBy('name')
|
|
->get()
|
|
->filter(fn (V5Server $server) => $server->isIngress())
|
|
->values()
|
|
->map(fn (V5Server $server, int $index) => $this->serializeCaddyIngress($server, $index))
|
|
->all();
|
|
}
|
|
|
|
/**
|
|
* @param array{uuid: string} $selectedProject
|
|
* @param array{uuid: string} $selectedEnvironment
|
|
* @return Builder<V5Application>
|
|
*/
|
|
protected function applicationQuery(Team $currentTeam, array $selectedProject, array $selectedEnvironment): Builder
|
|
{
|
|
return V5Application::query()
|
|
->where('team_id', $currentTeam->id)
|
|
->whereHas('project', fn (Builder $query) => $query
|
|
->where('team_id', $currentTeam->id)
|
|
->where('uuid', $selectedProject['uuid']))
|
|
->whereHas('environment', fn (Builder $query) => $query
|
|
->where('uuid', $selectedEnvironment['uuid']));
|
|
}
|
|
}
|