From 57411db2d362696579018f4f3ffd31fdb83cc55e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 15 Jun 2023 00:34:12 +0000 Subject: [PATCH] upadate to use refactored collections config --- app/cli.php | 2 +- app/controllers/api/databases.php | 2 +- app/controllers/api/projects.php | 2 +- app/controllers/api/storage.php | 2 +- app/http.php | 10 +++++----- .../Utopia/Database/Validator/Queries/Base.php | 3 ++- tests/unit/General/CollectionsTest.php | 18 ++++++++++-------- 7 files changed, 21 insertions(+), 18 deletions(-) diff --git a/app/cli.php b/app/cli.php index bfe7bfcefb..2d12d69adb 100644 --- a/app/cli.php +++ b/app/cli.php @@ -61,7 +61,7 @@ CLI::setResource('dbForConsole', function ($pools, $cache) { $dbForConsole->setNamespace('console'); // Ensure tables exist - $collections = Config::getParam('collections', []); + $collections = Config::getParam('collections', [])['console']; $last = \array_key_last($collections); if (!($dbForConsole->exists($dbForConsole->getDefaultDatabase(), $last))) { /** TODO cache ready variable using registry */ diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 5022681d87..79295d1c2b 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -179,7 +179,7 @@ App::post('/v1/databases') ])); $database = $dbForProject->getDocument('databases', $databaseId); - $collections = Config::getParam('collections', [])['collections'] ?? []; + $collections = (Config::getParam('collections', [])['databases'] ?? [])['collections'] ?? []; if (empty($collections)) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'The "collections" collection is not configured.'); } diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index acf6b19003..c06aaf840e 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -172,7 +172,7 @@ App::post('/v1/projects') $adapter->setup(); /** @var array $collections */ - $collections = Config::getParam('collections', []); + $collections = Config::getParam('collections', [])['projects'] ?? []; foreach ($collections as $key => $collection) { if (($collection['$collection'] ?? '') !== Database::METADATA) { diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 1ea8d96df1..4814793ca8 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -80,7 +80,7 @@ App::post('/v1/storage/buckets') $permissions = Permission::aggregate($permissions); try { - $files = Config::getParam('collections', [])['files'] ?? []; + $files = (Config::getParam('collections', [])['buckets'] ?? [])['files'] ?? []; if (empty($files)) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Files collection is not configured.'); } diff --git a/app/http.php b/app/http.php index 2978eee51f..f411d8abe3 100644 --- a/app/http.php +++ b/app/http.php @@ -84,9 +84,6 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { Console::success('[Setup] - Server database init started...'); - /** @var array $collections */ - $collections = Config::getParam('collections', []); - try { $cache = $app->getResource('cache'); /** @var Utopia\Cache\Cache $cache */ Console::success('[Setup] - Creating database: appwrite...'); @@ -105,7 +102,10 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { $adapter->setup(); } - foreach ($collections as $key => $collection) { + /** @var array $collections */ + $collections = Config::getParam('collections', []); + $consoleCollections = $collections['console']; + foreach ($consoleCollections as $key => $collection) { if (($collection['$collection'] ?? '') !== Database::METADATA) { continue; } @@ -177,7 +177,7 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { $bucket = $dbForConsole->getDocument('buckets', 'default'); Console::success('[Setup] - Creating files collection for default bucket...'); - $files = $collections['files'] ?? []; + $files = $collections['buckets']['files'] ?? []; if (empty($files)) { throw new Exception('Files collection is not configured.'); } diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Base.php b/src/Appwrite/Utopia/Database/Validator/Queries/Base.php index 89c82c8e82..cd5870f817 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Base.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Base.php @@ -22,7 +22,8 @@ class Base extends Queries */ public function __construct(string $collection, array $allowedAttributes) { - $collection = Config::getParam('collections', [])[$collection]; + $config = Config::getParam('collections', []); + $collections = array_merge($config['console'], $config['projects'], $config['buckets'], $config['databases']); // array for constant lookup time $allowedAttributesLookup = []; foreach ($allowedAttributes as $attribute) { diff --git a/tests/unit/General/CollectionsTest.php b/tests/unit/General/CollectionsTest.php index 1d648f93c2..73a9ccd0c2 100644 --- a/tests/unit/General/CollectionsTest.php +++ b/tests/unit/General/CollectionsTest.php @@ -15,16 +15,18 @@ class CollectionsTest extends TestCase public function testDuplicateRules(): void { - foreach ($this->collections as $key => $collection) { - if (array_key_exists('attributes', $collection)) { - foreach ($collection['attributes'] as $check) { - $occurrences = 0; - foreach ($collection['attributes'] as $attribute) { - if ($attribute['$id'] == $check['$id']) { - $occurrences++; + foreach ($this->collections as $key => $sections) { + foreach ($sections as $key => $collection) { + if (array_key_exists('attributes', $collection)) { + foreach ($collection['attributes'] as $check) { + $occurrences = 0; + foreach ($collection['attributes'] as $attribute) { + if ($attribute['$id'] == $check['$id']) { + $occurrences++; + } } + $this->assertEquals(1, $occurrences); } - $this->assertEquals(1, $occurrences); } } }