Code Duplication    Length = 31-31 lines in 2 locations

src/Core/Component/Blog/Application/Query/DQL/FindAuthorIdByCommentIdQuery.php 1 location

@@ 24-54 (lines=31) @@
21
use Acme\App\Core\SharedKernel\Component\Blog\Domain\Post\Comment\CommentId;
22
use Acme\App\Core\SharedKernel\Component\User\Domain\User\UserId;
23
24
final class FindAuthorIdByCommentIdQuery implements FindAuthorIdByCommentIdQueryInterface
25
{
26
    /**
27
     * @var DqlQueryBuilderInterface
28
     */
29
    private $dqlQueryBuilder;
30
31
    /**
32
     * @var QueryServiceRouterInterface
33
     */
34
    private $queryService;
35
36
    public function __construct(
37
        DqlQueryBuilderInterface $dqlQueryBuilder,
38
        QueryServiceRouterInterface $queryService
39
    ) {
40
        $this->dqlQueryBuilder = $dqlQueryBuilder;
41
        $this->queryService = $queryService;
42
    }
43
44
    public function execute(CommentId $commentId): UserId
45
    {
46
        $dqlQuery = $this->dqlQueryBuilder->create(Comment::class)
47
            ->select('Comment.authorId')
48
            ->where('Comment.id = :commentId')
49
            ->setParameter('commentId', $commentId)
50
            ->build();
51
52
        return $this->queryService->query($dqlQuery)->getSingleResult()['authorId'];
53
    }
54
}
55

src/Core/Component/Blog/Application/Query/DQL/FindAuthorIdByPostIdQuery.php 1 location

@@ 24-54 (lines=31) @@
21
use Acme\App\Core\Port\Persistence\QueryServiceRouterInterface;
22
use Acme\App\Core\SharedKernel\Component\User\Domain\User\UserId;
23
24
final class FindAuthorIdByPostIdQuery implements FindAuthorIdByPostIdQueryInterface
25
{
26
    /**
27
     * @var DqlQueryBuilderInterface
28
     */
29
    private $dqlQueryBuilder;
30
31
    /**
32
     * @var QueryServiceRouterInterface
33
     */
34
    private $queryService;
35
36
    public function __construct(
37
        DqlQueryBuilderInterface $dqlQueryBuilder,
38
        QueryServiceRouterInterface $queryService
39
    ) {
40
        $this->dqlQueryBuilder = $dqlQueryBuilder;
41
        $this->queryService = $queryService;
42
    }
43
44
    public function execute(PostId $postId): UserId
45
    {
46
        $dqlQuery = $this->dqlQueryBuilder->create(Post::class)
47
            ->select('Post.authorId')
48
            ->where('Post.id = :postId')
49
            ->setParameter('postId', $postId)
50
            ->build();
51
52
        return $this->queryService->query($dqlQuery)->getSingleResult()['authorId'];
53
    }
54
}
55