From 98dfa50f46528771b7c9c625a5e5e7e3fb86554f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 2 Jul 2024 12:30:49 +0200 Subject: [PATCH] fix(webhooks_listeners): Fix SQL requests for oracle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- .../lib/Db/WebhookListenerMapper.php | 25 ++++++++++++------- .../tests/Db/WebhookListenerMapperTest.php | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php b/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php index f4a475b7028..7f4636f652b 100644 --- a/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php +++ b/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php @@ -168,10 +168,11 @@ class WebhookListenerMapper extends QBMapper { $qb->selectDistinct('event') ->from($this->getTableName()) - ->where($qb->expr()->in( - 'user_id_filter', - $qb->createNamedParameter(array_unique(['',$userId]), IQueryBuilder::PARAM_STR_ARRAY), - )); + ->where($qb->expr()->emptyString('user_id_filter')); + + if ($userId !== '') { + $qb->orWhere($qb->expr()->eq('user_id_filter', $qb->createNamedParameter($userId))); + } $result = $qb->executeQuery(); @@ -209,13 +210,19 @@ class WebhookListenerMapper extends QBMapper { $qb->select('*') ->from($this->getTableName()) - ->where($qb->expr()->eq('event', $qb->createNamedParameter($event, IQueryBuilder::PARAM_STR))) - ->andWhere( - $qb->expr()->in( - 'user_id_filter', - $qb->createNamedParameter(array_unique(['',$userId ?? '']), IQueryBuilder::PARAM_STR_ARRAY), + ->where($qb->expr()->eq('event', $qb->createNamedParameter($event, IQueryBuilder::PARAM_STR))); + + + if ($userId === '' || $userId === null) { + $qb->andWhere($qb->expr()->emptyString('user_id_filter')); + } else { + $qb->andWhere( + $qb->expr()->orX( + $qb->expr()->emptyString('user_id_filter'), + $qb->expr()->eq('user_id_filter', $qb->createNamedParameter($userId)), ) ); + } return $this->findEntities($qb); } diff --git a/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php b/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php index 725d4108e03..bf39d4779ea 100644 --- a/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php +++ b/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php @@ -168,5 +168,6 @@ class WebhookListenerMapperTest extends TestCase { $this->assertEquals([$listener1, $listener2], $this->mapper->getByEvent(NodeWrittenEvent::class, 'alice')); $this->assertEquals([$listener2], $this->mapper->getByEvent(NodeWrittenEvent::class, 'otherUser')); + $this->assertEquals([$listener2], $this->mapper->getByEvent(NodeWrittenEvent::class)); } }