DatabaseBackuper::restore()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 1
c 1
b 0
f 1
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 DatabaseBackuper
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
     * @var string
28
     */
29
    protected $backupFilePath;
30
31
    /**
32
     * DatabaseBackupMaker constructor.
33
     * @param string $backupFilePath
34
     * @param Connection $connection
35
     * @throws Exception
36
     */
37
    public function __construct(string $backupFilePath, Connection $connection)
38
    {
39
        $this->backupFilePath = $backupFilePath;
40
        $currentProcessorClassname = $this->dbProcessors[$connection->driverName];
41
        $this->dbProcessor = new $currentProcessorClassname($backupFilePath, $connection);
42
    }
43
44
    /**
45
     * @return bool
46
     * @throws \Exception
47
     */
48
    public function backup()
49
    {
50
        if (file_exists($this->backupFilePath))
51
            throw new Exception("Backup file exists.");
52
        $this->dbProcessor->backup();
53
    }
54
55
    /**
56
     * @return bool
57
     * @throws \Exception
58
     */
59
    public function restore()
60
    {
61
        $this->dbProcessor->restore();
62
    }
63
}
64