Passed
Push — main ( 72c6fa...9344f0 )
by Sílvio
02:59
created

MigrationManager   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 25
c 1
b 0
f 0
dl 0
loc 37
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A migrate() 0 32 5
1
<?php
2
3
namespace Silviooosilva\CacheerPhp\Core;
4
5
use PDO;
6
use PDOException;
7
8
/**
9
 * Class MigrationManager
10
 * @author Sílvio Silva <https://github.com/silviooosilva>
11
 * @package Silviooosilva\CacheerPhp
12
 */
13
class MigrationManager
14
{
15
    /**
16
    * @return void
17
    */
18
    public static function migrate(PDO $connection)
19
    {
20
        $driver = $connection->getAttribute(PDO::ATTR_DRIVER_NAME);
21
        $createdAtDefault = ($driver === 'pgsql') ? 'DEFAULT NOW()' : 'DEFAULT CURRENT_TIMESTAMP';
22
23
        try {
24
            if ($driver !== 'sqlite') {
25
                $dbname = CACHEER_DATABASE_CONFIG[Connect::getConnection()]['dbname'];
26
                $connection->exec("USE $dbname");
27
            }
28
29
            $query = ($driver === 'sqlite')
30
                ? "CREATE TABLE IF NOT EXISTS cacheer_table (
31
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
32
                    cacheKey VARCHAR(255) NOT NULL,
33
                    cacheData TEXT NOT NULL,
34
                    cacheNamespace VARCHAR(255),
35
                    expirationTime DATETIME NOT NULL,
36
                    created_at DATETIME $createdAtDefault
37
                )"
38
                : "CREATE TABLE IF NOT EXISTS cacheer_table (
39
                    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
40
                    cacheKey VARCHAR(255) NOT NULL,
41
                    cacheData LONGTEXT NOT NULL,
42
                    cacheNamespace VARCHAR(255) NULL,
43
                    expirationTime DATETIME NOT NULL,
44
                    created_at TIMESTAMP $createdAtDefault
45
                )";
46
47
            $connection->exec($query);
48
        } catch (PDOException $exception) {
49
            throw new PDOException($exception->getMessage(), $exception->getCode());
50
        }
51
    }
52
}
53