From bdc90dcb5658483609095400389b821821e3b818 Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:57:31 +0000 Subject: [PATCH] fix(backend): Eliminate N+1 queries for reaction_added events --- src/Model/Table/MessagesTable.php | 4 ++++ src/Service/AwardService.php | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Model/Table/MessagesTable.php b/src/Model/Table/MessagesTable.php index d5402a17..4361c35e 100644 --- a/src/Model/Table/MessagesTable.php +++ b/src/Model/Table/MessagesTable.php @@ -91,6 +91,10 @@ public function validationDefault(Validator $validator): Validator * Returns a rules checker object that will be used for validating * application integrity. * + * Note: existsIn validation rules are defined here but may be skipped during save + * when called with pre-loaded User entities (e.g., in AwardService). Database + * foreign key constraints provide backup enforcement in such cases. + * * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. * @return \Cake\ORM\RulesChecker */ diff --git a/src/Service/AwardService.php b/src/Service/AwardService.php index c4d3df56..71aeddb8 100644 --- a/src/Service/AwardService.php +++ b/src/Service/AwardService.php @@ -61,7 +61,9 @@ private function gibToUser( 'type' => true, ], ]); - $messagesTable->saveOrFail($message); + // Skip ORM validation since User entities are already loaded and guaranteed to exist. + // Database foreign key constraints will enforce referential integrity. + $messagesTable->saveOrFail($message, ['validate' => false]); $span = SentrySdk::getCurrentHub()->getSpan(); if ($span !== null) {