From cabe25acb4fdd1c9c2f20766f69d3d6101b54ff3 Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Tue, 2 Nov 2021 12:08:15 +0100 Subject: [PATCH] perf: Eager load tags state with actor id (#149) --- extensions/tags/extend.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extensions/tags/extend.php b/extensions/tags/extend.php index 82eeee53e..269643fea 100644 --- a/extensions/tags/extend.php +++ b/extensions/tags/extend.php @@ -16,6 +16,7 @@ use Flarum\Discussion\Filter\DiscussionFilterer; use Flarum\Discussion\Search\DiscussionSearcher; use Flarum\Extend; use Flarum\Flags\Api\Controller\ListFlagsController; +use Flarum\Http\RequestUtil; use Flarum\Tags\Access; use Flarum\Tags\Api\Controller; use Flarum\Tags\Api\Serializer\TagSerializer; @@ -28,6 +29,7 @@ use Flarum\Tags\LoadForumTagsRelationship; use Flarum\Tags\Post\DiscussionTaggedPost; use Flarum\Tags\Query\TagFilterGambit; use Flarum\Tags\Tag; +use Psr\Http\Message\ServerRequestInterface; return [ (new Extend\Frontend('forum')) @@ -71,7 +73,11 @@ return [ (new Extend\ApiController(FlarumController\ListDiscussionsController::class)) ->addInclude(['tags', 'tags.state', 'tags.parent']) - ->load('tags'), + ->loadWhere('tags', function ($query, ?ServerRequestInterface $request, array $relations) { + if ($request && in_array('tags.state', $relations, true)) { + $query->withStateFor(RequestUtil::getActor($request)); + } + }), (new Extend\ApiController(FlarumController\ShowDiscussionController::class)) ->addInclude(['tags', 'tags.state', 'tags.parent']),