Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
BuilderAbstract
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
3
100.00% covered (success)
100.00%
1 / 1
 getConnection
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 quote
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getType
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toSql
n/a
0 / 0
n/a
0 / 0
0
 execute
n/a
0 / 0
n/a
0 / 0
0
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   phpOMS\DataStorage\Database
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace phpOMS\DataStorage\Database;
16
17use phpOMS\DataStorage\Database\Connection\ConnectionAbstract;
18use phpOMS\DataStorage\Database\Query\QueryType;
19
20/**
21 * Database query builder.
22 *
23 * @package phpOMS\DataStorage\Database
24 * @license OMS License 2.0
25 * @link    https://jingga.app
26 * @since   1.0.0
27 */
28abstract class BuilderAbstract
29{
30    /**
31     * Is read only.
32     *
33     * @var bool
34     * @since 1.0.0
35     */
36    protected bool $isReadOnly = false;
37
38    /**
39     * Grammar.
40     *
41     * @var GrammarAbstract
42     * @since 1.0.0
43     */
44    protected GrammarAbstract $grammar;
45
46    /**
47     * Database connection.
48     *
49     * @var ConnectionAbstract
50     * @since 1.0.0
51     */
52    protected ConnectionAbstract $connection;
53
54    /**
55     * Query type.
56     *
57     * @var int
58     * @since 1.0.0
59     */
60    protected int $type = QueryType::NONE;
61
62    /**
63     * Raw.
64     *
65     * @var string
66     * @since 1.0.0
67     */
68    public string $raw = '';
69
70    /**
71     * Get connection
72     *
73     * @return ConnectionAbstract
74     *
75     * @since 1.0.0
76     */
77    public function getConnection() : ConnectionAbstract
78    {
79        return $this->connection;
80    }
81
82    /**
83     * Escape string value
84     *
85     * @param string $value Value to escape
86     *
87     * @return string
88     *
89     * @since 1.0.0
90     */
91    public function quote(string $value) : string
92    {
93        return $this->connection->con->quote($value);
94    }
95
96    /**
97     * Get query type.
98     *
99     * @return int
100     *
101     * @since 1.0.0
102     */
103    public function getType() : int
104    {
105        return $this->type;
106    }
107
108    /**
109     * Parsing to sql string.
110     *
111     * @return string
112     *
113     * @since 1.0.0
114     */
115    abstract public function toSql() : string;
116
117    /**
118     * Execute query.
119     *
120     * @return ?\PDOStatement
121     *
122     * @since 1.0.0
123     */
124    abstract public function execute() : ?\PDOStatement;
125}