Completed
Push — master ( c1b59a...ea89b8 )
by Sébastien
03:58
created

MysqliMapping::getDatatypeMapping()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 52
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 29
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 52
ccs 29
cts 29
cp 1
rs 9.4929
cc 1
eloc 28
nc 1
nop 0
crap 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Soluble\Metadata\Reader\Mapping;
4
5
use Soluble\Datatype\Column;
6
use ArrayObject;
7
8
class MysqliMapping
9
{
10
11
    /**
12
     *
13
     * @return ArrayObject
14
     */
15 4
    public static function getDatatypeMapping()
16
    {
17
        /*
18
        // ALL the following fields are not supported yet
19
        // Maybe todo in a later release or choose to map them to approximative
20
        // types (i.e. MYSQLI_YEAR could be a integer) ?
21
          MYSQLI_TYPE_NULL
22
          MYSQLI_TYPE_YEAR
23
          MYSQLI_TYPE_ENUM
24
          MYSQLI_TYPE_SET
25
          MYSQLI_TYPE_GEOMETRY
26
         */
27
28 4
        $mapping = new ArrayObject([
29 4
            MYSQLI_TYPE_STRING => ['type' => Column\Type::TYPE_STRING, 'native' => 'VARCHAR'],
30 4
            MYSQLI_TYPE_CHAR => ['type' => Column\Type::TYPE_STRING, 'native' => 'CHAR'],
31 4
            MYSQLI_TYPE_VAR_STRING => ['type' => Column\Type::TYPE_STRING, 'native' => 'VARCHAR'],
32 4
            MYSQLI_TYPE_ENUM => ['type' => Column\Type::TYPE_STRING, 'native' => 'ENUM'],
33
            // BLOBS ARE CURRENTLY SENT AS TEXT
34
            // I DIDN'T FIND THE WAY TO MAKE THE DIFFERENCE !!!
35 4
            MYSQLI_TYPE_TINY_BLOB => ['type' => Column\Type::TYPE_BLOB, 'native' => 'TINYBLOB'],
36 4
            MYSQLI_TYPE_MEDIUM_BLOB => ['type' => Column\Type::TYPE_BLOB, 'native' => 'MEDIUMBLOB'],
37 4
            MYSQLI_TYPE_LONG_BLOB => ['type' => Column\Type::TYPE_BLOB, 'native' => 'LONGBLOB'],
38 4
            MYSQLI_TYPE_BLOB => ['type' => Column\Type::TYPE_BLOB, 'native' => 'BLOB'],
39
            // integer
40 4
            MYSQLI_TYPE_TINY => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'TINYINT'],
41 4
            MYSQLI_TYPE_YEAR => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'YEAR'],
42 4
            MYSQLI_TYPE_SHORT => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'SMALLINT'],
43 4
            MYSQLI_TYPE_INT24 => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'MEDIUMINT'],
44 4
            MYSQLI_TYPE_LONG => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'INTEGER'],
45 4
            MYSQLI_TYPE_LONGLONG => ['type' => Column\Type::TYPE_INTEGER, 'native' => 'BIGINT'],
46
            // timestamps
47 4
            MYSQLI_TYPE_TIMESTAMP => ['type' => Column\Type::TYPE_DATETIME, 'native' => 'TIMESTAMP'],
48 4
            MYSQLI_TYPE_DATETIME => ['type' => Column\Type::TYPE_DATETIME, 'native' => 'DATETIME'],
49
            // dates
50 4
            MYSQLI_TYPE_DATE => ['type' => Column\Type::TYPE_DATE, 'native' => 'DATE'],
51 4
            MYSQLI_TYPE_NEWDATE => ['type' => Column\Type::TYPE_DATE, 'native' => 'DATE'],
52
            // time
53 4
            MYSQLI_TYPE_TIME => ['type' => Column\Type::TYPE_TIME, 'native' => 'TIME'],
54
            // decimals
55 4
            MYSQLI_TYPE_DECIMAL => ['type' => Column\Type::TYPE_DECIMAL, 'native' => 'DECIMAL'],
56 4
            MYSQLI_TYPE_NEWDECIMAL => ['type' => Column\Type::TYPE_DECIMAL, 'native' => 'DECIMAL'],
57 4
            MYSQLI_TYPE_FLOAT => ['type' => Column\Type::TYPE_FLOAT, 'native' => 'FLOAT'],
58 4
            MYSQLI_TYPE_DOUBLE => ['type' => Column\Type::TYPE_FLOAT, 'native' => 'DOUBLE'],
59 4
            MYSQLI_TYPE_BIT => ['type' => Column\Type::TYPE_BIT, 'native' => 'BIT'],
60
            //MYSQLI_TYPE_BOOLEAN => array('type' => Column\Type::TYPE_BOOLEAN, 'native' => 'BOOLEAN'),
61 4
            MYSQLI_TYPE_GEOMETRY => ['type' => Column\Type::TYPE_SPATIAL_GEOMETRY, 'native' => null],
62 4
        ]);
63
64
65 4
        return $mapping;
66
    }
67
}
68