perf: Avoid fetching labels and owner details on permission check
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user