mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Prevent violate constraint
Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
parent
1dda03e1b5
commit
a7c0868a4c
1 changed files with 28 additions and 9 deletions
|
|
@ -1123,16 +1123,35 @@ class Manager implements ICommentsManager {
|
|||
}
|
||||
|
||||
private function addReaction(IComment $reaction): void {
|
||||
// Prevent violate constraint
|
||||
$qb = $this->dbConn->getQueryBuilder();
|
||||
$qb->insert('reactions')
|
||||
->values([
|
||||
'parent_id' => $qb->createNamedParameter($reaction->getParentId()),
|
||||
'message_id' => $qb->createNamedParameter($reaction->getId()),
|
||||
'actor_type' => $qb->createNamedParameter($reaction->getActorType()),
|
||||
'actor_id' => $qb->createNamedParameter($reaction->getActorId()),
|
||||
'reaction' => $qb->createNamedParameter($reaction->getMessage()),
|
||||
])
|
||||
->executeStatement();
|
||||
$qb->select($qb->func()->count('*'))
|
||||
->from('reactions')
|
||||
->where($qb->expr()->eq('parent_id', $qb->createNamedParameter($reaction->getParentId())))
|
||||
->andWhere($qb->expr()->eq('actor_type', $qb->createNamedParameter($reaction->getActorType())))
|
||||
->andWhere($qb->expr()->eq('actor_id', $qb->createNamedParameter($reaction->getActorId())))
|
||||
->andWhere($qb->expr()->eq('reaction', $qb->createNamedParameter($reaction->getMessage())));
|
||||
$result = $qb->executeQuery();
|
||||
$exists = (int) $result->fetchOne();
|
||||
if (!$exists) {
|
||||
$qb = $this->dbConn->getQueryBuilder();
|
||||
try {
|
||||
$qb->insert('reactions')
|
||||
->values([
|
||||
'parent_id' => $qb->createNamedParameter($reaction->getParentId()),
|
||||
'message_id' => $qb->createNamedParameter($reaction->getId()),
|
||||
'actor_type' => $qb->createNamedParameter($reaction->getActorType()),
|
||||
'actor_id' => $qb->createNamedParameter($reaction->getActorId()),
|
||||
'reaction' => $qb->createNamedParameter($reaction->getMessage()),
|
||||
])
|
||||
->executeStatement();
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error($e->getMessage(), [
|
||||
'exception' => $e,
|
||||
'app' => 'core_comments',
|
||||
]);
|
||||
}
|
||||
}
|
||||
$this->sumReactions($reaction->getParentId());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue