Completed
Pull Request — master (#789)
by
unknown
02:03
created

BackupDestinationStatusFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 34
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createForMonitorConfig() 0 8 1
A createForSingleMonitor() 0 10 1
A buildInspections() 0 11 2
1
<?php
2
3
namespace Spatie\Backup\Tasks\Monitor;
4
5
use Illuminate\Support\Collection;
6
use Spatie\Backup\BackupDestination\BackupDestination;
7
8
class BackupDestinationStatusFactory
9
{
10
    public static function createForMonitorConfig(array $monitorConfiguration): Collection
11
    {
12
        return collect($monitorConfiguration)->flatMap(function (array $monitorProperties) {
13
            return BackupDestinationStatusFactory::createForSingleMonitor($monitorProperties);
14
        })->sortBy(function (BackupDestinationStatus $backupDestinationStatus) {
15
            return "{$backupDestinationStatus->backupName()}-{$backupDestinationStatus->diskName()}";
16
        });
17
    }
18
19
    public static function createForSingleMonitor(array $monitorConfig): Collection
20
    {
21
        return collect($monitorConfig['disks'])->map(function ($diskName) use ($monitorConfig) {
22
            $backupDestination = BackupDestination::create($diskName, $monitorConfig['name']);
23
24
            return (new BackupDestinationStatus($backupDestination, $diskName, static::buildInspections($monitorConfig)))
25
                ->setMaximumAgeOfNewestBackupInDays($monitorConfig['newestBackupsShouldNotBeOlderThanDays'])
26
                ->setMaximumStorageUsageInMegabytes($monitorConfig['storageUsedMayNotBeHigherThanMegabytes']);
27
        });
28
    }
29
30
    protected static function buildInspections($monitorConfig)
31
    {
32
        return collect(array_get($monitorConfig, 'inspections'))->map(function ($options, $inspection) {
33
            if (is_integer($inspection)) {
34
                $inspection = $options;
35
                $options = [];
36
            }
37
38
            return app()->makeWith($inspection, $options);
39
        })->toArray();
40
    }
41
}
42