mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
feat: Statuses enum model filtering
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user