perf: Avoid fetching labels and owner details on permission check

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2024-06-20 08:31:00 +02:00
parent ea4655b24e
commit d4ea088cd2
2 changed files with 7 additions and 5 deletions

View File

@@ -113,7 +113,7 @@ class CardMapper extends QBMapper implements IPermissionMapper {
return parent::update($cardUpdate); return parent::update($cardUpdate);
} }
public function find($id): Card { public function find($id, bool $enhance = true): Card {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$qb->select('*') $qb->select('*')
->from('deck_cards') ->from('deck_cards')
@@ -122,9 +122,11 @@ class CardMapper extends QBMapper implements IPermissionMapper {
->addOrderBy('id'); ->addOrderBy('id');
/** @var Card $card */ /** @var Card $card */
$card = $this->findEntity($qb); $card = $this->findEntity($qb);
$labels = $this->labelMapper->findAssignedLabelsForCard($card->getId()); if ($enhance) {
$card->setLabels($labels); $labels = $this->labelMapper->findAssignedLabelsForCard($card->getId());
$this->mapOwner($card); $card->setLabels($labels);
$this->mapOwner($card);
}
return $card; return $card;
} }

View File

@@ -119,7 +119,7 @@ class PermissionService {
if ($permissions[$permission] === true) { if ($permissions[$permission] === true) {
if (!$allowDeletedCard && $mapper instanceof CardMapper) { if (!$allowDeletedCard && $mapper instanceof CardMapper) {
$card = $mapper->find((int)$id); $card = $mapper->find((int)$id, false);
if ($card->getDeletedAt() > 0) { if ($card->getDeletedAt() > 0) {
throw new NoPermissionException('Card is deleted'); throw new NoPermissionException('Card is deleted');
} }