Skip to content

Commit 757705c

Browse files
committed
add multiple driver support
1 parent fff1e5b commit 757705c

File tree

4 files changed

+43
-10
lines changed

4 files changed

+43
-10
lines changed

config/disk-monitor.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@
55
/**
66
* The name of the disk you want to monitor.
77
*/
8-
'disk_name' => 'local',
8+
'disk_names' => [
9+
'local',
10+
11+
],
912
];

src/Commands/RecordDiskMetricCommand.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,22 @@ public function handle(): int
1616
{
1717
$this->comment('Recording metrics...');
1818

19-
$disk_name = config('disk-monitor.disk_name');
20-
$file_count = count(Storage::disk($disk_name)->allFiles());
19+
collect($disk_names = config('disk-monitor.disk_names'))
20+
->each(fn(string $disk_name) => $this->recordMetrics($disk_name));
2121

22+
$this->comment('All done!');
23+
24+
return self::SUCCESS;
25+
}
26+
27+
protected function recordMetrics(string $disk_name):void
28+
{
29+
$this->info("Recording metrics for disk `{$disk_name}`...");
30+
$disk = Storage::disk($disk_name);
31+
$file_count = count($disk->allFiles());
2232
DiskMonitorEntry::create([
2333
'disk_name' => $disk_name,
2434
'file_count' => $file_count,
2535
]);
26-
27-
$this->comment('All done!');
28-
29-
return self::SUCCESS;
3036
}
3137
}

src/Models/DiskMonitorEntry.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
class DiskMonitorEntry extends Model
88
{
99
public $guarded = [];
10+
public $casts = [
11+
'file_count' => 'integer'
12+
];
1013

1114
public static function last(): ?self
1215
{

tests/Feature/Commands/RecordDiskMetricsCommandTest.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ public function setUp(): void
1414
parent::setUp();
1515

1616
Storage::fake('local');
17+
Storage::fake('external');
1718
}
1819

1920
/** @test */
20-
public function it_will_record_file_count_for_a_disk()
21+
public function it_will_record_file_count_for_a_single_disk()
2122
{
2223
// Storage::disk('local')->put('test.txt', 'test');
2324

@@ -26,16 +27,36 @@ public function it_will_record_file_count_for_a_disk()
2627
->assertExitCode(0);
2728

2829
$this->assertCount(1, DiskMonitorEntry::get());
29-
3030
$entry = DiskMonitorEntry::last();
31+
3132
$this->assertEquals(0, $entry->file_count);
3233

33-
Storage::put('test.txt', 'text');
34+
Storage::disk('local')->put('test.txt', 'text');
3435
$this
3536
->artisan(RecordDiskMetricCommand::class)
3637
->assertExitCode(0);
3738

3839
$entry = DiskMonitorEntry::last();
3940
$this->assertEquals(1, $entry->file_count);
4041
}
42+
43+
/** @test */
44+
public function it_will_record_file_count_for_multiple_disk()
45+
{
46+
config()->set('disk-monitor.disk_names', ['local', 'external']);
47+
Storage::disk('external')->put('test.txt', 'test');
48+
49+
$this
50+
->artisan(RecordDiskMetricCommand::class)
51+
->assertExitCode(0);
52+
53+
$entries = DiskMonitorEntry::get();
54+
$this->assertCount(2, $entries);
55+
56+
$this->assertEquals('local', $entries[0]->disk_name);
57+
$this->assertEquals(0, $entries[0]->file_count);
58+
59+
$this->assertEquals('external', $entries[1]->disk_name);
60+
$this->assertEquals(1, $entries[1]->file_count);
61+
}
4162
}

0 commit comments

Comments
 (0)