feat: Statuses enum model filtering

This commit is contained in:
Binyamin Yawitz
2024-08-02 16:17:53 -04:00
parent 87a26b2b9b
commit 25dcf8ce99
5 changed files with 72 additions and 6 deletions
+10 -1
View File
@@ -6,8 +6,17 @@ class Status
{
public const QUEUED = 'queued';
public const FAILED = 'failed';
public const DELETING_FAILED = 'failed';
public const AVAILABLE = 'available';
public const DELETING = 'deleting';
public const DELETING = 'deleting';
public const CREATING = 'creating';
public static function getV18status(string $status): string
{
return match ($status) {
self::CREATING => 'processing',
self::DELETING_FAILED => 'stuck',
default => $status
};
}
}
+9
View File
@@ -18,4 +18,13 @@ class Status
public const SUCCESSFUL = 'successful';
public static function getV18status(string $status): string
{
return match ($status) {
self::QUEUED => 'waiting',
self::EXECUTING => 'processing',
self::SUCCESSFUL => 'completed',
default => $status
};
}
}
+9
View File
@@ -24,4 +24,13 @@ class Status
* Sent with some errors
*/
public const FAILED = 'failed';
public static function getV18status(string $status): string
{
return match ($status) {
self::DELIVERED => 'sent',
self::SENDING => 'processing',
default => $status
};
}
}
+4 -4
View File
@@ -261,7 +261,7 @@ class Databases extends Action
}
if (!$dbForProject->deleteRelationship('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $key)) {
$dbForProject->updateDocument('attributes', $relatedAttribute->getId(), $relatedAttribute->setAttribute('status', Status::FAILED));
$dbForProject->updateDocument('attributes', $relatedAttribute->getId(), $relatedAttribute->setAttribute('status', Status::DELETING_FAILED));
throw new DatabaseException('Failed to delete Relationship');
}
} elseif (!$dbForProject->deleteAttribute('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $key)) {
@@ -287,13 +287,13 @@ class Databases extends Action
$dbForProject->updateDocument(
'attributes',
$attribute->getId(),
$attribute->setAttribute('status', Status::FAILED)
$attribute->setAttribute('status', Status::DELETING_FAILED)
);
if (!$relatedAttribute->isEmpty()) {
$dbForProject->updateDocument(
'attributes',
$relatedAttribute->getId(),
$relatedAttribute->setAttribute('status', Status::FAILED)
$relatedAttribute->setAttribute('status', Status::DELETING_FAILED)
);
}
} finally {
@@ -470,7 +470,7 @@ class Databases extends Action
$dbForProject->updateDocument(
'indexes',
$index->getId(),
$index->setAttribute('status', Status::FAILED)
$index->setAttribute('status', Status::DELETING_FAILED)
);
} finally {
$this->trigger($database, $collection, $index, $project, $projectId, $events);
+40 -1
View File
@@ -2,6 +2,9 @@
namespace Appwrite\Utopia\Response\Filters;
use Appwrite\Functions\Status as FunctionStatus;
use Appwrite\Messaging\Status as MessagingStatus;
use Appwrite\Database\Status as DatabaseStatus;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Filter;
@@ -12,18 +15,40 @@ class V18 extends Filter
{
$parsedResponse = $content;
$parsedResponse = match($model) {
$parsedResponse = match ($model) {
Response::MODEL_FUNCTION => $this->parseFunction($content),
Response::MODEL_EXECUTION => $this->parseExecution($content),
Response::MODEL_BUILD => $this->parseBuild($content),
Response::MODEL_PROJECT => $this->parseProject($content),
Response::MODEL_MESSAGE => $this->parseMessage($content),
Response::MODEL_INDEX,
Response::MODEL_ATTRIBUTE,
Response::MODEL_ATTRIBUTE_IP,
Response::MODEL_ATTRIBUTE_URL,
Response::MODEL_ATTRIBUTE_ENUM,
Response::MODEL_ATTRIBUTE_EMAIL,
Response::MODEL_ATTRIBUTE_FLOAT,
Response::MODEL_ATTRIBUTE_INTEGER,
Response::MODEL_ATTRIBUTE_BOOLEAN,
Response::MODEL_ATTRIBUTE_DATETIME,
Response::MODEL_ATTRIBUTE_RELATIONSHIP, => $this->parseAttribute($content),
default => $parsedResponse,
};
return $parsedResponse;
}
protected function parseBuild(array $content)
{
$content['status'] = FunctionStatus::getV18status($content['status']);
return $content;
}
protected function parseExecution(array $content)
{
$content['status'] = FunctionStatus::getV18status($content['status']);
unset($content['scheduledAt']);
return $content;
}
@@ -40,4 +65,18 @@ class V18 extends Filter
unset($content['authSessionAlerts']);
return $content;
}
protected function parseMessage(array $content)
{
$content['status'] = MessagingStatus::getV18status($content['status']);
return $content;
}
private function parseAttribute(array $content)
{
$content['status'] = DatabaseStatus::getV18status($content['status']);
return $content;
}
}