Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
1 / 1
QueryExecutor
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
8 / 8
9
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isTableExist
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 createTable
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 listTables
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 findColumns
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 findAll
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 findAllColumn
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 findAllCount
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Dynart\Micro\Entities;
4
5class QueryExecutor {
6
7    public function __construct(
8        protected Database $db,
9        protected EntityManager $em,
10        protected QueryBuilder $queryBuilder,
11    ) {}
12
13    public function isTableExist(string $className): bool {
14        $result = $this->db->fetchOne($this->queryBuilder->isTableExist(':dbName', ':tableName'), [
15            ':dbName'    => $this->db->configValue('name'),
16            ':tableName' => $this->em->tableNameByClass($className)
17        ]);
18        return (bool)$result;
19    }
20
21    public function createTable(string $className, bool $ifNotExists = false): void {
22        $sql = $this->queryBuilder->createTable($className, $ifNotExists);
23        $this->db->query($sql);
24    }
25
26    public function listTables(): array {
27        $sql = $this->queryBuilder->listTables();
28        return $this->db->fetchColumn($sql);
29    }
30
31    public function findColumns(string $className): array {
32        $sql = $this->queryBuilder->describeTable($className);
33        return $this->queryBuilder->columnsByTableDescription($this->db->fetchAll($sql));
34    }
35
36    public function findAll(Query $query, array $fields = []): array {
37        $sql = $this->queryBuilder->findAll($query, $fields);
38        return $this->db->fetchAll($sql, $query->variables());
39    }
40
41    public function findAllColumn(Query $query, string $column = ''): array {
42        $fields = $column ? [$column] : [];
43        $sql = $this->queryBuilder->findAll($query, $fields);
44        return $this->db->fetchColumn($sql, $query->variables());
45    }
46
47    public function findAllCount(Query $query): mixed {
48        $sql = $this->queryBuilder->findAllCount($query);
49        return $this->db->fetchOne($sql, $query->variables());
50    }
51}