MigrationsGeneratorSetting   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 99
Duplicated Lines 0 %

Test Coverage

Coverage 66.67%

Importance

Changes 0
Metric Value
eloc 31
c 0
b 0
f 0
dl 0
loc 99
rs 10
ccs 22
cts 33
cp 0.6667
wmc 11

7 Methods

Rating   Name   Duplication   Size   Complexity  
A isIgnoreIndexNames() 0 3 1
A getPlatform() 0 3 1
A setIgnoreIndexNames() 0 3 1
A isIgnoreForeignKeyNames() 0 3 1
A getConnection() 0 3 1
A setConnection() 0 25 5
A setIgnoreForeignKeyNames() 0 3 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: liow.kitloong
5
 * Date: 2020/03/31
6
 */
7
8
namespace KitLoong\MigrationsGenerator;
9
10
use Illuminate\Database\Connection;
11
use Illuminate\Support\Facades\DB;
12
use KitLoong\MigrationsGenerator\Generators\Platform;
13
14
class MigrationsGeneratorSetting
15
{
16
    /**
17
     * @var Connection
18
     */
19
    private $connection;
20
21
    /**
22
     * @var string
23
     */
24
    private $platform;
25
26
    /**
27
     * @var boolean
28
     */
29
    private $ignoreIndexNames;
30
31
    /**
32
     * @var boolean
33
     */
34
    private $ignoreForeignKeyNames;
35
36
    /**
37
     * @return Connection
38
     */
39
    public function getConnection(): Connection
40
    {
41
        return $this->connection;
42
    }
43
44
    /**
45
     * @param  string  $connection
46
     */
47 15
    public function setConnection(string $connection): void
48
    {
49 15
        $this->connection = DB::connection($connection);
50
51
        /** @var \Doctrine\DBAL\Connection $doctConn */
52 15
        $doctConn = $this->connection->getDoctrineConnection();
53 15
        $classPath = explode('\\', get_class($doctConn->getDatabasePlatform()));
54 15
        $platform = end($classPath);
55
56
        switch (true) {
57 15
            case preg_match('/mysql/i', $platform) > 0:
58 3
                $this->platform = Platform::MYSQL;
59 3
                break;
60 12
            case preg_match('/postgresql/i', $platform) > 0:
61 3
                $this->platform = Platform::POSTGRESQL;
62 3
                break;
63 9
            case preg_match('/sqlserver/i', $platform) > 0:
64 3
                $this->platform = Platform::SQLSERVER;
65 3
                break;
66 6
            case preg_match('/sqlite/i', $platform) > 0:
67 3
                $this->platform = Platform::SQLITE;
68 3
                break;
69
            default:
70 3
                $this->platform = Platform::OTHERS;
71 3
                break;
72
        }
73 15
    }
74
75
    /**
76
     * @return string
77
     */
78 15
    public function getPlatform(): string
79
    {
80 15
        return $this->platform;
81
    }
82
83
    /**
84
     * @return bool
85
     */
86
    public function isIgnoreIndexNames(): bool
87
    {
88
        return $this->ignoreIndexNames;
89
    }
90
91
    /**
92
     * @param  bool  $ignoreIndexNames
93
     */
94
    public function setIgnoreIndexNames(bool $ignoreIndexNames): void
95
    {
96
        $this->ignoreIndexNames = $ignoreIndexNames;
97
    }
98
99
    /**
100
     * @return bool
101
     */
102
    public function isIgnoreForeignKeyNames(): bool
103
    {
104
        return $this->ignoreForeignKeyNames;
105
    }
106
107
    /**
108
     * @param  bool  $ignoreForeignKeyNames
109
     */
110
    public function setIgnoreForeignKeyNames(bool $ignoreForeignKeyNames): void
111
    {
112
        $this->ignoreForeignKeyNames = $ignoreForeignKeyNames;
113
    }
114
}
115