mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Add state to comment, webhook bug fixing
This commit is contained in:
@@ -66,7 +66,7 @@ class Deployment extends Model
|
||||
])
|
||||
->addRule('status', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'The deployment status. Possible values are "processing", "building", "pending", "ready", and "failed".',
|
||||
'description' => 'The deployment status. Possible values are "processing", "building", "waiting", "ready", and "failed".',
|
||||
'default' => '',
|
||||
'example' => 'ready',
|
||||
])
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace Appwrite\Vcs;
|
||||
|
||||
use Utopia\Database\Document;
|
||||
|
||||
class Comment
|
||||
{
|
||||
protected string $statePrefix = '[appwrite]: #';
|
||||
|
||||
/**
|
||||
* @var mixed[] $builds
|
||||
*/
|
||||
protected array $builds = [];
|
||||
|
||||
public function isEmpty(): bool
|
||||
{
|
||||
return \count($this->builds) === 0;
|
||||
}
|
||||
|
||||
public function addBuild(Document $project, Document $function, string $buildStatus, string $deploymentId): void
|
||||
{
|
||||
// Unique index
|
||||
$id = $project->getId() . '_' . $function->getId();
|
||||
|
||||
$this->builds[$id] = [
|
||||
'projectName' => $project->getAttribute('name'),
|
||||
'projectId' => $project->getId(),
|
||||
'functionName' => $function->getAttribute('name'),
|
||||
'functionId' => $function->getId(),
|
||||
'buildStatus' => $buildStatus,
|
||||
'deploymentId' => $deploymentId
|
||||
];
|
||||
}
|
||||
|
||||
public function generateComment(): string
|
||||
{
|
||||
$json = \json_encode($this->builds);
|
||||
|
||||
$text = $this->statePrefix . \base64_encode($json) . "\n\n";
|
||||
|
||||
$projects = [];
|
||||
|
||||
foreach ($this->builds as $id => $build) {
|
||||
if (!\array_key_exists($build['projectId'], $projects)) {
|
||||
$projects[$build['projectId']] = [
|
||||
'name' => $build['projectName'],
|
||||
'functions' => []
|
||||
];
|
||||
}
|
||||
|
||||
$projects[$build['projectId']]['functions'][$build['functionId']] = [
|
||||
'name' => $build['functionName'],
|
||||
'status' => $build['buildStatus'],
|
||||
'deploymentId' => $build['deploymentId']
|
||||
];
|
||||
}
|
||||
|
||||
$text .= "> Bored? Read random [Wikipedia Page](https://en.wikipedia.org/wiki/Special:Random).\n\n";
|
||||
|
||||
foreach ($projects as $projectId => $project) {
|
||||
$text .= "### {$project['name']} `{$projectId}`\n\n";
|
||||
$text .= "| Function | Status | Execute |\n";
|
||||
$text .= "| :- | :- | :- |\n";
|
||||
|
||||
foreach ($project['functions'] as $functionId => $function) {
|
||||
$status = match ($function['status']) {
|
||||
'waiting' => '⌛ Waiting',
|
||||
'processing' => '🤔 Processing',
|
||||
'building' => '🛠️ Building',
|
||||
'ready' => '✅ Ready',
|
||||
'failed' => '❌ Failed',
|
||||
};
|
||||
|
||||
$execute = $function['status'] === 'ready' ? "[HTTP](#) \\| [Console](#)" : '_Build must be ready first_';
|
||||
|
||||
$text .= "| **{$function['name']}** `{$functionId}` | {$status} ([Logs](#)) | {$execute} |\n";
|
||||
}
|
||||
|
||||
$text .= "\n";
|
||||
}
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
public function parseComment(string $comment): self
|
||||
{
|
||||
$state = \explode("\n", $comment)[0] ?? '';
|
||||
$state = substr($state, strlen($this->statePrefix));
|
||||
|
||||
$json = \base64_decode($state);
|
||||
|
||||
$builds = \json_decode($json, true);
|
||||
$this->builds = $builds;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user