Use Dokploy projects in dashboard widget
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-29 10:40:10 +01:00
parent b8bb7926c0
commit 78af7838bf
5 changed files with 581 additions and 50 deletions

View File

@@ -40,6 +40,37 @@ class DokployClient
}, 30);
}
public function projects(): array
{
return $this->cached($this->projectsCacheKey(), function () {
$projects = $this->get('/project.all');
return is_array($projects) ? $projects : [];
}, 60);
}
public function findProject(string $projectIdOrName): ?array
{
$projects = $this->projects();
foreach ($projects as $project) {
if (Arr::get($project, 'projectId') === $projectIdOrName) {
return $project;
}
}
foreach ($projects as $project) {
if (
Arr::get($project, 'name') === $projectIdOrName
|| Arr::get($project, 'projectName') === $projectIdOrName
) {
return $project;
}
}
return null;
}
public function recentDeployments(string $applicationId, int $limit = 5): array
{
return $this->cached($this->deploymentCacheKey($applicationId), function () use ($applicationId, $limit) {
@@ -321,6 +352,11 @@ class DokployClient
return "dokploy.compose.deployments.{$composeId}";
}
protected function projectsCacheKey(): string
{
return 'dokploy.projects';
}
protected function forgetApplicationCaches(string $applicationId): void
{
Cache::forget($this->applicationCacheKey($applicationId));