Completed
Pull Request — master (#3)
by ARCANEDEV
16:54
created

BackupService   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 3
dl 0
loc 104
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A statuses() 0 4 1
A getStatus() 0 4 1
A runBackups() 0 20 2
A clearBackups() 0 13 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Arcanesoft\Backups\Services;
6
7
use Arcanedev\LaravelBackup\Actions\Backup\BackupAction;
8
use Arcanedev\LaravelBackup\Actions\Cleanup\CleanAction;
9
use Arcanedev\LaravelBackup\Entities\{BackupDestinationStatus, BackupDestinationStatusCollection};
10
11
/**
12
 * Class     BackupService
13
 *
14
 * @author   ARCANEDEV <[email protected]>
15
 */
16
class BackupService
17
{
18
    /* -----------------------------------------------------------------
19
     |  Properties
20
     | -----------------------------------------------------------------
21
     */
22
23
    /** @var  \Arcanedev\LaravelBackup\Actions\Backup\BackupAction */
24
    protected $backupAction;
25
26
    /** @var  \Arcanedev\LaravelBackup\Actions\Cleanup\CleanAction */
27
    protected $cleanAction;
28
29
    /* -----------------------------------------------------------------
30
     |  Constructor
31
     | -----------------------------------------------------------------
32
     */
33
34
    /**
35
     * BackupService constructor.
36
     *
37
     * @param  \Arcanedev\LaravelBackup\Actions\Backup\BackupAction  $backupAction
38
     * @param  \Arcanedev\LaravelBackup\Actions\Cleanup\CleanAction  $cleanAction
39
     */
40
    public function __construct(BackupAction $backupAction, CleanAction $cleanAction)
41
    {
42
        $this->backupAction = $backupAction;
43
        $this->cleanAction = $cleanAction;
44
    }
45
46
    /* -----------------------------------------------------------------
47
     |  Main Methods
48
     | -----------------------------------------------------------------
49
     */
50
51
    /**
52
     * Get all the statuses.
53
     *
54
     * @return \Arcanedev\LaravelBackup\Entities\BackupDestinationStatus[]|\Arcanedev\LaravelBackup\Entities\BackupDestinationStatusCollection
55
     */
56
    public function statuses(): BackupDestinationStatusCollection
57
    {
58
        return BackupDestinationStatusCollection::makeFromConfig();
59
    }
60
61
    /**
62
     * Get a status by index.
63
     *
64
     * @param  int  $index
65
     *
66
     * @return \Arcanedev\LaravelBackup\Entities\BackupDestinationStatus|null
67
     */
68
    public function getStatus($index): ?BackupDestinationStatus
69
    {
70
        return $this->statuses()->get($index);
71
    }
72
73
    /**
74
     * Run the backups.
75
     *
76
     * @param  string|null  $disk
77
     *
78
     * @return bool
79
     */
80
    public function runBackups($disk = null): bool
81
    {
82
        $options = [
83
            'filename'              => null,
84
            'only-db'               => false,
85
            'db-name'               => [],
86
            'only-files'            => false,
87
            'only-to-disk'          => $disk,
88
            'disable-notifications' => false,
89
        ];
90
91
        try {
92
            $this->backupAction->execute($options);
93
94
            return true;
95
        }
96
        catch (\Exception $ex) {
97
            return false;
98
        }
99
    }
100
101
    /**
102
     * Clean the backups.
103
     *
104
     * @return bool
105
     */
106
    public function clearBackups(): bool
107
    {
108
        try {
109
            $this->cleanAction->execute([
110
                //
111
            ]);
112
113
            return true;
114
        }
115
        catch (\Exception $ex) {
116
            return false;
117
        }
118
    }
119
}
120