From 6e3dee4e1f5da2fe489934d3b84aab6b3bfa1702 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 8 May 2024 16:25:12 +1200 Subject: [PATCH] Fix shared tables db queue name --- app/controllers/general.php | 10 +++++++++- src/Appwrite/Event/Database.php | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index bcdf0fecb3..3734b81a3b 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -26,6 +26,7 @@ use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Utopia\Domains\Domain; +use Utopia\DSN\DSN; use Utopia\Locale\Locale; use Utopia\Logger\Log; use Utopia\Logger\Log\User; @@ -740,13 +741,20 @@ App::error() $log->setUser(new User($user->getId())); } + try { + $dsn = new DSN($project->getAttribute('database', 'console')); + } catch (\InvalidArgumentException) { + // TODO: Temporary until all projects are using shared tables + $dsn = new DSN('mysql://' . $project->getAttribute('database', 'console')); + } + $log->setNamespace("http"); $log->setServer(\gethostname()); $log->setVersion($version); $log->setType(Log::TYPE_ERROR); $log->setMessage($error->getMessage()); - $log->addTag('database', $project->getAttribute('database', 'console')); + $log->addTag('database', $dsn->getHost()); $log->addTag('method', $route->getMethod()); $log->addTag('url', $route->getPath()); $log->addTag('verboseType', get_class($error)); diff --git a/src/Appwrite/Event/Database.php b/src/Appwrite/Event/Database.php index c0c5ef2f43..f9eb7d9a7d 100644 --- a/src/Appwrite/Event/Database.php +++ b/src/Appwrite/Event/Database.php @@ -3,6 +3,7 @@ namespace Appwrite\Event; use Utopia\Database\Document; +use Utopia\DSN\DSN; use Utopia\Queue\Client; use Utopia\Queue\Connection; @@ -107,7 +108,14 @@ class Database extends Event */ public function trigger(): string|bool { - $this->setQueue($this->getProject()->getAttribute('database')); + try { + $dsn = new DSN($this->getProject()->getAttribute('database')); + } catch (\InvalidArgumentException) { + // TODO: Temporary until all projects are using shared tables + $dsn = new DSN('mysql://' . $this->getProject()->getAttribute('database')); + } + + $this->setQueue($dsn->getHost()); $client = new Client($this->queue, $this->connection);