Skip to content

Commit 0c8f0f9

Browse files
committed
add resources file, routes and tests
1 parent 757705c commit 0c8f0f9

File tree

10 files changed

+72
-6
lines changed

10 files changed

+72
-6
lines changed

config/disk-monitor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
*/
88
'disk_names' => [
99
'local',
10-
10+
1111
],
1212
];

database/migrations/create_disk_monitor_tables.php.stub

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ return new class extends Migration
99
public function up()
1010
{
1111
Schema::create('disk_monitor_entries', function (Blueprint $table) {
12-
$table->id();
12+
$table->bigIncrements('id');
1313

1414
$table->string('disk_name');
1515
$table->integer('file_count');

resources/views/.gitkeep

Whitespace-only changes.

resources/views/entries.blade.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<h1>Disk Metrics</h1>
2+
3+
<table>
4+
<thead>
5+
<tr>
6+
<th>Disk Name</th>
7+
<th>File Count</th>
8+
<th>Recorded At</th>
9+
<tr/>
10+
</thead>
11+
<tbody>
12+
@foreach($entries as $entry)
13+
<tr>
14+
<td>{{ $entry->disk_name }}</td>
15+
<td>{{ $entry->file_count }}</td>
16+
<td>{{ $entry->created_at->format('Y-m-d H:i:s') }}</td>
17+
</tr>
18+
@endforeach
19+
</tbody>
20+
</table>

src/Commands/RecordDiskMetricCommand.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ public function handle(): int
1717
$this->comment('Recording metrics...');
1818

1919
collect($disk_names = config('disk-monitor.disk_names'))
20-
->each(fn(string $disk_name) => $this->recordMetrics($disk_name));
20+
->each(fn (string $disk_name) => $this->recordMetrics($disk_name));
2121

2222
$this->comment('All done!');
2323

2424
return self::SUCCESS;
2525
}
2626

27-
protected function recordMetrics(string $disk_name):void
27+
protected function recordMetrics(string $disk_name): void
2828
{
2929
$this->info("Recording metrics for disk `{$disk_name}`...");
3030
$disk = Storage::disk($disk_name);

src/DiskMonitorServiceProvider.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace Imaarov\DiskMonitor;
44

5+
use Illuminate\Support\Facades\Route;
56
use Imaarov\DiskMonitor\Commands\RecordDiskMetricCommand;
7+
use Imaarov\DiskMonitor\Http\Controllers\DiskMetricsController;
68
use Spatie\LaravelPackageTools\Package;
79
use Spatie\LaravelPackageTools\PackageServiceProvider;
810

@@ -19,7 +21,16 @@ public function configurePackage(Package $package): void
1921
->name('laravel-disk-monitor')
2022
->hasConfigFile()
2123
->hasViews()
22-
->hasMigration('create_disk-monitor_table')
24+
->hasMigration('create_disk-monitor_tables')
2325
->hasCommand(RecordDiskMetricCommand::class);
2426
}
27+
28+
public function packageRegistered()
29+
{
30+
Route::macro('diskMonitor', function (string $prefix) {
31+
Route::prefix($prefix)->group(function () {
32+
Route::get('/', '\\'.DiskMetricsController::class);
33+
});
34+
});
35+
}
2536
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Imaarov\DiskMonitor\Http\Controllers;
4+
5+
use Imaarov\DiskMonitor\Models\DiskMonitorEntry;
6+
7+
class DiskMetricsController
8+
{
9+
public function __invoke()
10+
{
11+
$entries = DiskMonitorEntry::latest()->get();
12+
13+
return view('disk-monitor::entries', compact('entries'));
14+
}
15+
}

src/Models/DiskMonitorEntry.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
class DiskMonitorEntry extends Model
88
{
99
public $guarded = [];
10+
1011
public $casts = [
11-
'file_count' => 'integer'
12+
'file_count' => 'integer',
1213
];
1314

1415
public static function last(): ?self
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Imaarov\DiskMonitor\Tests\Feature\Http\Controllers;
4+
5+
use Imaarov\DiskMonitor\Tests\TestCase;
6+
7+
class DiskMetricsControllerTest extends TestCase
8+
{
9+
/** @test */
10+
public function it_can_display_the_list_of_entries()
11+
{
12+
$this
13+
->get('disk-monitor')
14+
->assertOk();
15+
}
16+
}

tests/TestCase.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Imaarov\DiskMonitor\Tests;
44

55
use Illuminate\Database\Eloquent\Factories\Factory;
6+
use Illuminate\Support\Facades\Route;
67
use Imaarov\DiskMonitor\DiskMonitorServiceProvider;
78
use Orchestra\Testbench\TestCase as Orchestra;
89

@@ -15,6 +16,8 @@ protected function setUp(): void
1516
Factory::guessFactoryNamesUsing(
1617
fn (string $modelName) => 'Imaarov\\DiskMonitor\\Database\\Factories\\'.class_basename($modelName).'Factory'
1718
);
19+
20+
Route::diskMonitor('disk-monitor');
1821
}
1922

2023
protected function getPackageProviders($app)

0 commit comments

Comments
 (0)