DatabaseBackupRestorer::backup()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
4
namespace floor12\backup\logic;
5
6
7
use floor12\backup\logic\processors\DbProcessor;
8
use floor12\backup\logic\processors\MysqlProcessor;
9
use floor12\backup\logic\processors\PostgresProcessor;
10
use yii\base\Exception;
11
use yii\db\Connection;
12
13
class DatabaseBackupRestorer
14
{
15
    /**
16
     * @var array
17
     */
18
    protected $dbProcessors = [
19
        'mysql' => MysqlProcessor::class,
20
        'pgsql' => PostgresProcessor::class,
21
    ];
22
    /**
23
     * @var DbProcessor
24
     */
25
    protected $dbProcessor;
26
27
    /**
28
     * DatabaseBackupMaker constructor.
29
     * @param string $backupFilePath
30
     * @param Connection $connection
31
     * @throws Exception
32
     */
33
    public function __construct(string $backupFilePath, Connection $connection)
34
    {
35
        if (file_exists($backupFilePath))
36
            throw new Exception("Backup file exists.");
37
38
        $currentProcessorClassname = $this->dbProcessors[$connection->driverName];
39
        $this->dbProcessor = new $currentProcessorClassname($backupFilePath, $connection);
40
    }
41
42
    /**
43
     * @return bool
44
     * @throws \Exception
45
     */
46
    public function backup()
47
    {
48
        $this->dbProcessor->backup();
49
    }
50
}
51