diff --git a/app/http.php b/app/http.php index fa92c5d397..d76f722f34 100644 --- a/app/http.php +++ b/app/http.php @@ -78,14 +78,14 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { $dbForConsole = $app->getResource('dbForConsole'); /** @var Utopia\Database\Database $dbForConsole */ - if(!$dbForConsole->exists()) { + // if(!$dbForConsole->exists('appwrite')) { Console::success('[Setup] - Server database init started...'); $collections = Config::getParam('collections', []); /** @var array $collections */ $redis->flushAll(); - $dbForConsole->create(); + $dbForConsole->create('appwrite'); $audit = new Audit($dbForConsole); $audit->setup(); @@ -125,7 +125,7 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { } Console::success('[Setup] - Server database init completed...'); - } + // } }); Console::success('Server started successfully (max payload is '.number_format($payloadSize).' bytes)'); diff --git a/app/init.php b/app/init.php index f6b186d53e..2c64b858f3 100644 --- a/app/init.php +++ b/app/init.php @@ -785,7 +785,8 @@ App::setResource('dbForInternal', function($db, $cache, $project) { $cache = new Cache(new RedisCache($cache)); $database = new Database(new MariaDB($db), $cache); - $database->setNamespace('project_'.$project->getId().'_internal'); + $database->setDefaultDatabase('appwrite'); + $database->setNamespace('_project_'.$project->getId()); return $database; }, ['db', 'cache', 'project']); @@ -794,7 +795,8 @@ App::setResource('dbForExternal', function($db, $cache, $project) { $cache = new Cache(new RedisCache($cache)); $database = new Database(new MariaDB($db), $cache); - $database->setNamespace('project_'.$project->getId().'_external'); + $database->setDefaultDatabase('appwrite'); + $database->setNamespace('project_'.$project->getId()); return $database; }, ['db', 'cache', 'project']); @@ -803,7 +805,8 @@ App::setResource('dbForConsole', function($db, $cache) { $cache = new Cache(new RedisCache($cache)); $database = new Database(new MariaDB($db), $cache); - $database->setNamespace('project_console_internal'); + $database->setDefaultDatabase('appwrite'); + $database->setNamespace('_console'); return $database; }, ['db', 'cache']); diff --git a/app/realtime.php b/app/realtime.php index 5215cd2477..e9ce8353b2 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -58,6 +58,7 @@ function getDatabase(Registry &$register, string $namespace) $cache = new Cache(new RedisCache($redis)); $database = new Database(new MariaDB($db), $cache); + $database->setDefaultDatabase('appwrite'); $database->setNamespace($namespace); return [ @@ -77,7 +78,7 @@ $server->onStart(function () use ($stats, $register, $containerId, &$statsDocume */ go(function () use ($register, $containerId, &$statsDocument) { try { - [$database, $returnDatabase] = getDatabase($register, 'project_console_internal'); + [$database, $returnDatabase] = getDatabase($register, '_console'); $document = new Document([ '$id' => $database->getId(), '$collection' => 'realtime', @@ -133,7 +134,7 @@ $server->onStart(function () use ($stats, $register, $containerId, &$statsDocume } try { - [$database, $returnDatabase] = getDatabase($register, 'project_console_internal'); + [$database, $returnDatabase] = getDatabase($register, '_console'); $statsDocument ->setAttribute('timestamp', time()) @@ -163,7 +164,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, */ if ($realtime->hasSubscriber('console', 'role:member', 'project')) { - [$database, $returnDatabase] = getDatabase($register, 'project_console_internal'); + [$database, $returnDatabase] = getDatabase($register, '_console'); $payload = []; @@ -267,7 +268,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, return; } - [$database, $returnDatabase] = getDatabase($register, 'project_' . $projectId . '_internal'); + [$database, $returnDatabase] = getDatabase($register, 'project_' . $projectId); $user = $database->getDocument('users', $userId); diff --git a/composer.json b/composer.json index 525c49e702..e03fb76571 100644 --- a/composer.json +++ b/composer.json @@ -45,7 +45,7 @@ "utopia-php/cache": "0.4.*", "utopia-php/cli": "0.11.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.12.*", + "utopia-php/database": "dev-feat-database-and-namespace as 0.13.0", "utopia-php/locale": "0.4.*", "utopia-php/orchestration": "0.2.*", "utopia-php/registry": "0.5.*", diff --git a/composer.lock b/composer.lock index 6316ff1ba4..2125a78a76 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c755b0ae991777da3e44b0442690fa46", + "content-hash": "f546dc6dcc6af7ccdb62435aed4fc0ca", "packages": [ { "name": "adhocore/jwt", @@ -2138,16 +2138,16 @@ }, { "name": "utopia-php/database", - "version": "0.12.1", + "version": "dev-feat-database-and-namespace", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "af512b7a00cc7c6e30fa03efbc5fd7e77a93e2df" + "reference": "dce7c47b51cd5b4ccbdf87e192be13b22c8a25e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/af512b7a00cc7c6e30fa03efbc5fd7e77a93e2df", - "reference": "af512b7a00cc7c6e30fa03efbc5fd7e77a93e2df", + "url": "https://api.github.com/repos/utopia-php/database/zipball/dce7c47b51cd5b4ccbdf87e192be13b22c8a25e1", + "reference": "dce7c47b51cd5b4ccbdf87e192be13b22c8a25e1", "shasum": "" }, "require": { @@ -2195,9 +2195,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.12.1" + "source": "https://github.com/utopia-php/database/tree/feat-database-and-namespace" }, - "time": "2021-12-13T14:57:32+00:00" + "time": "2021-12-22T20:55:21+00:00" }, { "name": "utopia-php/domains", @@ -6496,9 +6496,18 @@ "time": "2015-12-17T08:42:14+00:00" } ], - "aliases": [], + "aliases": [ + { + "package": "utopia-php/database", + "version": "dev-feat-database-and-namespace", + "alias": "0.13.0", + "alias_normalized": "0.13.0.0" + } + ], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "utopia-php/database": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/docker-compose.yml b/docker-compose.yml index 3e50c9640e..8ea8f6f9c3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -71,7 +71,7 @@ services: - ./psalm.xml:/usr/src/code/psalm.xml - ./tests:/usr/src/code/tests - ./app:/usr/src/code/app - # - ./vendor:/usr/src/code/vendor + - ./vendor:/usr/src/code/vendor - ./docs:/usr/src/code/docs - ./src:/usr/src/code/src # - ./debug:/tmp @@ -441,7 +441,7 @@ services: - _APP_REDIS_PASS mariadb: - image: appwrite/mariadb:1.2.0 # fix issues when upgrading using: mysql_upgrade -u root -p + image: mariadb:10.7 # fix issues when upgrading using: mysql_upgrade -u root -p container_name: appwrite-mariadb networks: - appwrite diff --git a/src/Appwrite/Resque/Worker.php b/src/Appwrite/Resque/Worker.php index dd7b25a876..b357b1cfc9 100644 --- a/src/Appwrite/Resque/Worker.php +++ b/src/Appwrite/Resque/Worker.php @@ -86,16 +86,16 @@ abstract class Worker if (!$projectId) { throw new \Exception('ProjectID not provided - cannot get database'); } - $namespace = "project_{$projectId}_internal"; + $namespace = "project_{$projectId}"; break; case self::DATABASE_EXTERNAL: if (!$projectId) { throw new \Exception('ProjectID not provided - cannot get database'); } - $namespace = "project_{$projectId}_external"; + $namespace = "project_{$projectId}"; break; case self::DATABASE_CONSOLE: - $namespace = "project_console_internal"; + $namespace = "_console"; $sleep = 5; // ConsoleDB needs extra sleep time to ensure tables are created break; default: @@ -110,9 +110,10 @@ abstract class Worker $attempts++; $cache = new Cache(new RedisCache($register->get('cache'))); $database = new Database(new MariaDB($register->get('db')), $cache); + $database->setDefaultDatabase('appwrite'); $database->setNamespace($namespace); // Main DB - if (!$database->exists()) { - throw new \Exception("Table does not exist: {$database->getNamespace()}"); + if (!empty($projectId) && !$database->getDocument('projects', $projectId)->isEmpty()) { + throw new \Exception("Project does not exist: {$projectId}"); } break; // leave loop if successful } catch(\Exception $e) {