fix(webhooks_listeners): Fix SQL requests for oracle

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2024-07-02 12:30:49 +02:00
parent 7c577c98ef
commit 98dfa50f46
No known key found for this signature in database
GPG key ID: A3E2F658B28C760A
2 changed files with 17 additions and 9 deletions

View file

@ -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);
}

View file

@ -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));
}
}