QueryBuilder   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 27
ccs 8
cts 8
cp 1
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A addJoin() 0 7 2
1
<?php
2
3
namespace kalanis\kw_mapper\Storage\Database;
4
5
6
use kalanis\kw_mapper\MapperException;
7
use kalanis\kw_mapper\Storage\Database\Dialects\ADialect;
8
use kalanis\kw_mapper\Storage\Shared\QueryBuilder as QB;
9
10
11
/**
12
 * Class QueryBuilder
13
 * @package kalanis\kw_mapper\Storage\Database
14
 * Call language dialects to create queries and pass conditions, properties, joins and params as extra parts
15
 */
16
class QueryBuilder extends QB
17
{
18
    protected ADialect $dialect;
19
20 26
    public function __construct(ADialect $dialect)
21
    {
22 26
        $this->dialect = $dialect;
23 26
        parent::__construct();
24
    }
25
26
    /**
27
     * @param string $joinUnderAlias
28
     * @param string $addTableName
29
     * @param string|int $addColumnName
30
     * @param string $knownTableName
31
     * @param string|int $knownColumnName
32
     * @param string $side
33
     * @param string $tableAlias
34
     * @throws MapperException
35
     */
36 6
    public function addJoin(string $joinUnderAlias, string $addTableName, $addColumnName, string $knownTableName, $knownColumnName, string $side = '', string $tableAlias = ''): void
37
    {
38 6
        if (!in_array($side, $this->dialect->availableJoins())) {
39 2
            throw new MapperException(sprintf('Bad side *%s* to join !', $side));
40
        }
41 4
        $join = clone $this->join;
42 4
        $this->joins[] = $join->setData($joinUnderAlias, $addTableName, $addColumnName, $knownTableName, $knownColumnName, $side, $tableAlias);
43
    }
44
}
45