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

createForSingleMonitor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 11
rs 9.4285
cc 1
eloc 6
nc 1
nop 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