Use Dokploy projects in dashboard widget

This commit is contained in:
Codex Agent
2026-01-29 10:40:10 +01:00
parent 061ad6cf24
commit 779dd520ad
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));