Completed
Push — develop ( 4ea5a3...a8c617 )
by Bartko
05:56
created

TestUtil::createDbScheme()   B

Complexity

Conditions 4
Paths 5

Size

Total Lines 42
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
c 3
b 1
f 0
dl 0
loc 42
rs 8.5806
cc 4
eloc 13
nc 5
nop 0
1
<?php
2
namespace StefanoTreeTest;
3
4
use \PDO;
5
6
class TestUtil
7
{
8
    private static $dbConnection;
9
10
    public static function createDbScheme()
11
    {
12
        $connection = self::getPDOConnection();
13
14
        $queries = array();
15
16
        if ('mysql' == TEST_STEFANO_DB_ADAPTER) {
17
            $queries[] = 'DROP TABLE IF EXISTS `tree_traversal`';
18
19
            $queries[] =  'CREATE TABLE `tree_traversal` (
20
                `tree_traversal_id` int(11) NOT NULL AUTO_INCREMENT,
21
                `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
22
                `lft` int(11) NOT NULL,
23
                `rgt` int(11) NOT NULL,
24
                `parent_id` int(11) DEFAULT NULL,
25
                `level` int(11) DEFAULT NULL,
26
                PRIMARY KEY (`tree_traversal_id`),
27
                KEY `parent_id` (`parent_id`),
28
                KEY `level` (`level`),
29
                KEY `lft` (`lft`),
30
                KEY `rgt` (`rgt`)
31
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin';
32
        } elseif ('pgsql' == TEST_STEFANO_DB_ADAPTER) {
33
            $queries[] = 'DROP TABLE IF EXISTS tree_traversal';
34
35
            $queries[] = 'CREATE TABLE tree_traversal (
36
                  tree_traversal_id serial NOT NULL,
37
                  name character varying(255),
38
                  lft integer NOT NULL,
39
                  rgt integer NOT NULL,
40
                  parent_id integer,
41
                  level integer,
42
                  CONSTRAINT tree_traversal_pkey PRIMARY KEY (tree_traversal_id)
43
                )';
44
        } else {
45
            throw new \Exception(sprintf('Unsupported vendor %s', TEST_STEFANO_DB_ADAPTER));
46
        }
47
48
        foreach ($queries as $query) {
49
            $connection->query($query);
50
        }
51
    }
52
53
    /**
54
     * Singleton
55
     * @return PDO
56
     */
57
    public static function getPDOConnection()
58
    {
59
        if (null == self::$dbConnection) {
60
            $adapter    = strtolower(TEST_STEFANO_DB_ADAPTER);
61
            $hostname   = TEST_STEFANO_DB_HOSTNAME;
62
            $dbName     = TEST_STEFANO_DB_DB_NAME;
63
            $user       = TEST_STEFANO_DB_USER;
64
            $password   = TEST_STEFANO_DB_PASSWORD;
65
66
            self::$dbConnection = new PDO(
67
                $adapter . ':host=' . $hostname . ';dbname='
68
                . $dbName, $user, $password
69
            );
70
        }
71
        return self::$dbConnection;
72
    }
73
}
74