perf: Eager load tags state with actor id (#149)

This commit is contained in:
Sami Mazouz 2021-11-02 12:08:15 +01:00 committed by GitHub
parent 892259f448
commit cabe25acb4

View File

@ -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']),