QueryBuilder::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 2
dl 0
loc 6
ccs 5
cts 5
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Db\Oracle;
6
7
use Yiisoft\Db\QueryBuilder\AbstractQueryBuilder;
8
use Yiisoft\Db\Schema\QuoterInterface;
9
use Yiisoft\Db\Schema\SchemaInterface;
10
11
/**
12
 * Implements the Oracle Server specific query builder.
13
 */
14
final class QueryBuilder extends AbstractQueryBuilder
15
{
16
    /**
17
     * @psalm-var string[] $typeMap Mapping from abstract column types (keys) to physical column types (values).
18
     */
19
    protected array $typeMap = [
20
        SchemaInterface::TYPE_PK => 'NUMBER(10) GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY',
21
        SchemaInterface::TYPE_UPK => 'NUMBER(10) GENERATED BY DEFAULT AS IDENTITY UNSIGNED NOT NULL PRIMARY KEY',
22
        SchemaInterface::TYPE_BIGPK => 'NUMBER(20) GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY',
23
        SchemaInterface::TYPE_UBIGPK => 'NUMBER(20) GENERATED BY DEFAULT AS IDENTITY UNSIGNED NOT NULL PRIMARY KEY',
24
        SchemaInterface::TYPE_CHAR => 'CHAR(1)',
25
        SchemaInterface::TYPE_STRING => 'VARCHAR2(255)',
26
        SchemaInterface::TYPE_TEXT => 'CLOB',
27
        SchemaInterface::TYPE_TINYINT => 'NUMBER(3)',
28
        SchemaInterface::TYPE_SMALLINT => 'NUMBER(5)',
29
        SchemaInterface::TYPE_INTEGER => 'NUMBER(10)',
30
        SchemaInterface::TYPE_BIGINT => 'NUMBER(20)',
31
        SchemaInterface::TYPE_FLOAT => 'BINARY_FLOAT',
32
        SchemaInterface::TYPE_DOUBLE => 'BINARY_DOUBLE',
33
        SchemaInterface::TYPE_DECIMAL => 'NUMBER(10,0)',
34
        SchemaInterface::TYPE_DATETIME => 'TIMESTAMP(0)',
35
        SchemaInterface::TYPE_TIMESTAMP => 'TIMESTAMP(0)',
36
        SchemaInterface::TYPE_TIME => 'INTERVAL DAY(0) TO SECOND(0)',
37
        SchemaInterface::TYPE_DATE => 'DATE',
38
        SchemaInterface::TYPE_BINARY => 'BLOB',
39
        SchemaInterface::TYPE_BOOLEAN => 'NUMBER(1)',
40
        SchemaInterface::TYPE_MONEY => 'NUMBER(19,4)',
41
        SchemaInterface::TYPE_UUID => 'RAW(16)',
42
        SchemaInterface::TYPE_UUID_PK => 'RAW(16) DEFAULT SYS_GUID() PRIMARY KEY',
43
    ];
44
45 556
    public function __construct(QuoterInterface $quoter, SchemaInterface $schema)
46
    {
47 556
        $ddlBuilder = new DDLQueryBuilder($this, $quoter, $schema);
48 556
        $dmlBuilder = new DMLQueryBuilder($this, $quoter, $schema);
49 556
        $dqlBuilder = new DQLQueryBuilder($this, $quoter);
50 556
        parent::__construct($quoter, $schema, $ddlBuilder, $dmlBuilder, $dqlBuilder);
51
    }
52
}
53