From 7d3829e35ff27e4ad3140f7be040b93d08372b95 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 8 Sep 2022 12:33:20 +0100 Subject: [PATCH] Update V15.php --- src/Appwrite/Utopia/Request/Filters/V15.php | 74 +++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/Appwrite/Utopia/Request/Filters/V15.php b/src/Appwrite/Utopia/Request/Filters/V15.php index 300750f95e..9170386280 100644 --- a/src/Appwrite/Utopia/Request/Filters/V15.php +++ b/src/Appwrite/Utopia/Request/Filters/V15.php @@ -3,6 +3,7 @@ namespace Appwrite\Utopia\Request\Filters; use Appwrite\Utopia\Request\Filter; +use Utopia\Database\Query; class V15 extends Filter { @@ -10,8 +11,81 @@ class V15 extends Filter public function parse(array $content, string $model): array { switch ($model) { + // Old Query -> New Query + case "account.logs": + $content = $this->handleAccountLogs($content); + break; + case "account.initials": + $content = $this->handleInitials($content); } return $content; } + + protected function handleAccountLogs($content) + { + // Translate Old Query System to New Query System + + if (!empty($content['limit'])) { + $content['queries'][] = 'Query.limit('.$content['limit'].')'; + } + + if (!empty($content['offset'])) { + $content['queries'][] = 'Query.offset('.$content['offset'].')'; + } + + unset($content['limit']); + unset($content['offset']); + + return $content; + } + + protected function handleInitials($content) + { + unset($content[' color']); + + return $content; + } + + protected function handleQueryTranslation($content) { + $content['queries'] = []; + + if (isset($content['limit'])) { + $content['queries'][] = Query::limit($content['limit']); + } + + if (isset($content['offset'])) { + $content['queries'][] = Query::offset($content['offset']); + } + + if (isset($content['cursor'])) { + $direction = $content['cursorDirection'] ?? 'after'; + + if ($direction === 'after') { + $content['queries'][] = Query::cursorAfter($content['cursor']); + } else { + $content['queries'][] = Query::cursorBefore($content['cursor']); + } + } + + if (isset($content['orderAttributes'])) { + foreach ($content['orderAttributes'] as $i=>$attribute) { + if ($content['orderTypes'][$i] === 'ASC') { + $content['queries'][] = Query::orderAsc($attribute); + } else if ($content['orderTypes'][$i] === 'DESC') { + $content['queries'][] = Query::orderDesc($attribute); + } else { + continue; + } + } + } + + unset($content['limit']); + unset($content['offset']); + unset($content['cursor']); + unset($content['orderAttributes']); + unset($content['orderTypes']); + + return $content; + } }