CheckHealth   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 53
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A execute() 0 10 1
A createFormatter() 0 3 1
A __construct() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cushon\HealthBundle\Console\Command;
6
7
use Cushon\HealthBundle\Console\Factory\ResultFormatterFactory;
8
use Cushon\HealthBundle\Formatter\Console;
9
use Cushon\HealthBundle\Message\QueryFactory\QueryFactory;
10
use Cushon\HealthBundle\QueryBus\HealthCheckQueryBus;
11
use Symfony\Component\Console\Command\Command;
12
use Symfony\Component\Console\Input\InputInterface;
13
use Symfony\Component\Console\Output\OutputInterface;
14
15
class CheckHealth extends Command
16
{
17
    public const DEFAULT_NAME = 'cushon:health';
18
    public const DEFAULT_DESCRIPTION = 'Console command to initiate an bundle health check';
19
20
    protected static $defaultName = self::DEFAULT_NAME;
21
    protected static $defaultDescription = self::DEFAULT_DESCRIPTION;
22
23
    private HealthCheckQueryBus $healthCheckQueryBus;
24
    private QueryFactory $queryFactory;
25
    private ResultFormatterFactory $resultFormatterFactory;
26
27
    /**
28
     * @param HealthCheckQueryBus $healthCheckQueryBus
29
     * @param QueryFactory $queryFactory
30
     * @param ResultFormatterFactory $resultFormatterFactory
31
     */
32
    public function __construct(
33
        HealthCheckQueryBus $healthCheckQueryBus,
34
        QueryFactory $queryFactory,
35
        ResultFormatterFactory $resultFormatterFactory
36
    ) {
37
        $this->healthCheckQueryBus = $healthCheckQueryBus;
38
        $this->queryFactory = $queryFactory;
39
        $this->resultFormatterFactory = $resultFormatterFactory;
40
41
        parent::__construct();
42
    }
43
44
45
    /**
46
     * @inheritDoc
47
     */
48
    protected function execute(InputInterface $input, OutputInterface $output): int
49
    {
50
        $query = $this->queryFactory->createQuery();
51
        $result = $this->healthCheckQueryBus->handleHealthCheckQuery($query);
52
53
        $formatter = $this->createFormatter($input, $output);
54
55
        $formatter->format($result);
56
57
        return Command::SUCCESS;
58
    }
59
60
    /**
61
     * @param InputInterface $input
62
     * @param OutputInterface $output
63
     * @return Console
64
     */
65
    private function createFormatter(InputInterface $input, OutputInterface $output): Console
66
    {
67
        return $this->resultFormatterFactory->fromIO($input, $output);
68
    }
69
}
70