Skip to content

Commit d713beb

Browse files
committed
move widgets and refactor cache
1 parent 28f3b3e commit d713beb

File tree

8 files changed

+90
-23
lines changed

8 files changed

+90
-23
lines changed

src/Actions/Logs/Widgets/GetSentFailureStats.php renamed to src/Actions/Widgets/GetSentFailureStats.php

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
<?php
22

3-
namespace MailCarrier\Actions\Logs\Widgets;
3+
namespace MailCarrier\Actions\Widgets;
44

55
use Flowframe\Trend\Trend;
66
use Illuminate\Support\Carbon;
77
use Illuminate\Support\Collection;
8+
use Illuminate\Support\Facades\Cache;
89
use MailCarrier\Actions\Action;
9-
use MailCarrier\Concerns\InteractsWithCache;
1010
use MailCarrier\Dto\Dashboard\SentFailureChartDto;
1111
use MailCarrier\Enums\Dashboard\SentFailureChartFilter;
1212
use MailCarrier\Enums\LogStatus;
1313
use MailCarrier\Models\Log;
1414

1515
class GetSentFailureStats extends Action
1616
{
17-
use InteractsWithCache;
18-
1917
protected SentFailureChartFilter $filter;
2018

2119
/**
@@ -25,9 +23,22 @@ public function run(SentFailureChartFilter $filter): SentFailureChartDto
2523
{
2624
$this->filter = $filter;
2725

28-
return $this
29-
->withCacheArgs(func_get_args())
30-
->cachedUntil(Carbon::now()->addMinutes(30), $this->getData(...));
26+
return Cache::rememberForever(
27+
'dashboard:sent-failure.' . $filter->value,
28+
$this->getData(...)
29+
);
30+
}
31+
32+
/**
33+
* Flush the action cache.
34+
*/
35+
public static function flush(): void
36+
{
37+
foreach (SentFailureChartFilter::cases() as $filter) {
38+
Cache::forget(
39+
'dashboard:sent-failure.' . $filter->value,
40+
);
41+
}
3142
}
3243

3344
/**

src/Actions/Logs/Widgets/GetStatsOverview.php renamed to src/Actions/Widgets/GetStatsOverview.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
<?php
22

3-
namespace MailCarrier\Actions\Logs\Widgets;
3+
namespace MailCarrier\Actions\Widgets;
44

55
use Flowframe\Trend\Trend;
66
use Illuminate\Support\Carbon;
7+
use Illuminate\Support\Facades\Cache;
78
use MailCarrier\Actions\Action;
8-
use MailCarrier\Concerns\InteractsWithCache;
99
use MailCarrier\Dto\Dashboard\StatsOverviewDto;
1010
use MailCarrier\Enums\LogStatus;
1111
use MailCarrier\Models\Log;
1212

1313
class GetStatsOverview extends Action
1414
{
15-
use InteractsWithCache;
16-
1715
/**
1816
* Generate a unique slug from the given name.
1917
*/
2018
public function run(): StatsOverviewDto
2119
{
22-
return $this->cachedUntil(Carbon::now()->addMinutes(30), $this->getData(...));
20+
return Cache::rememberForever('dashboard:overview', $this->getData(...));
21+
}
22+
23+
/**
24+
* Flush the action cache.
25+
*/
26+
public static function flush(): void
27+
{
28+
Cache::forget('dashboard:overview');
2329
}
2430

2531
/**

src/Actions/Logs/Widgets/GetTopTriggers.php renamed to src/Actions/Widgets/GetTopTriggers.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
<?php
22

3-
namespace MailCarrier\Actions\Logs\Widgets;
3+
namespace MailCarrier\Actions\Widgets;
44

5-
use Illuminate\Support\Carbon;
65
use Illuminate\Support\Collection;
6+
use Illuminate\Support\Facades\Cache;
77
use Illuminate\Support\Facades\DB;
88
use MailCarrier\Actions\Action;
9-
use MailCarrier\Concerns\InteractsWithCache;
109
use MailCarrier\Models\Log;
1110

1211
class GetTopTriggers extends Action
1312
{
14-
use InteractsWithCache;
15-
1613
/**
1714
* Generate a unique slug from the given name.
1815
*/
1916
public function run(): Collection
2017
{
21-
return $this
22-
->withCacheArgs(func_get_args())
23-
->cachedUntil(Carbon::now()->addMinutes(30), $this->getData(...));
18+
return Cache::rememberForever('dashboard:top-triggers', $this->getData(...));
19+
}
20+
21+
/**
22+
* Flush the action cache.
23+
*/
24+
public static function flush(): void
25+
{
26+
Cache::forget('dashboard:top-triggers');
2427
}
2528

2629
/**

src/MailCarrierServiceProvider.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
use MailCarrier\Facades\MailCarrier;
1616
use MailCarrier\Helpers\SocialiteProviders;
1717
use MailCarrier\Models\Layout;
18+
use MailCarrier\Models\Log;
1819
use MailCarrier\Models\Template;
1920
use MailCarrier\Observers\LayoutObserver;
21+
use MailCarrier\Observers\LogObserver;
2022
use MailCarrier\Observers\TemplateObserver;
2123
use MailCarrier\Resources\LayoutResource;
2224
use MailCarrier\Resources\LogResource;
@@ -109,6 +111,7 @@ public function packageBooted(): void
109111

110112
Template::observe(TemplateObserver::class);
111113
Layout::observe(LayoutObserver::class);
114+
Log::observe(LogObserver::class);
112115

113116
// Register Social Auth event listener
114117
$this->listenSocialiteEvents();

src/Observers/LogObserver.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
namespace MailCarrier\Observers;
4+
5+
use MailCarrier\Actions\Widgets\GetSentFailureStats;
6+
use MailCarrier\Actions\Widgets\GetStatsOverview;
7+
use MailCarrier\Actions\Widgets\GetTopTriggers;
8+
9+
class LogObserver
10+
{
11+
/**
12+
* Handle the Log "created" event.
13+
*/
14+
public function created(): void
15+
{
16+
$this->flushCache();
17+
}
18+
19+
/**
20+
* Handle the Log "updated" event.
21+
*/
22+
public function updated(): void
23+
{
24+
$this->flushCache();
25+
}
26+
27+
/**
28+
* Handle the Log "deleted" event.
29+
*/
30+
public function deleted(): void
31+
{
32+
$this->flushCache();
33+
}
34+
35+
/**
36+
* Clear the dashboard cache.
37+
*/
38+
protected function flushCache(): void
39+
{
40+
GetSentFailureStats::flush();
41+
GetStatsOverview::flush();
42+
GetTopTriggers::flush();
43+
}
44+
}

src/Widgets/SentFailureChartWidget.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Carbon\Carbon;
66
use Filament\Widgets\LineChartWidget;
7-
use MailCarrier\Actions\Logs\Widgets\GetSentFailureStats;
7+
use MailCarrier\Actions\Widgets\GetSentFailureStats;
88
use MailCarrier\Enums\Dashboard\SentFailureChartFilter;
99

1010
class SentFailureChartWidget extends LineChartWidget

src/Widgets/StatsOverviewWidget.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
66
use Filament\Widgets\StatsOverviewWidget\Card;
7-
use MailCarrier\Actions\Logs\Widgets\GetStatsOverview;
7+
use MailCarrier\Actions\Widgets\GetStatsOverview;
88

99
class StatsOverviewWidget extends BaseWidget
1010
{

src/Widgets/TopTriggersWidget.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace MailCarrier\Widgets;
44

55
use Filament\Widgets\Widget;
6-
use MailCarrier\Actions\Logs\Widgets\GetTopTriggers;
6+
use MailCarrier\Actions\Widgets\GetTopTriggers;
77

88
class TopTriggersWidget extends Widget
99
{

0 commit comments

Comments
 (0)