Completed
Push — master ( f62f21...f72c97 )
by Freek
05:09
created

BackupDestinationStatusFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 2
c 1
b 0
f 1
lcom 0
cbo 3
dl 0
loc 36
rs 10

2 Methods

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