@props([ 'lastDeploymentInfo' => null, 'lastDeploymentLink' => null, 'resource' => null, 'projects' => null, 'environments' => null, ]) @php use App\Models\Project; // Use passed props if available, otherwise query (backwards compatible) $projects = $projects ?? Project::ownedByCurrentTeamCached(); $environments = $environments ?? $resource->environment->project ->environments() ->select('id', 'uuid', 'name', 'project_id') ->with([ 'applications:id,uuid,name,environment_id', 'services:id,uuid,name,environment_id', 'postgresqls:id,uuid,name,environment_id', 'redis:id,uuid,name,environment_id', 'mongodbs:id,uuid,name,environment_id', 'mysqls:id,uuid,name,environment_id', 'mariadbs:id,uuid,name,environment_id', 'keydbs:id,uuid,name,environment_id', 'dragonflies:id,uuid,name,environment_id', 'clickhouses:id,uuid,name,environment_id', ]) ->get(); $currentProjectUuid = data_get($resource, 'environment.project.uuid'); $currentEnvironmentUuid = data_get($resource, 'environment.uuid'); $currentResourceUuid = data_get($resource, 'uuid'); $resourceUuid = data_get($resource, 'uuid'); $resourceType = $resource->getMorphClass(); $isApplication = $resourceType === 'App\Models\Application'; $isService = $resourceType === 'App\Models\Service'; $isDatabase = str_contains($resourceType, 'Database') || str_contains($resourceType, 'Standalone'); $hasMultipleServers = $isApplication && method_exists($resource, 'additional_servers') && ($resource->relationLoaded('additional_servers') ? $resource->additional_servers->count() > 0 : ($resource->additional_servers_count ?? 0) > 0); $serverName = $hasMultipleServers ? null : data_get($resource, 'destination.server.name'); $routeParams = [ 'project_uuid' => $currentProjectUuid, 'environment_uuid' => $currentEnvironmentUuid, ]; if ($isApplication) { $routeParams['application_uuid'] = $resourceUuid; } elseif ($isService) { $routeParams['service_uuid'] = $resourceUuid; } else { $routeParams['database_uuid'] = $resourceUuid; } @endphp