diff --git a/src/Appwrite/Database/Status.php b/src/Appwrite/Database/Status.php index 78c05221fc..0dedc09e3a 100644 --- a/src/Appwrite/Database/Status.php +++ b/src/Appwrite/Database/Status.php @@ -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 + }; + } } diff --git a/src/Appwrite/Functions/Status.php b/src/Appwrite/Functions/Status.php index f452628981..6b3790e805 100644 --- a/src/Appwrite/Functions/Status.php +++ b/src/Appwrite/Functions/Status.php @@ -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 + }; + } } diff --git a/src/Appwrite/Messaging/Status.php b/src/Appwrite/Messaging/Status.php index 64e014dc96..494c43cbab 100644 --- a/src/Appwrite/Messaging/Status.php +++ b/src/Appwrite/Messaging/Status.php @@ -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 + }; + } } diff --git a/src/Appwrite/Platform/Workers/Databases.php b/src/Appwrite/Platform/Workers/Databases.php index 904d7cfe61..0521d7ee45 100644 --- a/src/Appwrite/Platform/Workers/Databases.php +++ b/src/Appwrite/Platform/Workers/Databases.php @@ -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); diff --git a/src/Appwrite/Utopia/Response/Filters/V18.php b/src/Appwrite/Utopia/Response/Filters/V18.php index d0aa680e3b..834519ef30 100644 --- a/src/Appwrite/Utopia/Response/Filters/V18.php +++ b/src/Appwrite/Utopia/Response/Filters/V18.php @@ -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; + } }