FileCategoryAuthLoader::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Files\Databases\Queries;
6
7
use AbterPhp\Admin\Databases\Queries\IAuthLoader;
8
use AbterPhp\Admin\Exception\Database;
9
use Opulence\Databases\ConnectionPools\ConnectionPool;
10
use Opulence\QueryBuilders\MySql\QueryBuilder;
11
12
/** @phan-file-suppress PhanTypeMismatchArgument */
13
14
class FileCategoryAuthLoader implements IAuthLoader
15
{
16
    /** @var ConnectionPool */
17
    protected $connectionPool;
18
19
    /**
20
     * BlockCache constructor.
21
     *
22
     * @param ConnectionPool $connectionPool
23
     */
24
    public function __construct(ConnectionPool $connectionPool)
25
    {
26
        $this->connectionPool = $connectionPool;
27
    }
28
29
    /**
30
     * @return array
31
     */
32
    public function loadAll(): array
33
    {
34
        $query = (new QueryBuilder())
35
            ->select('ug.identifier AS v0', 'fc.identifier AS v1')
36
            ->from('user_groups_file_categories', 'ugfc')
37
            ->innerJoin('file_categories', 'fc', 'ugfc.file_category_id = fc.id AND fc.deleted_at IS NULL')
38
            ->innerJoin('user_groups', 'ug', 'ugfc.user_group_id = ug.id AND ug.deleted_at IS NULL')
39
        ;
40
41
        $connection = $this->connectionPool->getReadConnection();
42
        $statement  = $connection->prepare($query->getSql());
43
        $statement->bindValues($query->getParameters());
44
        if (!$statement->execute()) {
45
            throw new Database($statement->errorInfo());
46
        }
47
48
        return $statement->fetchAll(\PDO::FETCH_ASSOC);
49
    }
50
}
51